CircleCIからAWS Code Deployを実行する
投稿日:
前記事にてCodeDeployの設定は完了したので、それをCircleCIから実行します。
公式の手順ではS3に一度ソースコードを置いてからEC2に展開しているのですが、
できればS3は使いたくなかったのでこちらの記事を参考にしました。
CircleCI+AWS-CodedeployでStaging環境などに自動デプロイさせる
IAM準備
CircleCI用のIAMユーザーを作成します。
まず適当なユーザー名をつけ、アクセスの種類は『プログラムによるアクセス』にチェックをつけ次のステップへ進みます。
既存ポリシーの『AWSCodeDeployFullAccess』を付与して次のステップへ進みます。
タグは不要なので、そのまま次のステップに進んで大丈夫です。
ユーザーの作成をします。
作成したユーザーの「アクセスキーID」と「シークレットアクセスキー」をメモして終了です。
※シークレットアクセスキーはこのタイミングでしか確認できないので忘れないよう注意
CircleCIの設定ファイル作成
リポジトリ内に.circleci/config.yml
を作成し、以下のように記載します。
version: 2
jobs:
deploy:
docker:
- image: cdssnc/aws-cli
steps:
- run:
name: "Set AWS region"
command: aws configure set region ap-northeast-1
- run:
name: "Run AWS CodeDeploy"
command: aws deploy create-deployment --application-name ${DEPLOY_APPLICATION} --deployment-group-name ${DEPLOY_GROUP} --github-location repository="${DEPLOY_REPOSITORY}",commitId="${CIRCLE_SHA1}"
workflows:
version: 2
build_deploy:
jobs:
- deploy:
filters:
branches:
only: master
AWS CodeDeployをキックすることしか記載していないので、他にも処理が必要な場合は追記してください。
なお、以下の値は後ほどCircleCIの環境変数にて設定するので変数にしています。
変数にせずに直接config.yml
に書き込んでも良いです。
変数名 | 内容 |
---|---|
DEPLOY_APPLICATION | 前記事にて設定したCodeDeployのアプリケーション名 |
DEPLOY_GROUP | 前記事にて設定したCodeDeployのデプロイグループ |
DEPLOY_REPOSITORY | デプロイ対象のGitHubリポジトリ(「ユーザー名/リポジトリ名」形式) |
作成できたらGitHubのmasterブランチにプッシュしておきます。
CircleCIの設定
まずCircleCIにさきほどのconfig.ymlに設定した環境変数を設定します。
CircleCIの基本的な設定はこちらを参照してください。
次に作成したAWSのIAMユーザーのキーを設定します。
CircleCIのプロジェクトの設定画面を開き(プロジェクト画面で歯車ボタンをクリック)
『PERMISSIONS > AWS Permissions』を開くと設定できます。
これで設定は完了です。
masterブランチにマージorプッシュされるとCircleCIとCodeDeployが走って自動デプロイされます。