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
- uses : actions/checkout@v2.3.4
14
-
15
- - name : ' Terraform Format'
16
- uses : ' clouddrove/github-actions@v8.0'
17
- with :
18
- actions_subcommand : ' fmt'
19
- - name : ' Terraform Format'
20
- uses : ' clouddrove/github-actions@v8.0'
21
- with :
22
- actions_subcommand : ' fmt'
23
10
24
- private-hostedzone :
25
- name : ' private-hostedzone'
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
37
-
38
- - name : ' Terraform init for private-hostedzone'
39
- uses : ' clouddrove/github-actions@v8.0'
40
- with :
41
- actions_subcommand : ' init'
42
- tf_actions_working_dir : ./_example/private-hostedzone
43
-
44
- - name : ' Terraform validate for private-hostedzone'
45
- uses : ' clouddrove/github-actions@v8.0'
46
- with :
47
- actions_subcommand : ' validate'
48
- tf_actions_working_dir : ./_example/private-hostedzone
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 }}
49
21
50
- - name : ' Terraform plan for private-hostedzone'
51
- uses : ' clouddrove/github-actions@v8.0'
52
- with :
53
- actions_subcommand : ' plan'
54
- tf_actions_working_dir : ./_example/private-hostedzone
55
22
56
- public-hostedzone :
57
- name : ' public-hostedzone '
23
+ versionEvaluate :
24
+ name : Evaluate Terraform versions
58
25
runs-on : ubuntu-latest
59
- steps :
60
- - name : ' Checkout'
61
- uses : actions/checkout@v2.3.4
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/private-hostedzone
35
+ - _example/public-hostedzone
36
+ - _example/vpc-association
62
37
63
- - name : ' Configure AWS Credentials'
64
- uses : clouddrove/configure-aws-credentials@v1
65
- with :
66
- aws-access-key-id : ${{ secrets.TEST_AWS_ACCESS_KEY }}
67
- aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
68
- aws-region : us-east-2
69
38
70
- - name : ' Terraform init for public-hostedzone'
71
- uses : ' clouddrove/github-actions@v8.0'
72
- with :
73
- actions_subcommand : ' init'
74
- tf_actions_working_dir : ./_example/public-hostedzone
39
+ steps :
40
+ - name : Checkout
41
+ uses : actions/checkout@v2
75
42
76
- - name : ' Terraform validate for public-hostedzone '
77
- uses : ' clouddrove/github-actions@v8.0 '
43
+ - name : Install Terraform v${{ matrix.version }}
44
+ uses : hashicorp/setup-terraform@v1
78
45
with :
79
- actions_subcommand : ' validate'
80
- tf_actions_working_dir : ./_example/public-hostedzone
81
-
82
-
83
- vpc-association :
84
- name : ' vpc-association'
85
- runs-on : ubuntu-latest
86
- steps :
87
- - name : ' Checkout'
88
- uses : actions/checkout@v2.3.4
46
+ terraform_version : ${{ matrix.version }}
89
47
90
48
- name : ' Configure AWS Credentials'
91
49
uses : clouddrove/configure-aws-credentials@v1
@@ -94,51 +52,34 @@ jobs:
94
52
aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
95
53
aws-region : us-east-2
96
54
97
- - name : ' Terraform init for vpc-association'
98
- uses : ' clouddrove/github-actions@v8.0'
99
- with :
100
- actions_subcommand : ' init'
101
- tf_actions_working_dir : ./_example/vpc-association
102
-
103
- - name : ' Terraform validate for vpc-association'
104
- uses : ' clouddrove/github-actions@v8.0'
105
- with :
106
- actions_subcommand : ' validate'
107
- tf_actions_working_dir : ./_example/vpc-association
108
-
109
- - name : ' Terraform plan for vpc-association'
110
- uses : ' clouddrove/github-actions@v8.0'
55
+ - name : Init & validate v${{ matrix.version }}
56
+ run : |
57
+ cd ${{ matrix.directory }}
58
+ terraform init
59
+ terraform validate
60
+
61
+ - name : tflint
62
+ uses : reviewdog/action-tflint@master
111
63
with :
112
- actions_subcommand : ' plan'
113
- tf_actions_working_dir : ./_example/vpc-association
114
-
115
- pre-commit :
116
- name : ' Pre-Commit'
117
- needs :
118
- - fmt
119
- - private-hostedzone
120
- - public-hostedzone
121
- - vpc-association
64
+ github_token : ${{ secrets.GITHUB }}
65
+ working_directory : ${{ matrix.directory }}
66
+ fail_on_error : ' true'
67
+ filter_mode : ' nofilter'
68
+ flags : ' --module'
69
+
70
+ format :
71
+ name : Check code format
122
72
runs-on : ubuntu-latest
123
- steps :
124
- - name : ' Checkout'
125
- uses : actions/checkout@v2.3.4
126
-
127
- - name : ' Install Tflint'
128
- run : |
129
- curl https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash
73
+ needs : versionExtract
130
74
131
- - name : ' Pre-Commit 🔎 '
132
- uses : pre-commit/action@v2.0.3
133
- continue-on-error : true
75
+ steps :
76
+ - name : Checkout
77
+ uses : actions/checkout@v2
134
78
135
- - name : ' Slack Notification '
136
- uses : clouddrove/action-slack@v2
79
+ - name : Install Terraform v${{ needs.versionExtract.outputs.maxVersion }}
80
+ uses : hashicorp/setup-terraform@v1
137
81
with :
138
- status : ${{ job.status }}
139
- fields : repo,author
140
- author_name : ' CloudDrove'
141
- env :
142
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} # required
143
- SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_TERRAFORM }} # required
144
- if : always()
82
+ terraform_version : ${{ needs.versionExtract.outputs.maxVersion }}
83
+
84
+ - name : Check Terraform format changes
85
+ run : terraform fmt --recursive
0 commit comments