Skip to content

Commit ad80d5a

Browse files
authored
chore: Update CI workflow to use composite actions and update pre-commit versions (#115)
1 parent fa1defc commit ad80d5a

File tree

7 files changed

+62
-76
lines changed

7 files changed

+62
-76
lines changed

.github/workflows/pre-commit.yml

Lines changed: 41 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2,98 +2,77 @@ name: Pre-Commit
22

33
on:
44
pull_request:
5-
push:
65
branches:
6+
- main
77
- master
88

9+
env:
10+
TERRAFORM_DOCS_VERSION: v0.16.0
11+
912
jobs:
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-
uses: clowdhaus/[email protected]
69-
outputs:
70-
minVersion: ${{ steps.minMax.outputs.minVersion }}
71-
maxVersion: ${{ steps.minMax.outputs.maxVersion }}
72+
uses: clowdhaus/[email protected]
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 }}

.pre-commit-config.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ repos:
2222
- id: terraform_fmt
2323
- id: terraform_validate
2424
- id: terraform_docs
25+
args:
26+
- '--args=--lockfile=false'
2527
- id: terraform_tflint
2628
args:
2729
- '--args=--only=terraform_deprecated_interpolation'

Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
.PHONY: changelog release
22

3+
scope ?= "minor"
4+
5+
changelog-unrelease:
6+
git-chglog --no-case -o CHANGELOG.md
7+
38
changelog:
4-
git-chglog -o CHANGELOG.md --next-tag `semtag final -s minor -o`
9+
git-chglog --no-case -o CHANGELOG.md --next-tag `semtag final -s $(scope) -o -f`
510

611
release:
7-
semtag final -s minor
12+
semtag final -s $(scope)

examples/complete/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ Note that this example may create resources which cost money. Run `terraform des
4444

4545
| Name | Source | Version |
4646
|------|--------|---------|
47-
| <a name="module_cloudfront_log_bucket"></a> [cloudfront\_log\_bucket](#module\_cloudfront\_log\_bucket) | ../../ | |
48-
| <a name="module_log_bucket"></a> [log\_bucket](#module\_log\_bucket) | ../../ | |
49-
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | |
47+
| <a name="module_cloudfront_log_bucket"></a> [cloudfront\_log\_bucket](#module\_cloudfront\_log\_bucket) | ../../ | n/a |
48+
| <a name="module_log_bucket"></a> [log\_bucket](#module\_log\_bucket) | ../../ | n/a |
49+
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | n/a |
5050

5151
## Resources
5252

examples/notification/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ Note that this example may create resources which cost money. Run `terraform des
3636

3737
| Name | Source | Version |
3838
|------|--------|---------|
39-
| <a name="module_all_notifications"></a> [all\_notifications](#module\_all\_notifications) | ../../modules/notification | |
39+
| <a name="module_all_notifications"></a> [all\_notifications](#module\_all\_notifications) | ../../modules/notification | n/a |
4040
| <a name="module_lambda_function1"></a> [lambda\_function1](#module\_lambda\_function1) | terraform-aws-modules/lambda/aws | ~> 2.0 |
4141
| <a name="module_lambda_function2"></a> [lambda\_function2](#module\_lambda\_function2) | terraform-aws-modules/lambda/aws | ~> 2.0 |
42-
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | |
42+
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | n/a |
4343
| <a name="module_sns_topic1"></a> [sns\_topic1](#module\_sns\_topic1) | terraform-aws-modules/sns/aws | ~> 3.0 |
4444
| <a name="module_sns_topic2"></a> [sns\_topic2](#module\_sns\_topic2) | terraform-aws-modules/sns/aws | ~> 3.0 |
4545

examples/object/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ Note that this example may create resources which cost money. Run `terraform des
3434

3535
| Name | Source | Version |
3636
|------|--------|---------|
37-
| <a name="module_object"></a> [object](#module\_object) | ../../modules/object | |
38-
| <a name="module_object_complete"></a> [object\_complete](#module\_object\_complete) | ../../modules/object | |
39-
| <a name="module_object_locked"></a> [object\_locked](#module\_object\_locked) | ../../modules/object | |
40-
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | |
41-
| <a name="module_s3_bucket_with_object_lock"></a> [s3\_bucket\_with\_object\_lock](#module\_s3\_bucket\_with\_object\_lock) | ../../ | |
37+
| <a name="module_object"></a> [object](#module\_object) | ../../modules/object | n/a |
38+
| <a name="module_object_complete"></a> [object\_complete](#module\_object\_complete) | ../../modules/object | n/a |
39+
| <a name="module_object_locked"></a> [object\_locked](#module\_object\_locked) | ../../modules/object | n/a |
40+
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | n/a |
41+
| <a name="module_s3_bucket_with_object_lock"></a> [s3\_bucket\_with\_object\_lock](#module\_s3\_bucket\_with\_object\_lock) | ../../ | n/a |
4242

4343
## Resources
4444

examples/s3-replication/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ Note that this example may create resources which cost money. Run `terraform des
3737

3838
| Name | Source | Version |
3939
|------|--------|---------|
40-
| <a name="module_replica_bucket"></a> [replica\_bucket](#module\_replica\_bucket) | ../../ | |
41-
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | |
40+
| <a name="module_replica_bucket"></a> [replica\_bucket](#module\_replica\_bucket) | ../../ | n/a |
41+
| <a name="module_s3_bucket"></a> [s3\_bucket](#module\_s3\_bucket) | ../../ | n/a |
4242

4343
## Resources
4444

0 commit comments

Comments
 (0)