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
10
20
- validate :
21
- name : ' terraform validate'
22
- runs-on : ubuntu-latest
23
11
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
33
14
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 }}
39
21
40
- - name : ' terraform validate'
41
- uses :
' clouddrove/[email protected] '
42
- with :
43
- actions_subcommand : ' validate'
44
- tf_actions_working_dir : ./_example
45
22
46
- plan :
47
- name : ' terraform plan '
23
+ versionEvaluate :
24
+ name : Evaluate Terraform versions
48
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
+
49
36
steps :
50
- - name : ' Checkout'
51
- uses : actions/checkout@v2.3.4
37
+ - name : Checkout
38
+ uses : actions/checkout@v2
52
39
53
- - name : ' terraform init '
54
- uses :
' clouddrove/[email protected] '
40
+ - name : Install Terraform v${{ matrix.version }}
41
+ uses : hashicorp/setup-terraform@v1
55
42
with :
56
- actions_subcommand : ' init'
57
- tf_actions_working_dir : ./_example
43
+ terraform_version : ${{ matrix.version }}
58
44
59
45
- name : ' Configure AWS Credentials'
60
46
uses : clouddrove/configure-aws-credentials@v1
@@ -63,38 +49,35 @@ jobs:
63
49
aws-secret-access-key : ${{ secrets.TEST_AWS_ACCESS_SECRET_KEY }}
64
50
aws-region : us-east-2
65
51
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
68
61
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'
71
67
72
- pre-commit :
73
- name : ' Pre-Commit'
74
- needs :
75
- - fmt
76
- - plan
77
- - validate
68
+ format :
69
+ name : Check code format
78
70
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
86
72
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
90
76
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
93
79
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