近年のアプリケーション開発では、ビルド/デプロイやテストの工数を削減するために、各種ツールを活用した開発の自動化が進められています。特にクラウド型のCI/CDサービス「CircleCI」は、Github、Bitbucket、gitLabと簡単に連携できるなどのメリットから、多くの企業が導入しているツールです。
そこで本記事では、CircleCIから複数のAWSアカウントへCD(デプロイ)をおこなう方法を解説します。現在CircleCIを使用している方は、ぜひご覧ください。
▼CI/CDについては下記記事で詳しく解説しています CI/CDとは何かを解説!具体的な各ツールの詳細な比較も
1. Contextsの設定
CircleCIにログインし、「Organization settings」をクリックします。
「Contexts」をクリックします。
「Create Context」をクリックします。
任意のContext Nameを入力し、「Create Context」をクリックします。こちらは後でCircleCiのconfig.ymlに設定する値となるので、「わかりやすい」かつ「ユニーク」になる名前を設定してください。
Contextsの一覧に作成されたContext Nameが表示されるので、さきほど入力したContext Nameをクリックします。
「Add Environment Variable」をクリックします。
「Environment Variable Name」および「Value」には、以下の表に記載されている値をそれぞれ入力してください。
Environment Variable Name | Value |
---|---|
AWS_ACCOUNT_ID | AWSアカウントID |
AWS_ACCESS_KEY_ID | AWSアクセス用キーID |
AWS_SECRET_ACCESS_KEY | AWSアクセス用シークレットキー |
AWS_DEFAULT_REGION | ap-northeast-1 |
2. config.ymlの編集
1.Contextsの設定で作成したContext NameをAWSに関連するJobsの配下にContextとして記述します。
以下はdevelopブランチにマージされたときはdevelop環境へデプロイし、Stagingブランチにマージされた時はstaging環境へデプロイする例です。
以下のコードを参考に適宜環境に合わせてください。
config.yml
orkflows:
deploy:
jobs:
- lint_and_test
- deploy:
# develop環境のcontextを読み込む
context: deploy_develop
name: deploy_dev
requires:
- lint_and_test
filters:
branches:
# developブランチにマージされた時のみ起動
only: develop
- aws-ecs/deploy-service-update:
# develop環境のcontextを読み込む
context: deploy_develop
name: deploy_service_update_dev
requires:
- deploy_dev
- deploy_verify:
# develop環境のcontextを読み込む
context: deploy_develop
name: deploy_verify_dev
requires:
- deploy_service_update_dev
- deploy:
# staging環境のcontextを読み込む
context: deploy_staging
name: deploy_stg
requires:
- lint_and_test
filters:
branches:
# stagingブランチにマージされた時のみ起動
only: staging
- aws-ecs/deploy-service-update:
# staging環境のcontextを読み込む
context: deploy_staging
name: deploy_service_update_stg
requires:
- deploy_stg
- deploy_verify:
# staging環境のcontextを読み込む
context: deploy_staging
name: deploy_verify_stg
requires:
- deploy_service_update_stg
さいごに
CircleCIから複数のAWSアカウントへCD(デプロイ)をおこなう方法について解説しました。
CircleCIは使い方しだいで開発効率に大きなインパクトをもたらします。本記事が活用のためのお役に立てれば幸いです。