Github Actions
でecspresso deploy
コマンドを実行すると、デプロイが開始されたタイミングで後続のフローが実行されます。
しかし、デプロイが完全に終了するまで待機してから後続のフローを実行したい時もあると思います。
本記事はその方法についてメモ書きしたものです。
実装方法
次のように実装します。
ポイントとしては、ecspresso deploy
コマンドの実行後にecspresso wait
コマンドを実行することです。
また、ecspresso wait
コマンドを実行するには、--config
オプションが必要です。--config
はどのデプロイを監視するのかを指定するのに利用します。
on:
workflow_call:
inputs:
ecspresso_version:
required: true
type: string
ecspresso_config:
required: true
type: string
desired_count:
required: true
type: number
jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
permissions:
id-token: write
contents: write
steps:
- name: Install ecspresso
uses: kayac/ecspresso@v1
with:
version: ${{ inputs.ecspresso_version }}
- name: Deploy to Amazon ECS by ecspresso
env:
ECSPRESSO_CONFIG_FILE: ${{ inputs.ecspresso_config }}
TASK_DESIRED_COUNT: ${{ inputs.desired_count }}
IMAGE_TAG: ${{ inputs.image_tag }}
shell: bash
run: |
ecspresso deploy --config ${ECSPRESSO_CONFIG_FILE} --tasks=${TASK_DESIRED_COUNT}
- name: Deploy Wait
env:
ECSPRESSO_CONFIG_FILE: ${{ inputs.ecspresso_config }}
shell: bash
run: |
ecspresso wait --config ${ECSPRESSO_CONFIG_FILE}
# ECSPRESSO_CONFIG_FILEの中身
region: ap-northeast-1
cluster: test-cluster
service: test-service
service_definition: ecs-service-def.json
task_definition: ecs-task-def.json
timeout: 10m0s
挙動
ワークフローの中で、ecspresso deploy
コマンドとecspresso wait
コマンドが実行されると次の状態になります。(※ 画像はAWS CodeDeploy
のもの)
デプロイが完了するまでecspresso wait
コマンドは実行されたままとなり、次の処理は実行されません。
以下のように「ステップ5」までデプロイが完了するとecspresso wait
コマンドが終了し、後続の処理が実行されるようになります。