👋

はじめてのCircle CI その2:GitHub ブランチ名によるPipeline実行制御

に公開

こちらの記事、はじめてのCircleCIとしてAWS Lambda関数をデプロイしました。
https://zenn.dev/kameoncloud/articles/641dbdd496a59d
トリガーはGitHubのイベントとなっており、この状態だとすべての変更によりデプロイが走ってしまうため、ちょっとしたテストや修正などでもパイプラインが起動しワークフローが実行されてしまいます。

このためmainブランチでの作業ではパイプラインの起動をバイパスし、prodブランチのみパイプラインが起動しワークフローを実行させるようにします。

さっそくやってみる

まずは
CircleCIのProject画面、右上からSettingsをクリックします。

左ペインでTriggersをクリックし、鉛筆マークで設定変更画面へ移動します。

Run onのドロップダウンリストでパイプラインの起動条件を指定できます。

特定ブランチへのコミットやプッシュなどを実行条件としたいがタグを普段使っていないため制御条件として使えない、といったケースではワークフローの実行を制御するconfig.ymlの記載で制御が可能です。
一度ここの設定はAll pushesのままとしておきます。

前回用いたconfig.ymlを以下の様に変更します。

修正前
workflows:
  version: 2
  deploy:
    jobs:
      - deploy_lambda:
          context:
            - aws-credentials
修正後
workflows:
  version: 2
  deploy:
    jobs:
      - deploy_lambda:
          context:
            - aws-credentials
          filters:
            branches:
              only:
                - /prod*/

一度このままmainにコミットすると以下の様になります。
PipelineがGitHubからイベントを受け取っているものの、ワークフローを起動していません。

この設定変更でprodブランチへのコミットのみワークフローが起動します。
では次にprodブランチへコミットを行います。


このようにmainへのコミットではワークフローが起動せずprodブランチのみワークフローを起動させることができます。

Discussion