⚙️
CircleCI が完了したら GitHub Actions を動かす
これは GitHub Actions Advent Calendar 2021 の 17 日目の記事です。
概要
CI に CircleCI を、 CD に GitHub Actions を使うプロジェクトで、 CircleCI のワークフローが完了したら GitHub Actions のワークフローが実行される仕組みを構築します。
GitHub Checks を有効化することで CircleCI のワークフロー完了時に check_suite (completed)
イベントを発生させ、そのイベントから後続となる GitHub Actions のワークフローをトリガーするという流れです。
既に CircleCI と GitHub Actions のワークフローが設定されているリポジトリの場合、次の 2 つの設定でこの仕組みを導入することができます。
- CircleCI のために GitHub Checks を有効化
- GitHub Actions のトリガーに
check_suite
を設定
CircleCI のために GitHub Checks を有効化
GitHub Checks を有効にするため CircleCI Checks という GitHub App をインストールします。詳しい手順は CircleCI の公式ドキュメントに書かれています。
check_suite
を設定
GitHub Actions のトリガーに GitHub Actions のワークフローに check_suite
を設定します。
on:
check_suite:
types: [completed]
特定のブランチでのみ動作させる
上記の設定ではすべてのブランチで GitHub Actions がトリガーされます。特定のブランチでのみ動作させたい場合は、先頭のジョブでブランチの判定を行います。
jobs:
foo:
if: github.ref == 'refs/heads/main'
この場合、ブランチが main
であれば後続の処理が行われ、そうでない場合はジョブがスキップされます。
GitHub Actions で扱えるコンテキストや使える式に空いては GitHub のドキュメントを参照するといいでしょう。
Discussion