更新日:2019/10/06
目的
現状
CodePipelineの設定画面で、Githubを選択した場合、ブランチ選択が必須になっている
ゴール
Master以外のいずれのブランチにPushされてもCodePipelineが発火し、デプロイされてほしい
なぜやりたいか?
- 他のCIツールでは複数ブランチからの発火ができている。
- 同じことやりたい
AWS CodePipelineの仕様
複数ブランチの選択
スタックオーバーフロー
AWS CodePipelineで複数ブランチのTrackingしたい
以下のスタックオーバーフローで質問あり
Can AWS CodePipeline track multiple feature branches and run tests on each? - Stack Overflow
提案された解決法は以下
-
- AWS Lambdaを使用して動的にパイプラインを作成(複製)する。
-
- 外部CIを使ってCodePipelineに反映
※2019年現在もAWSには複数ブランチ対応はされていない
1. 動的にパイプラインを作成
残念ながら、CodePipelineの複数のブランチからビルドをトリガーすることはできません。
私が使用した他のすべてのCIツールがすぐにこの機能を提供するため(GitLabCI、TravisCI、CircleCI、Bitbucket Pipelines、TeamCity)少し驚きです。
以下を参考にPushのたびに動的にパイプラインを作成する方法
2. 外部CIを使う
仕様について
Serverless CI/CD for the enterprise on AWS
aws-quickstart/quickstart-trek10-serverless-enterprise-cicd: AWS Quick Start Team
情報
GitHub/CodeBuild/CodePipelineを利用してCloudFormationのCI/CDパイプラインを構築する | DevelopersIO
CodePipelineの場合、GitHubをアクションに指定すると1ブランチ1パイプラインで設定するようです
cloud formation
AWS CodePipelineをCloudFormationで構築してみた | DevelopersIO
設定にBranchは必須のようである
Branch:
Type: String
Description: GitHub Branch
match
AWS::CodePipeline::Webhook WebhookFilterRule - AWS CloudFormation
ここで指定した値が「refs/heads/{Branch}」であり、ターゲットアクションのアクション設定プロパティが「Branch」という名前で値が「master」である場合、MatchEquals 値は「refs/heads/master」として評価されます。
AWS 仕様
CodePipeline パイプライン構造のリファレンス - CodePipeline
GitHub > Branch > 必須