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
8
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@naomichi-y

CodeDeployで環境変数を利用する

概要

CodeDeployでソースをデプロイする際は、Hookを利用してリリースした時刻のパッケージディレクトリを作成したいと考えました。Capistranoみたいな感じです。

- current
- releases
  - 20160310_0242
    - routes
    - logs
    - config
    - ...
  - 20160309_1432
  - 20160307_1029
  - ...

軽くHookスクリプト書いたものの、デプロイ先のインスタンスを増やすと必然的にインスタンスごとのディレクトリ名が変わってしまう問題に気づきました。よくよく考えたら当たり前だけど (Capistranoは実行元の時刻を使ってるっぽい。たぶん)。

CodeDeployはビルドツール (Grunt) に組み込んで利用していたので、CLIの create-deployment を眺めてみると --description というオプションがある。ここに時刻入れたらデプロイ先 (CodeDeploy Agent) で上手いこと値を取れないか試したけど無理だった。
が、Using CodeDeploy Environment Variables によると、いくつかのデプロイ変数はENVから参照できる様子。試しにHookで $DEPLOYMENT_ID としたらID取れました。

- current
- releases
  - 20160310_d-Ie6U45KRD
    - routes
    - logs
    - config
    - ...
  - 20160309_d-fjiefjFef
  - 20160310_d-FnFkfefaz
  - ...

CLIでは get-deployment で進捗を取得できるので (定期的にポーリングする自前実装が必要だけど)、deploymentInfo.status=Succeeded が返された後に deploymentInfo.deplymentId をGitHubのタグとして自動プッシュするよう設定。
あんまキレイな方法ではないけど、タグとDeploymentIDを連携させることでビルドが追いやすくなったのでまぁ良しとする。

8
Help us understand the problem. What is going on with this article?
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
8
Help us understand the problem. What is going on with this article?