1
- name : ' Terraform GitHub Actions'
1
+ name : static-checks
2
+
2
3
on :
3
4
pull_request :
4
- branches :
5
- - master
6
5
7
6
jobs :
8
- fmt :
9
- name : ' terraform fmt '
7
+ versionExtract :
8
+ name : Get min/max versions
10
9
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'
19
- - name : ' Terraform Format'
20
- uses :
' clouddrove/[email protected] '
21
- with :
22
- actions_subcommand : ' fmt'
23
10
24
- validate :
25
- name : ' terraform validate'
26
- runs-on : ubuntu-latest
27
11
steps :
28
- - name : ' Checkout'
29
- uses : actions/checkout@v2.3.4
12
+ - name : Checkout
13
+ uses : actions/checkout@v2
30
14
31
- - name : ' Configure AWS Credentials '
32
- uses : clouddrove/configure-aws-credentials@v1
33
- with :
34
- aws-access-key-id : ${{ secrets.TEST_AWS_ACCESS_KEY }}
35
- aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
36
- aws-region : us-east-2
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 }}
37
21
38
- - name : ' Terraform init'
39
- uses :
' clouddrove/[email protected] '
40
- with :
41
- actions_subcommand : ' init'
42
- tf_actions_working_dir : ./_example
43
-
44
- - name : ' Terraform validate'
45
- uses :
' clouddrove/[email protected] '
46
- with :
47
- actions_subcommand : ' validate'
48
- tf_actions_working_dir : ./_example
49
22
50
- plan :
51
- name : ' terraform plan '
23
+ versionEvaluate :
24
+ name : Evaluate Terraform versions
52
25
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
+
53
36
steps :
54
- - name : ' Checkout'
55
- uses : actions/checkout@v2.3.4
37
+ - name : Checkout
38
+ uses : actions/checkout@v2
56
39
57
- - name : ' Terraform init '
58
- uses :
' clouddrove/[email protected] '
40
+ - name : Install Terraform v${{ matrix.version }}
41
+ uses : hashicorp/setup-terraform@v1
59
42
with :
60
- actions_subcommand : ' init'
61
- tf_actions_working_dir : ./_example
43
+ terraform_version : ${{ matrix.version }}
62
44
63
45
- name : ' Configure AWS Credentials'
64
46
uses : clouddrove/configure-aws-credentials@v1
@@ -67,38 +49,35 @@ jobs:
67
49
aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
68
50
aws-region : us-east-2
69
51
70
- - name : ' Terraform plan'
71
- uses :
' clouddrove/[email protected] '
52
+ - name : Init & validate v${{ matrix.version }}
53
+ run : |
54
+ cd ${{ matrix.directory }}
55
+ terraform init
56
+ terraform validate
57
+
58
+
59
+ - name : tflint
60
+ uses : reviewdog/action-tflint@master
72
61
with :
73
- actions_subcommand : ' plan'
74
- 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'
75
67
76
- pre-commit :
77
- name : ' Pre-Commit'
78
- needs :
79
- - fmt
80
- - plan
81
- - validate
68
+ format :
69
+ name : Check code format
82
70
runs-on : ubuntu-latest
83
- steps :
84
- - name : ' Checkout'
85
-
86
-
87
- - name : ' Install Tflint'
88
- run : |
89
- curl https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
71
+ needs : versionExtract
90
72
91
- - name : ' Pre-Commit 🔎 '
92
- uses : pre-commit/[email protected]
93
- continue-on-error : true
73
+ steps :
74
+ - name : Checkout
75
+ uses : actions/checkout@v2
94
76
95
- - name : ' Slack Notification '
96
- uses : clouddrove/action-slack@v2
77
+ - name : Install Terraform v${{ needs.versionExtract.outputs.maxVersion }}
78
+ uses : hashicorp/setup-terraform@v1
97
79
with :
98
- status : ${{ job.status }}
99
- fields : repo,author
100
- author_name : ' CloudDrove'
101
- env :
102
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} # required
103
- SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_TERRAFORM }} # required
104
- if : always()
80
+ terraform_version : ${{ needs.versionExtract.outputs.maxVersion }}
81
+
82
+ - name : Check Terraform format changes
83
+ run : terraform fmt --recursive
0 commit comments