1. yamotuki

    No comment

    yamotuki
Changes in body
Source | HTML | Preview
@@ -1,69 +1,72 @@
-CircleCI Workflow ではテストを通した後に待たせておいて、任意のタイミングでワンクリックでデプロイするという 方法をとることができます。
-この記事では特に、AWS ElasticBeanstalk の複数の環境に一気通貫で同じバージョンのアプリケーションをデプロイする方法について書きます。
-具体的用途としては、WebアプリケーションとWorker環境の二つに同じコードがある必要がある場合に両方に同じコードをデプロイしておきたいというような形を想定しています。
+### 概要
+CircleCI Workflow ではテストを通した後に待たせておいて、任意のタイミングでワンクリックでデプロイするという方法をとることができます。
+この記事では特に、AWS ElasticBeanstalk の複数の環境に同じバージョンのアプリケーションをデプロイする方法について書きます。
+具体的用途としては、WebアプリケーションとWorker環境の両方に同じコードをデプロイしておきたいというような形を想定しています。
+### 完成イメージ
こちらはCircleCI Workflow 実行時の画面イメージです。
![貼り付けた画像_2019_11_22_12_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144064/c115a12e-1ea1-769a-c1c2-e4fcaf50910b.png)
テストが通った状態で止まっており、 require-testsのところがクリック可能になって、クリックするとデプロイが始まります(テスト終わった直後は一回リロードしないとクリック可能にならないのでそこだけ注意)
+### 設定の記述方法
`.circleci/config.yml` に CircleCI Workflow の設定を書くことができます。
前提となるセットアップについては省略し、公式ドキュメントなどにお任せします。
```.circleci/config.yml
version: 2
jobs:
test-js:
# ここは今回は省略
test-php:
# ここは今回は省略
deploy-to-dev:
docker:
- image: circleci/python:3.6.4
working_directory: ~/repo
steps:
- checkout
- run:
name: Install awscli
command: |
sudo pip install --upgrade pip
sudo pip install awsebcli --upgrade
- run:
name: Create AWS credentials manually
command: |
mkdir ~/.aws
touch ~/.aws/config
chmod 600 ~/.aws/config
echo "[profile eb-cli]" > ~/.aws/config
echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" >> ~/.aws/config
echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" >> ~/.aws/config
- run:
name: Deploying to dev app 1
command: eb deploy my-appliation-1 > /tmp/eb_deploy_output
- run:
name: Deploying to dev app 2
# こういう感じのアウトプットを期待してダブルクオートの中を取り出しています。 => Creating application version archive "app-2019-11-18-2-57-gd83f8-6547657_104221".
command: eb deploy my-application-2 --label `cat /tmp/eb_deploy_output | grep "version archive" | sed -E 's/.*\"(.*)\".*/\1/'`
workflows:
version: 2
build-and-test-approval-deploy:
jobs:
- test-js
- test-php:
requires:
- test-js
# 前提としてtestが通っていて、許可したらデプロイするというのをするなら type: approval を使う。
- require-tests:
type: approval
requires:
- test-php
- deploy-to-dev:
requires:
- require-tests
```
`--label` を**指定せずに** eb deploy を複数回実行することもできるかと思いますが、それだと環境が増えるとElasticbeanstalkの管理コンソール上でみれるアプリケーションバージョンが複数発行されてしまい、邪魔になってしまいます。
`--label` で以前のバージョンを指定すればその問題が起こりません。1回目の eb deploy のアウトプットを取得して整形し、2回目のeb deployコマンドの`--label`オプションの引数に渡しています。