1- name : ' Terraform GitHub Actions'
1+ name : static-checks
2+
23on :
34 pull_request :
4- branches :
5- - master
65
76jobs :
8- fmt :
9- name : ' terraform fmt '
7+ versionExtract :
8+ name : Get min/max versions
109 runs-on : ubuntu-latest
11- steps :
12- - name : ' Checkout'
13- 14-
15- - name : ' Terraform Format'
16- uses :
' clouddrove/[email protected] ' 17- with :
18- actions_subcommand : ' fmt'
1910
20- validate :
21- name : ' terraform validate'
22- runs-on : ubuntu-latest
2311 steps :
24- - name : ' Checkout'
25- 26-
27- - name : ' Configure AWS Credentials'
28- uses : clouddrove/configure-aws-credentials@v1
29- with :
30- aws-access-key-id : ${{ secrets.TEST_AWS_ACCESS_KEY }}
31- aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
32- aws-region : us-east-2
12+ - name : Checkout
13+ uses : actions/checkout@v2
3314
34- - name : ' Terraform init'
35- uses :
' clouddrove/[email protected] ' 36- with :
37- actions_subcommand : ' init'
38- tf_actions_working_dir : ./_example
15+ - name : Terraform min/max versions
16+ id : minMax
17+ uses : clowdhaus/terraform-min-max@main
18+ outputs :
19+ minVersion : ${{ steps.minMax.outputs.minVersion }}
20+ maxVersion : ${{ steps.minMax.outputs.maxVersion }}
3921
40- - name : ' Terraform validate'
41- uses :
' clouddrove/[email protected] ' 42- with :
43- actions_subcommand : ' validate'
44- tf_actions_working_dir : ./_example
4522
46- plan :
47- name : ' terraform plan '
23+ versionEvaluate :
24+ name : Evaluate Terraform versions
4825 runs-on : ubuntu-latest
26+ needs : versionExtract
27+ strategy :
28+ fail-fast : false
29+ matrix :
30+ version :
31+ - ${{ needs.versionExtract.outputs.minVersion }}
32+ - ${{ needs.versionExtract.outputs.maxVersion }}
33+ directory :
34+ - _example/
35+
4936 steps :
50- - name : ' Checkout'
51- uses : actions/checkout@v2.3.4
37+ - name : Checkout
38+ uses : actions/checkout@v2
5239
53- - name : ' Terraform init '
54- uses :
' clouddrove/[email protected] ' 40+ - name : Install Terraform v${{ matrix.version }}
41+ uses : hashicorp/setup-terraform@v1
5542 with :
56- actions_subcommand : ' init'
57- tf_actions_working_dir : ./_example
43+ terraform_version : ${{ matrix.version }}
5844
5945 - name : ' Configure AWS Credentials'
6046 uses : clouddrove/configure-aws-credentials@v1
@@ -63,38 +49,35 @@ jobs:
6349 aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
6450 aws-region : us-east-2
6551
66- - name : ' Terraform plan'
67- uses :
' clouddrove/[email protected] ' 52+ - name : Init & validate v${{ matrix.version }}
53+ run : |
54+ cd ${{ matrix.directory }}
55+ terraform init
56+ terraform validate
57+ terraform plan -input=false -no-color
58+
59+ - name : tflint
60+ uses : reviewdog/action-tflint@master
6861 with :
69- actions_subcommand : ' plan'
70- tf_actions_working_dir : ./_example
62+ github_token : ${{ secrets.GITHUB }}
63+ working_directory : ${{ matrix.directory }}
64+ fail_on_error : ' true'
65+ filter_mode : ' nofilter'
66+ flags : ' --module'
7167
72- pre-commit :
73- name : ' Pre-Commit'
74- needs :
75- - fmt
76- - plan
77- - validate
68+ format :
69+ name : Check code format
7870 runs-on : ubuntu-latest
79- steps :
80- - name : ' Checkout'
81- 82-
83- - name : ' Install Tflint'
84- run : |
85- curl https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
71+ needs : versionExtract
8672
87- - name : ' Pre-Commit 🔎 '
88- uses : pre-commit/[email protected] 89- continue-on-error : true
73+ steps :
74+ - name : Checkout
75+ uses : actions/checkout@v2
9076
91- - name : ' Slack Notification '
92- uses : clouddrove/action-slack@v2
77+ - name : Install Terraform v${{ needs.versionExtract.outputs.maxVersion }}
78+ uses : hashicorp/setup-terraform@v1
9379 with :
94- status : ${{ job.status }}
95- fields : repo,author
96- author_name : ' CloudDrove'
97- env :
98- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} # required
99- SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_TERRAFORM }} # required
100- if : always()
80+ terraform_version : ${{ needs.versionExtract.outputs.maxVersion }}
81+
82+ - name : Check Terraform format changes
83+ run : terraform fmt --recursive
0 commit comments