-
Notifications
You must be signed in to change notification settings - Fork 1
135 lines (112 loc) · 3.42 KB
/
lint.yml
File metadata and controls
135 lines (112 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Lint and Validate
on:
workflow_call:
jobs:
lint:
name: Terraform Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: "1.9.0"
- name: Terraform Format Check
run: terraform fmt -check -recursive
- name: Setup TFLint
uses: terraform-linters/setup-tflint@v4
with:
tflint_version: v0.58.0
- name: Initialize TFLint
run: tflint --init
- name: Run TFLint
run: tflint --recursive --format compact
validate:
name: Validate Simple Examples
runs-on: ubuntu-latest
strategy:
matrix:
example:
# Add new examples here as they are created
- "aws/examples/simple"
- "azure/examples/simple"
- "gcp/examples/simple"
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: "1.9.0"
- name: Check if example exists
id: check-dir
run: |
if [ ! -d "${{ matrix.example }}" ]; then
echo "exists=false" >> $GITHUB_OUTPUT
echo "⚠️ Example directory ${{ matrix.example }} does not exist, skipping"
else
echo "exists=true" >> $GITHUB_OUTPUT
echo "✅ Example directory ${{ matrix.example }} exists"
fi
- name: Terraform Init
if: steps.check-dir.outputs.exists == 'true'
run: |
cd ${{ matrix.example }}
terraform init -backend=false
- name: Terraform Validate
if: steps.check-dir.outputs.exists == 'true'
run: |
cd ${{ matrix.example }}
terraform validate
docs:
name: Check Generated Docs
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup terraform-docs
uses: jaxxstorm/action-install-gh-release@v2.0.0
with:
repo: terraform-docs/terraform-docs
tag: v0.19.0
- name: Generate docs
run: .github/scripts/generate-docs.sh
- name: Check for diff
run: |
if ! git diff --exit-code; then
echo "::error::Module README docs are out of date. Run .github/scripts/generate-docs.sh and commit the changes."
exit 1
fi
lint-rust:
name: Rust Tests Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache cargo registry and build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
test/target
key: ${{ runner.os }}-cargo-${{ hashFiles('test/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Check formatting
working-directory: test
run: cargo fmt -- --check
- name: Run clippy
working-directory: test
run: cargo clippy -- -D warnings
- name: Install cargo-deny
run: cargo install cargo-deny
- name: Run cargo deny
working-directory: test
run: cargo deny check