AWS
CodeDeploy

AWS CodeDeployのApplicationStopでやってるっぽいこと

メモレベルです。

CodeDeployにはhooksというセクションが複数あり、私はEC2/オンプレミスへデプロイをやってます。

ApplicationStopのセクションでは、どうやら一つ前のデプロイで配置したファイルを削除する作業が行われています。
この際、/opt/codedeploy-agent/deployment-root/deployment-instructions/xxxxxxxxxxxxx-cleanupというファイルに設置したファイルが定義されているようで、この情報をもとに配置したファイルを削除しているようでした。

ポイントとして、この掃除の時にCodeDeployサービス側の履歴から一つ前の成功したデプロイIDを見ていることです。
例えば、PHP5からPHP7でのアプデ作業を別々のサーバー、ブランチを用いてやっていて、ブランチを統合してデプロイ先サーバーに同じデプロイグループをデプロイすることになった時。

この際にはサービス側のデプロイIDをみて動かすファイルを探すので、デプロイグループに差し込まれる側はデプロイがうまくいくものの、デプロイグループに差し込む側は対象のサーバーにそのデプロイIDは存在しないのでApplicationStopはスキップされます。スキップされてしまうと、installされるときにはすでに前のものが設置されたままの状態なのですでにファイルが存在するよということでエラーになります。

この際は一度設置先を削除しておくことで問題なくデプロイ出来る。