0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actionsで敢えて手動applyを実行する。

Last updated at Posted at 2025-10-21

経緯

実務でTerraformのCI/CDを管理する際にたまに遭遇するのが、$ terraform planまでは自動実行したいが、applyに関してはplan結果を確認後、チームメンバーで集まって皆で実行したいという場面。
Reviewer一人に責任が集中することがなく、より万全な状態でapplyに臨むことができる。
要はapplyのみ自動で実行せず、手動で実行できる。
その際便利な機能にworkflow_dispatchがある。

使い方

on: workflow_dispatch
と記述するだけ。
スクリーンショット 2025-10-21 13.19.01.png

今回は画像のように、ワークフローを2つに分けて管理する。
スクリーンショット 2025-10-21 13.25.40.png

使用したyaml

  • planを実行するもの
name: Terraform plan
env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

on:
  push:
    branches:
      - main

jobs:
  ci:
    runs-on: ubuntu-latest
    timeout-minutes: 10

    permissions:
      id-token: write
      contents: read

    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{secrets.ASSUME_ROLE_ARN}}
          aws-region: ap-northeast-1

      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v3
        with:
          terraform_version: 1.5.2

      - name: Terraform Init
        run: terraform -chdir=./projects/dev-jp/prd init

      - name: Terraform Plan
        run: terraform -chdir=./projects/dev-jp/prd plan
  • applyを実行するもの
name: Terraform apply
env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

on:
  workflow_dispatch:

jobs:
  apply:
    runs-on: ubuntu-latest
    timeout-minutes: 10

    permissions:
      id-token: write
      contents: read

    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{secrets.ASSUME_ROLE_ARN}}
          aws-region: ap-northeast-1

      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v3
        with:
          terraform_version: 1.5.2

      - name: Terraform Init
        run: terraform -chdir=./projects/dev-jp/prd init

      - name: Terraform Apply
        run: terraform -chdir=./projects/dev-jp/prd apply -auto-approve

挙動

それぞれのワークフローが独立して動作する。
まずはplanの実行。
スクリーンショット 2025-10-21 13.29.12.png

次にapplyの実行。
コンソール右上に「Run workflow」というボタンがあるためこれをクリック。
スクリーンショット 2025-10-21 13.32.45.png

ブランチを選択するモーダルが出現するため再度「Run workflow」というボタンをクリックすると、applyが実行される。
スクリーンショット 2025-10-21 13.35.17.png

無事完了することができた。
スクリーンショット 2025-10-21 13.48.35.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?