2023.03.10   2024.04.10

【ecspresso】Github ActionsでECSのデプロイが完了するまで待機する

Git,  AWS    

Github Actionsecspresso 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コマンドが終了し、後続の処理が実行されるようになります。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信