準備
Circle CIにリポジトリ登録する
Circle CIにサインアップした時点でリポジトリがいくつか表示されているのでポチポチ選ぶ。
選択するとビルドが走る。
AWSのアクセスキーを設定する
BUILDSから登録されたリポジトリを選択し、右上のProject Settingsを選択。
PERMISSIONS → AWS Permissionsと進み、Access Key IDとSecret Access Key IDを登録。
これはビルド時内部的に ~/.aws/config
と ~/.aws/credentials
に書き出される。
プロファイル名は [default]
になるので、すでに別のプロファイル名で.elasticbeanstalkディレクトリ以下の.configファイルを編集されていたら注意。
Slackを設定する
WebHook URLを取得してCircle CIにぺたり。
Test Hookで確認。
circle.ymlを追加、編集する
たぶんリポジトリルートディレクトリ直下に置かないといけなかったはず。
ディレクトリを指定する
リポジトリのルートディレクトリにソースコードがあれば不要。
general:
build_dir: src
machineの指定
現在Elastic Beanstalkで作成できるPython3環境に合わせて以下のように。
machine:
python:
version: 3.4.3
awsebcliを入れる設定
依存ライブラリもここで入れる。
dependencies:
pre:
- pip install -r requirements.txt
- pip install awsebcli
同時にテストも走らせたい時
以下のように
test:
override:
- python test.py
デプロイする設定
ブランチ名とElastic Beanstalk上の環境名を。
deployment:
staging:
branch: develop
commands:
- eb deploy eb-environment-name
Elastic Beanstalkの設定ファイルを追加編集
デプロイするディレクトリ(今回はsrc)に .elasticbeanstalk/config.yml
を追加。
以下のように編集。
前述した通りプロファイル名は default
で。
branch-defaults:
default:
environment: eb-environment-name
global:
application_name: eb-app-name
default_ec2_keyname: null
default_platform: 64bit Amazon Linux 2016.03 v2.1.0 running Python 3.4
default_region: ap-northeast-1
profile: default
sc: null
すでにプロファイル名をdefault以外で設定してしまっている場合
circle.yml
の pre
で ~/.aws/credentials
を上書きしてしまえばいい。
最初Circle CI側で ~/.aws/credentials
が書き出されることに気づかずに自前で書き出してしまって成功したのでこの手法で大丈夫なはず。
デプロイしてみる
circle.yml
と .elasticbeanstalk/config.yml
をプッシュ。
しばらく待つとデプロイされるはず。