Edited at

CircleCI+AWS-CodedeployでStaging環境などに自動デプロイさせる

More than 1 year has passed since last update.


やりたいこと

CircleCI+AWS-CodedeployでStaging環境などに自動デプロイさせたい。


AWS-Codedeploy

AWS-Codedeployは現在、以下の2つの方法でデプロイができます。


  • S3に上げたソースコードを展開

  • Github上のソースのcommitハッシュを指定して展開

CircleCIでAWS-Codedeployというと大抵の場合はS3方式を利用しています。

ちなみに本家のdocもそうなってます。他のqiita記事もたいていは。

https://circleci.com/docs/1.0/continuous-deployment-with-aws-codedeploy/

ここではS3に固めて上げる冗長な作業は抜きでGithub+コミット番号から直接デプロイする方法で行います。


AWS-Codedeployにて(ConsoleUIとか)


  1. デプロイ対象のサーバにcodedeploy-agentをインストールしておく。

  2. アプリケーションを作成する(割愛)。


  3. appspec.ymlでデプロイコマンドなどを用意する(割愛)。

  4. 一度、デプロイメントを作成して、Github経由で更新が出来ることを確認しておく。

    ※説明の便宜上、アプリケーションネームをappA-name、デプロイグループをappA-deploy-groupとします。


e.g.

aws deploy create-deployment --application-name appA-name --deployment-group-name appA-deploy-group --github-location repository="your/repository",commitId="0a684afc0c38e97f35023e404cff543d825f43b4"


CLIがだめだったらWebUI上でデプロイメントを作成して試す。


CircleCIにて


  1. AWS IAMロールを作成する。(Codedeployのポリシーつける)

  2. デプロイするユーザに紐付ける。


  3. aws_access_key_idaws_secret_access_keyを発行する。

  4. CircleCIのWebUIで設定する。画像参照。
    Project settingsCircleCI.png

FYI: https://circleci.com/docs/1.0/continuous-deployment-with-aws-codedeploy/


config.yml の作成

あとは .circleci/config.yml からaws-cliコマンド叩けばOK。

version: 2

jobs:
build:
〜省略〜
deploy:
docker:
- image: cdssnc/aws-cli
steps:
- run:
name: "Set AWS region"
command: aws configure set region ap-northeast-1
- run:
name: "Deploy Staging"
command: aws deploy create-deployment --application-name appA-name --deployment-group-name appA-deploy-group --github-location repository="your/repository",commitId="$CIRCLE_SHA1"
workflows:
version: 2
build_deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: master

※ regionはセットしないとエラーになるので、必須です。

これでmasterブランチに何かがマージされた場合、

circleCIからAWS-Codedeployが実行されてStagingなどが自動で更新されます。

AWS-Codedeployだけあれば、踏み台サーバも要らないのでセキュリティ的にも安全なのでオススメです。

おしまい。