これは何?
デプロイを自動化しているが、それぞれのサービスが何をやっているのかいまいち理解できていなかったのでまとめてみた。
前提
Tips
基本知識
サービスごとの棲み分け
CodePipelineとは?
- AWSが提供するCI/CDを実現するサービス
CodePipelineでできること ソースリポジトリからビルド、テスト、デプロイまで、リリースプロセスの自動化。
CodeBuildとは?
今回やったこと
- 現状:codebuildに個人のgithubアカウントが紐づいていた
- 問題:アカウントが閲覧権限を持つリポジトリが見えてしまう
対応:codepipeline のソースにgithubのソースリポジトリを指定し、codebuildのソースプロバイダにcodepipelineを紐づけることで上記の問題を避ける
Codepipeline経由で、CodeBuildを作成しなおす すでに作成済みのCodeBuildのsource providerをCodePipline に変更することはできない。一度CodeBuildを削除してCodePipline経由で作り直さないといけないという仕様らしい
- 既存のCodeBuildを削除 1.該当のパイプラインの詳細>編集する
- Build-and-Deployの「ステージを編集する」
- プロジェクト名から「プロジェクトを作成する」
- 既存のCodeBuildと同様の設定を行う(環境変数とか漏れると面倒なので注意)
- Sourceの「ステージを編集する」(GitHubのアクションプロバイダーがversion1だったため)
- アクションプロバイダーで「GitHub(バージョン2)」を選択
- 左ペインの設定から「接続を選択」
- (今回は事前に作成されていたため手順割愛。以下の記事が参考になりそう。本来ならここで接続設定を行い、対象のGitHubリポジトリと接続する必要がある) Terraform を使って GitHub v2 ソースアクションでコードを取得する CodePipeline を構築する #AWS - Qiita
- 該当のパイプラインの左ペインの「設定」を選択(これがマジでわかりにくかった)
- 紐づいているサービスロールに[CodeStarConnections]を追加し、先ほど作成した接続のARNを設定する(その他必要なロールも適宜アタッチする)
例 { "Action": "codestar-connections:UseConnection", "Effect": "Allow", "Resource": "arn:aws:codestar-connections:ap-northeast-1:359601428599:connection/de7f946f-fcbe-47de-8117-0c4e3055d0ba", "Sid": "" }
- 新規作成したCodeBuildのロールにも[CodeStarConnections]を追加する
- CodeBuilgのソースプロバイダがAWS CodePipelineになっていることを確認
- 適当にpushして正常に動作すれば完了
参考
https://media.amazonwebservices.com/jp/summit2015/docs/TA-05-Tokyo-Summit-2015.pdf
今後調べること
- CodeDeployをなぜ使っていないのか?