Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

CircleCIからElasticBeanstalkにデプロイ環境を本番とStagingに作る

Vegewelというベジタリアンガイドを作っています。
ここではソース管理にBitBucketを使っており(プライベートリポジトリでもタダだし)そこからCircleCI使って本番環境とStaging環境に自動デプロイする仕組みを作りたいと考えました。
ソース手上げなんてマジでありえないので・・・。

ということでサーバ環境はAWSのクラウド環境では有名なPaaSであるElasticBeanstalk(以下EB)を使っています。Herokuの対抗馬ってことなんだろうけど多少はEC2やRDSの知識ないと使いこないせないのがミソです。

で、こちらがそのサーバです。
Elastic Beanstalk Applications.png

BitBucket上にはmasterに加えてstagingのブランチを切っています。
Hardreggaecafe   vegewel   ブランチ — Bitbucket.png

ここではアプリの作り方やBitBucketへのコミット、プッシュ、ブランチ作成方法は割愛します。
他のサイトで参考にしてください。

自動デプロイ使わないときのデプロイについて

BitBucketにあげてからEBのCLIを使ってeb deployと叩くのが吉です。
EBのCLI(CommandLineInterface)のインストール方法はこちらを参照ください。
http://dev.classmethod.jp/etc/aws-eb-multi-profile/
http://qiita.com/toshihirock/items/593e17d42a8d1d533a49

CircleCIの設定

AWSにアクセスするための設定(AWSのAccessKeyとSecretKeyを用意)
CircleCI1.png
Project settings 2.png

自分のアプリにCircleCI設定

アプリのディレクトリ直下にcircle.ymlというファイルを設置。YamlはYamllintというサイトで書式が間違ってないか確認すると尚良。

circle.yml
machine:
  python:
    version: 2.7.6

dependencies: # EB CLIをCircleCIサーバ上にインストール
  pre:
    - pip install awsebcli

database: # 勝手にCircleCIのデータベースへの操作が行われるような記載がされるのでなにもしないように以下を記入
  override:
    - exit 0

test: # 勝手にCircleCIのテストの操作が行われるような記載がされるのでなにもしないように以下を記入(テスト必要ならここに記載)
  override:
    - exit 0

deployment:
  staging:
    branch: staging # BitBucketブランチ名
    commands:
      - eb deploy vegewel-staging
  production:
    branch: master # BitBucketブランチ名
    commands:
      - eb deploy vegewel

自分のアプリにEB関係の設定を行う

自分のアプリ上にeb initとやると勝手に.elasticbeanstalk/config.ymlが作成されるがmasterやらstagingにそれぞれ切り替えて設定かけるとゴチャゴチャしてきます。
そこで最後は手で以下のように修正するとスッキリするはず。
eb deploy masterとかeb deploy stagingとすればデプロイする方のブランチを選択することが出来ます。この設定がCircleCIからのデプロイにも効果を発揮するのでこのファイルもコミットしておきます。

.elasticbeanstalk/config.yml
branch-defaults:
  master:
    environment: vegewel
  staging:
    environment: vegewel-staging
global:
  application_name: vegewel
  default_ec2_keyname: vegewel
  default_platform: 64bit Amazon Linux 2016.03 v2.1.6 running Ruby 2.3 (Passenger
    Standalone)
  default_region: ap-northeast-1
  sc: git

注意点ですが、最初にeb initとするとdefault_region: ap-northeast-1の下にprofile: eb-cliと書かれます。自分のPCからデプロイするならこの設定は必要ですが、CircleCIから自動デプロイするならこの行が存在するとエラーを引き起こします。なので今回のケースでは削除します。

ここまで設定できたらgitコマンドでもSourceTreeからでもいいのでStagingやMasterブランチにコミット→プッシュしてみてください。直後にCircleCIの画面を見るとDeploy作業がrunningしているのがわかるはず。

CircleCI.png

となればOK。あとはMaster/Staging環境を開けばコミットしたソースが反映されているはずです。
是非お試しを。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
18
Help us understand the problem. What are the problem?