⚙️

CircleCI が完了したら GitHub Actions を動かす

2021/12/23に公開

これは 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 つの設定でこの仕組みを導入することができます。

  1. CircleCI のために GitHub Checks を有効化
  2. GitHub Actions のトリガーに check_suite を設定

CircleCI のために GitHub Checks を有効化

GitHub Checks を有効にするため CircleCI Checks という GitHub App をインストールします。詳しい手順は CircleCI の公式ドキュメントに書かれています。

GitHub Actions のトリガーに check_suite を設定

GitHub Actions のワークフローに check_suite を設定します。

on:
  check_suite:
    types: [completed]

特定のブランチでのみ動作させる

上記の設定ではすべてのブランチで GitHub Actions がトリガーされます。特定のブランチでのみ動作させたい場合は、先頭のジョブでブランチの判定を行います。

jobs:
  foo:
    if: github.ref == 'refs/heads/main'

この場合、ブランチが main であれば後続の処理が行われ、そうでない場合はジョブがスキップされます。

GitHub Actions で扱えるコンテキストや使える式に空いては GitHub のドキュメントを参照するといいでしょう。

Discussion