HashiCorp から GitHub Actions の setup-terraform Action が登場しました。
公式ドキュメントはこちら
https://www.terraform.io/docs/github-actions/setup-terraform.htmlwww.terraform.io
従来は terraform-github-actions が提供されていましたが、こちらは今凍結されています。
Terraform は init / validate / plan / apply と複数のサブコマンドを実行する必要がありますが、terraform-github-actions は Dockerfile Action のため繰り返し uses:
で Action を実行する必要がありました。
setup-terraform は JavaScript Action であり、ワークフロー実行環境に terraform CLI を文字通りセットアップしてくれるので、run:
でサブコマンドを自由に実行できます。
以前 DigitalOcean の Droplets を作るワークフローを terraform-github-actions で作りました。
Action を繰り返し適用しているためかなり冗長でした。setup-terraform に置き換えてみます。
PR 作成時のワークフロー
name: Terraform Plan for droplet on: pull_request: types: [opened] env: GITHUB_TOKEN: ${{ secrets.GITHUB_TF_TOKEN }} DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} jobs: terraform: name: 'Terraform' runs-on: ubuntu-latest steps: - name: 'Checkout' uses: actions/checkout@v2 - name: Setup Terraform uses: hashicorp/setup-terraform@v1 with: terraform_version: 0.12.24 - name: 'Terraform Init' run: terraform init - name: 'Terraform Validate' run: terraform validate - name: 'Terraform Plan' run: terraform plan
PR マージ時のワークフロー
name: Terraform Apply droplet on: pull_request: types: [closed] env: GITHUB_TOKEN: ${{ secrets.GITHUB_TF_TOKEN }} DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} jobs: terraform: name: 'Terraform' runs-on: ubuntu-latest steps: - name: 'Checkout' uses: actions/checkout@v2 - name: Setup Terraform uses: hashicorp/setup-terraform@v1 with: terraform_version: 0.12.24 - name: 'Terraform Init' run: terraform init - name: 'Terraform Apply' run: terraform apply -auto-approve if: github.event.pull_request.merged == true
かなり簡潔に書けるようになりました。