17
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-03-14

やりたいこと

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だけあれば、踏み台サーバも要らないのでセキュリティ的にも安全なのでオススメです。

おしまい。

17
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?