更新日: 2017-06-27 (火) 21:02:57 (173d)

:AWS

えー、:AWSのCodePipelineというものに取り組んでおります。
が、AWS初心者が始めて、超簡単なWebページをGithubにコミットからサーバーにデプロイできるようになるまで、丸2日かかりました。
あまり日本語情報がなかったのとかも関係していますが…。2017年6月27日現在、まだ新しいサービスなんですね。。(´・ω・`)

で、作る方法は公式サイトなどにありますから、途中で引っかかったポイントを書いておきます。

公式サイトは↓
http://transporter-guild.com/wp/2017/04/25/8/

CodePipeline自体は実に簡単に作れます。

Githubからやる場合は、下記のサイトを参考に作ります。
http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/tutorials-four-stage-pipeline.html

超簡単な構成は、次の通りです。

codepipeline1.png

Sourceを取ってきて、Buildして、Stagingにあげる、というここまでやります。

まず最初に、アーティファクトがないよ、的なメッセージが出ます。

…あーてぃふぁくと??

聞きなれないですね~
ググると遊戯王 Wikiとか出てきます。
あ、いかんいかん、今日も
「Gさんはいつも遊戯王の話をしている」
と怒られたばかりだった…。。(´・ω・`) (ちなみにいつも遊戯王の話はしていない)

とりあえず、成果物、とかいう意味らしいです。

まずは、CodePipelineのアーティファクトを指定するところで、

Source

のアーティファクトが

Build

の入力になり、Buildのアーティファクト(出力)が

Staging

の入力になるようにします。

ちなみに、出力されたアーティファクトはS3の中にどんどんたまっていきます。過去の成果物を取っておいてくれるわけですね~

今度はCloudWatch→ログのCodebuildの中に

code pipeline No artifact files specified

と出るようになります。

これはbuildspec.ymlにartifactsの記述がないからです。
buildspec.ymlを下記のように変更したら治りました。
buildspec.ymlはルートに置いておかないといけません。

version: 0.2

phases:
 install:
   commands:
     - echo Nothing to do in the install phase...

 pre_build:
   commands:
     - echo Nothing to do in the pre_build phase...

 build:
   commands:
     - echo Build started on `date`

 post_build:
   commands:
     - echo Build completed on `date`

artifacts:
 files:
   - '**/*'

ついでに、ルートに置いておくファイルでappspec.ymlも必要なのですが、ついでに内容を張っておきます。

version: 0.0
os: linux
files:
 - source: /
   destination: /var/www/html/
hooks:
 BeforeInstall:
   - location: scripts/start_server
     timeout: 300
     runas: root
 ApplicationStop:
   - location: scripts/stop_server
     timeout: 300
     runas: root

で、本当はBlue/Greenでやりたかったのですが、どうもわからないことが多いので、より簡単そうなインプレイスのデプロイ方法に変更します。
対象のインスタンスを、タグで指定します。

CodePipelineののStagingにデプロイをするのはAWS CodeDeployが行います。
CodeDeployがなかなか難しい。
まずはCodeDeployを単体でやっておいたほうがいいでしょう。

下記が公式
https://aws.amazon.com/jp/codedeploy/

つまったらこのページ見ると早いです。
Troubleshoot Instance Issues

私が詰まったのは

の3点ですね。
AWS CodeDeploy agentをインストールすると、

/var/log/aws/codedeploy-agent/

にログも出るので、わかりやすいです。

上記3点をクリアすると

com.amazonaws.services.simpleworkflow.flow.ActivityTaskFailedException: 
EC2 instance ******* is not in the same VPC as ELB. 

というエラーがイベントのログとして表示されます。

CodeDeployのアプリケーションで登録したロードバランサーのVPCとインスタンスのVPCは同じでないといけません。

上記をクリアして、やっとできました!

まだまだ、俺たちの戦いは始まったばかりだ!
という感じですが。

続きはこちら↓
CodePipeline Githubにコミットしてテスト環境で確認の後デプロイする


選択肢 投票
役に立った 0  
役に立たなかった 0  
どちらでもない 0  
このページが参照された数
Total: 208, 今日: 2, 昨日: 1

添付ファイル: filecodepipeline1.png 24件 [詳細]

でじうぃきは神奈川県横浜市の位置情報システム・スマホアプリ開発の株式会社オンラインコンサルタントが運営しています。
投稿
トップ   このページを編集する 再編集不可にする 差分 バックアップ 添付 複製 名前変更 リロード   新しいページを作る 一覧 検索する 最新の更新   ヘルプ   最終更新のRSS
Last-modified: 2017-06-27 (火) 21:02:57 (173d)