私が歌川です

@utgwkk が書いている

GitHub Actionsで「matrixの全テストが通らないとマージできないようにする」設定を簡単に行う方法

GitHub Actionsで、複数環境でテストしたいのでmatrixに分けて、branch protectionの設定で全環境のテストが通ったらmasterにマージ可能にしましょう、というのをやろうとするとちょっと面倒です。

  • matrixの数だけ必要なstatus checkに含めないといけない
  • jobの名前を変えたときにrequired status checkの設定も追従させないといけない? (未確認)
    • 「なんか一生CI greenになりませんね」的なことになりそう
  • jobの名前を途中で変えたら選択肢がめちゃくちゃ出てくる

gyazo.com

全部のテストに通った、というのを1つのstatus checkで表現したいので、以下のようなjobを追加しました。

  • needs: test にして、 test jobが全てpassしないと作動しないようにする
    • 1つでもテストが落ちたらcancelされる
  • とりあえず正常終了させる
  post-test:
    name: All tests passed
    runs-on: ubuntu-latest
    needs: test
    steps:
      - run: echo ok

github.com

もっといい方法があるかもしれないけど、これでやりたいことはできました。これで必要なstatus checkの数を抑えることができます。