CodeCommitサービス提供終了に伴う弊害
従来、CodeCommitを介してCodePipeを利用しているケースが多い中、CodeCommitが新規アカウントでの利用ができなりました。
3rdパーティのリポジトリを利用したCodePipelineの導入に関する情報が少ないため、簡易的な導入方法を提示します。(GitHub Actionを利用したケースについて、ここでは触れません。)
また、CodePipelineテンプレート機能が新しく追加されておりますので、こちらの機能を利用してみたいと思います。
1.CodePipelineで利用できるバージョン管理システムについて
現状、CodePipelineで利用っできる3rdパーティ製のバージョン管理システムについては、大きく以下3種類存在します。
A.GitHub
B.Bitbucket
C.GitLab
本件では、利用頻度の高いA.GitHubを題材にします。
2. 題材となる構成図
3. 手順の流れ
① 準備編(GitHubリポジトリの作成)
② 導入編(外部リポジトリの接続リソースの作成)
③ 構築編(CodePipelineの構築)
外部リポジトリとの連携部分にフォーカスしたいため、 GitHubアカウントがある前提とさせていただきます。
4. 準備編(GitHubリポジトリの作成)
セキュリティ面を意識して、プライベートリポジトリの作成します。
GitHubのページから順次、必要設定を実施していきます。
ローカル環境に上記で作成したGitリポジトリを展開し、簡単なCloudFormationテンプレートを作成します。
先ほどメモしたGitリポジトリのURLを使用してGitクローンします。
$ git clone https://github.com/ueno120525/cicdrepo.git
CodePipelineのデプロイステージで使用するCloudFormationテンプレートになります。
(一番簡単な内容にしております。)
AWSTemplateFormatVersion: "2010-09-09"
Resources:
S3Bucket:
Type: 'AWS::S3::Bucket'
Properties:
AccessControl: Private
BucketName: githubcon-test-202412230900
作成したCloudFormationテンプレートをリモートのGitリポジトリにPushまで一気に実施します。
$ git add template_cfn.yaml
$ git commit -m "サンプルテンプレートの登録"
$ git push origin main:main
5. 導入編(外部リポジトリの接続リソースの作成)
ここからが、本題のメインとなります。
CodePipelineのマネージメントコンソールから、[設定] > [接続]から接続リソースを作成していきます。
作成イメージは、ChatbotでSlack連携となる設定を作成するイメージと同じです。
GitHub側の認証画面が自動的に表示されますので、必要事項を入力して進めます。
AWS側からの接続要求に対する、接続承認を問われますので承認します。
マネージメントコンソール画面の状態が変わりますので、新しい接続アプリをインストールします。
接続アプリとは、GitHub側にAWS側へ接続するGitHub接続専用ユーザとなります。
GitHub側の画面自動的に表示されますので、対象リポジトリを選択してインストールします。(ここでは全てのリポジトリを指定)
直前でインストールしたアプリの識別情報が自動入力されますので、その状態で接続します。
ここまでの手順を実施して、GitHubで「GitHub Apps」に「AWS Connector for GitHub」が作成されていることを確認します。
導入編として以上となります。
6. 構築編(CodePipelineの構築)
ここからは、導入したGitHubConnectionを利用して、CodePipelineを作成していきます。
導入編で作成したGitHubConnectionがCodeCommitの代わりとして、作成していく感じとなります。
本編では、最近リリースされたCodePipelineテンプレートを利用して、必要最低限の入力でデプロイしてみたいと思います。
7. おまけ
CodePipelineで構築する場合、最終ページで「Preview」エリアを開くことで
利用されているCodePipelineテンプレートの中身を確認することができます。
テンプレートを自作する場合など参考できます。
まとめ
3rdパーティのバージョン管理と連携する「接続リソースを」作成することで、CodePipelineに簡単に取り組むことができるます。
CodePipelineテンプレートが新しく利用できるようになったため、少量の入力値でCodePipelineが構築できます。