💆♂️
githubActionで特定の命名規則を持ったブランチを無視する
dependabotのbranchのPRで無駄にCIが回っちゃう
dependabotで自動でプルリクエストを発生するように設定した際です。他のPRと同様CIが回っていたのですが、chromaticのテストがsecretsが読み込めないため落ちていました。
なので応急処置として、その該当部分のテストだけスキップさせようとしました。
つまり、develop←nomal_branch
はCIして、develop←debendabot_branch
はchromaticのテストをしないみたいな想定です。あまりいい方法ではないですが、「とりあえず」って感じです。
考えられる解決策
branches-ignore
githubのワークフロー構文において、branches-ignore
という記法があります。
on:
push:
# refs/heads にマッチするパターンのシーケンス
branches-ignore:
# refs/heads/mona/octocat にマッチするブランチにイベントをプッシュする
- 'mona/octocat'
# refs/heads/releases/beta/3-alpha refs/heads/mona/octocat にマッチするブランチにイベントをプッシュする
- 'releases/**-alpha'
# refs/heads にマッチするパターンのシーケンス
tags-ignore:
- v1.* # イベントを v1.0、v1.1、v1.9 タグにプッシュする
上記記法でpushをpull_requestに変更したら、merge先が対象になるので、指定できません。
ifで関数使って条件分岐
実際に対応したのは以下の書き方です。
jobs:
test:
runs-on: ubuntu-latest
if: ${{ contains(github.head_ref, 'dependabot') == false }}
steps:
文字列が含まれていなければ、trueを返すようにif部分に記載するのがいいでしょう。こうすることでfalseの場合はstepsが実行されません。
改めてになりますが、応急処置なのでテストをスキップさせるのは良くないです。とはいうものの似たケースはある気がするので、その際はif:
の部分で制御してみましょう。
しかし、自分自身dependabotのPRでUIのテストまでやるべきなのかがあまりわかっていないので、有識者のかた教えていただければ幸いです。
参考にしたサイト
Discussion