@@ -2,98 +2,77 @@ name: Pre-Commit
22
33on :
44 pull_request :
5- push :
65 branches :
6+ - main
77 - master
88
9+ env :
10+ TERRAFORM_DOCS_VERSION : v0.16.0
11+
912jobs :
10- # Min Terraform version(s)
11- getDirectories :
12- name : Get root directories
13+ collectInputs :
14+ name : Collect workflow inputs
1315 runs-on : ubuntu-latest
16+ outputs :
17+ directories : ${{ steps.dirs.outputs.directories }}
1418 steps :
1519 - name : Checkout
1620 uses : actions/checkout@v2
17- - name : Install Python
18- uses : actions/setup-python@v2
19- - name : Build matrix
20- id : matrix
21- run : |
22- DIRS=$(python -c "import json; import glob; print(json.dumps([x.replace('/versions.tf', '') for x in glob.glob('./**/versions.tf', recursive=True)]))")
23- echo "::set-output name=directories::$DIRS"
24- outputs :
25- directories : ${{ steps.matrix.outputs.directories }}
21+
22+ - name : Get root directories
23+ id : dirs
24+ uses :
clowdhaus/terraform-composite-actions/[email protected] 2625
2726 preCommitMinVersions :
28- name : Min TF validate
29- needs : getDirectories
27+ name : Min TF pre-commit
28+ needs : collectInputs
3029 runs-on : ubuntu-latest
3130 strategy :
3231 matrix :
33- directory : ${{ fromJson(needs.getDirectories .outputs.directories) }}
32+ directory : ${{ fromJson(needs.collectInputs .outputs.directories) }}
3433 steps :
3534 - name : Checkout
3635 uses : actions/checkout@v2
37- - name : Install Python
38- uses : actions/setup-python@v2
36+
3937 - name : Terraform min/max versions
4038 id : minMax
41- uses :
clowdhaus/[email protected] .2 39+ uses :
clowdhaus/[email protected] .3 4240 with :
4341 directory : ${{ matrix.directory }}
44- - name : Install Terraform v${{ steps.minMax.outputs.minVersion }}
45- uses : hashicorp/setup-terraform@v1
46- with :
47- terraform_version : ${{ steps.minMax.outputs.minVersion }}
48- - name : Install pre-commit dependencies
49- run : pip install pre-commit
50- - name : Execute pre-commit
42+
43+ - name : Pre-commit Terraform ${{ steps.minMax.outputs.minVersion }}
5144 # Run only validate pre-commit check on min version supported
5245 if : ${{ matrix.directory != '.' }}
53- run : pre-commit run terraform_validate --color=always --show-diff-on-failure --files ${{ matrix.directory }}/*
54- - name : Execute pre-commit
46+ uses :
clowdhaus/terraform-composite-actions/[email protected] 47+ with :
48+ terraform-version : ${{ steps.minMax.outputs.minVersion }}
49+ args : ' terraform_validate --color=always --show-diff-on-failure --files ${{ matrix.directory }}/*'
50+
51+ - name : Pre-commit Terraform ${{ steps.minMax.outputs.minVersion }}
5552 # Run only validate pre-commit check on min version supported
5653 if : ${{ matrix.directory == '.' }}
57- run : pre-commit run terraform_validate --color=always --show-diff-on-failure --files $(ls *.tf)
54+ uses :
clowdhaus/terraform-composite-actions/[email protected] 55+ with :
56+ terraform-version : ${{ steps.minMax.outputs.minVersion }}
57+ args : ' terraform_validate --color=always --show-diff-on-failure --files $(ls *.tf)'
5858
59- # Max Terraform version
60- getBaseVersion :
61- name : Module max TF version
59+ preCommitMaxVersion :
60+ name : Max TF pre-commit
6261 runs-on : ubuntu-latest
62+ needs : collectInputs
6363 steps :
6464 - name : Checkout
6565 uses : actions/checkout@v2
66+ with :
67+ ref : ${{ github.event.pull_request.head.ref }}
68+ repository : ${{github.event.pull_request.head.repo.full_name}}
69+
6670 - name : Terraform min/max versions
6771 id : minMax
68- 69- outputs :
70- minVersion : ${{ steps.minMax.outputs.minVersion }}
71- maxVersion : ${{ steps.minMax.outputs.maxVersion }}
72+ 7273
73- preCommitMaxVersion :
74- name : Max TF pre-commit
75- runs-on : ubuntu-latest
76- needs : getBaseVersion
77- strategy :
78- fail-fast : false
79- matrix :
80- version :
81- - ${{ needs.getBaseVersion.outputs.maxVersion }}
82- steps :
83- - name : Checkout
84- uses : actions/checkout@v2
85- - name : Install Python
86- uses : actions/setup-python@v2
87- - name : Install Terraform v${{ matrix.version }}
88- uses : hashicorp/setup-terraform@v1
74+ - name : Pre-commit Terraform ${{ steps.minMax.outputs.maxVersion }}
75+ uses :
clowdhaus/terraform-composite-actions/[email protected] 8976 with :
90- terraform_version : ${{ matrix.version }}
91- - name : Install pre-commit dependencies
92- run : |
93- pip install pre-commit
94- curl -Lo ./terraform-docs.tar.gz https://github.com/terraform-docs/terraform-docs/releases/download/v0.13.0/terraform-docs-v0.13.0-$(uname)-amd64.tar.gz && tar -xzf terraform-docs.tar.gz && chmod +x terraform-docs && sudo mv terraform-docs /usr/bin/
95- curl -L "$(curl -s https://api.github.com/repos/terraform-linters/tflint/releases/latest | grep -o -E "https://.+?_linux_amd64.zip")" > tflint.zip && unzip tflint.zip && rm tflint.zip && sudo mv tflint /usr/bin/
96- - name : Execute pre-commit
97- # Run all pre-commit checks on max version supported
98- if : ${{ matrix.version == needs.getBaseVersion.outputs.maxVersion }}
99- run : pre-commit run --color=always --show-diff-on-failure --all-files
77+ terraform-version : ${{ steps.minMax.outputs.maxVersion }}
78+ terraform-docs-version : ${{ env.TERRAFORM_DOCS_VERSION }}
0 commit comments