GitHub ActionsでECS自動デプロイのワークフローを構築した
概要
Cloudformationで社内のインフラを構築した際に、GitHub ActionsでECS自動デプロイのワークフローを構築した際の振り返りを兼ねてまとめる。
やったこと
GitHubがオフィシャルで出してるECSデプロイのサンプルワークフローをそのまま使った。
Deploying to Amazon Elastic Container Service - GitHub Docs Learn how to deploy a project to Amazon Elastic Container Service (ECS) as part of a continuous deployment (CD) workflow. GitHub Docs
- ECRにログイン
- イメージビルドしてECRにpush
- タスク定義を元にECSをデプロイ
環境変数やパスを指定し直すだけだったので本当にすぐできた。
タスク定義のJSONは、containerDefinitions配下のものを指定しないとダメなのは注意。
$ aws ecs describe-task-definition --task-definition task-definition-cfn:${number}上記のコマンドでJSONをそのまま出力すると、下記のような構造になり、taskDefinitionプロパティが邪魔をしてしまう。
{
"taskDefinition": {
"taskDefinitionArn": "xxxxx",
"containerDefinitions": [
{
"name": "xxxxx",
"image": "xxxxx",
....
}
]
}
}なので下記のようにしてtaskDefinition配下のJSONを出力する必要がある。
$ aws ecs describe-task-definition --task-definition task-definition-cfn:${number} | jq '.taskDefinition' > path/task-definition.jsonまとめ
GitHubがサンプルテンプレートを出していてありがとうという気持ち。 自動デプロイは本当に楽で良い。