AWS などの構築をコードで管理することも多くなってきたのではないでしょうか?
GitHub で管理することも多くあるのではないでしょうか?
ということで、Terraform の単体テストまでGithub Actions で実施してみます。
今回の環境・フロー

手順
今回のゴール
Terraform test が通ることがゴールになります。

Git Clone
今回使用するコードを最初にClone してきてください。
GitHub - kentaindeed/deploy-terraform: deploy の練習用のterraform です。CICD 環境での自動デプロイ。
deploy の練習用のterraform です。CICD 環境での自動デプロイ。. Contribute to kentaindeed/deploy-terraform development by creating an account...
git clone https://github.com/kentaindeed/deploy-terraform.git
Secret の準備
workflow の権限はとrepo の権限があれば、大丈夫だと思います。

workflow
workflow では下記のように設定しています。
今回はTerraform apply をしないので、環境変数は必要ないです。なので、このまま実行しても大丈夫です!!
name: Terraform Test
on:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.11.4
- name: Terraform Init
run: cd env/dev/ && terraform init
- name: Terraform Test
run: |
cd env/dev/ && terraform test -filter="tests/ec2_module_test.tftest.hcl"
terraform test -filter="tests/network_unit_test.tftest.hcl"
env:
# テスト用の環境変数
AWS_ACCESS_KEY_ID: "test"
AWS_SECRET_ACCESS_KEY: "test"
AWS_DEFAULT_REGION: "ap-southeast-1"
GitHub Actions の実行
今回はpush した時に実行されず、workflow_dispatch を指定して手動で実行するようにしています。
Actions に移動
Actions に移動

Terraform Test 実行
Actions の所で、terraform-test.yml の中のname の名前が workflow の名前になります。
実行場所

実行
Branch も指定できるので、他のbranch の人はそのbranch を選択してください。

成功の表示
成功したら、✔がつきます。

失敗の表示
失敗したら、✖ がつきます。

まとめ
今回はTerraform の単体テストをGithub Actions で実行すること書きました。Github Actions で結合テストとデプロイはこのブログではできなかったので、次回以降のブログで実施していきます。
参考サイト

OAuth アプリのスコープ - GitHub Docs
スコープによって、必要なアクセスの種類を正確に指定できます。 スコープによって OAuth トークンへのアクセスが 制限 されます。 ユーザがすでに持っている範囲を超えた権限を許可することはありません。

【Terraform】GitHub Actions を使って、planやapplyを自動化しよう
コメント