Skip to content

Commit 932f19c

Browse files
authored
Merge branch 'main' into fix/deleteRepositoryFIle
2 parents 4f7f45c + e72a4fb commit 932f19c

3,467 files changed

Lines changed: 326319 additions & 109435 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/labeler.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# Configuration for labeler - https://github.com/actions/labeler
22
"Type: Breaking change":
3-
- head-branch:
3+
- head-branch:
44
- '^breaking/'
55
- '^breaking-'
66

77
"Type: Feature":
8-
- head-branch:
8+
- head-branch:
99
- '^feat/'
1010
- '^feat-'
1111
- '^feature/'
1212
- '^feature-'
1313

1414
"Type: Bug":
15-
- head-branch:
15+
- head-branch:
1616
- '^fix/'
1717
- '^fix-'
1818
- '^bugfix/'
@@ -28,7 +28,7 @@
2828
- '^deprecation-'
2929

3030
"Type: Maintenance":
31-
- head-branch:
31+
- head-branch:
3232
- '^chore/'
3333
- '^chore-'
3434
- '^maintenance/'
@@ -39,18 +39,18 @@
3939
- '^deps-'
4040
- '^dependencies/'
4141
- '^dependencies-'
42-
- changed-files:
43-
- any-glob-to-any-file:
44-
- .github/workflows/**
45-
- .github/labeler.yml
46-
- .github/dependabot.yml
47-
- .github/release.yml
42+
# - changed-files:
43+
# - any-glob-to-any-file:
44+
# - .github/workflows/**
45+
# - .github/labeler.yml
46+
# - .github/dependabot.yml
47+
# - .github/release.yml
4848

4949
"Type: Documentation":
5050
- head-branch:
5151
- '^docs/'
5252
- '^docs-'
5353
- '^doc/'
5454
- '^doc-'
55-
- changed-files:
56-
- any-glob-to-any-file: 'website/**'
55+
# - changed-files:
56+
# - any-glob-to-any-file: 'website/**'

.github/workflows/ci.yml

Lines changed: 117 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,134 @@ on:
55
branches: [main]
66
pull_request: {}
77

8+
permissions:
9+
contents: read # for actions/checkout
10+
11+
env:
12+
test_stacks_directory: test_tf_stacks
13+
814
jobs:
915
ci:
16+
name: Continuous Integration
1017
runs-on: ubuntu-latest
1118
env:
12-
GITHUB_TEST_ORGANIZATION: 'kfcampbell-terraform-provider'
19+
GITHUB_TEST_ORGANIZATION: kfcampbell-terraform-provider
1320
steps:
1421
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
1522
- uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
1623
with:
17-
go-version-file: 'go.mod'
24+
go-version-file: go.mod
1825
cache: true
1926
- run: make tools
2027
- run: make lint
2128
- run: make website-lint
2229
- run: make build
2330
- run: make test
31+
32+
generate-matrix:
33+
name: Generate matrix for test stacks
34+
runs-on: ubuntu-latest
35+
outputs:
36+
matrix: ${{ steps.set-matrix.outputs.matrix }}
37+
has-tests: ${{ steps.set-matrix.outputs.has-tests }}
38+
steps:
39+
- name: Checkout
40+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
41+
42+
- name: Generate matrix
43+
id: set-matrix
44+
run: |
45+
if [ -d "${{ env.test_stacks_directory }}" ]; then
46+
# find all directories and validate their names
47+
VALID_TESTS=()
48+
INVALID_TESTS=()
49+
50+
while IFS= read -r dir; do
51+
dirname=$(basename "$dir")
52+
# validate that directory name only contains alphanumeric, hyphens, underscores, and dots
53+
if [[ "$dirname" =~ ^[a-zA-Z0-9_.-]+$ ]]; then
54+
VALID_TESTS+=("$dirname")
55+
else
56+
INVALID_TESTS+=("$dirname")
57+
fi
58+
done < <(find ${{ env.test_stacks_directory }} -mindepth 1 -maxdepth 1 -type d)
59+
60+
# report invalid directory names if any
61+
if [ ${#INVALID_TESTS[@]} -gt 0 ]; then
62+
echo "::warning::Invalid test directory names found (must contain only alphanumeric, hyphens, underscores, and dots):"
63+
printf ' - %s (will be skipped)\n' "${INVALID_TESTS[@]}"
64+
fi
65+
66+
# create JSON array from valid tests
67+
if [ ${#VALID_TESTS[@]} -gt 0 ]; then
68+
TESTS=$(printf '%s\n' "${VALID_TESTS[@]}" | jq -R -s -c 'split("\n")[:-1]')
69+
echo "matrix=${TESTS}" >> $GITHUB_OUTPUT
70+
echo "has-tests=true" >> $GITHUB_OUTPUT
71+
echo "Found valid test directories: ${TESTS}"
72+
else
73+
echo "matrix=[]" >> $GITHUB_OUTPUT
74+
echo "has-tests=false" >> $GITHUB_OUTPUT
75+
echo "No valid test directories found"
76+
fi
77+
else
78+
echo "Test directory ${{ env.test_stacks_directory }} does not exist"
79+
echo "matrix=[]" >> $GITHUB_OUTPUT
80+
echo "has-tests=false" >> $GITHUB_OUTPUT
81+
fi
82+
83+
tests:
84+
name: Run tests for Terraform test stacks
85+
needs: [ci, generate-matrix]
86+
if: ${{ needs.generate-matrix.outputs.has-tests == 'true' }} # only run if there are some test stacks
87+
runs-on: ubuntu-latest
88+
89+
strategy:
90+
fail-fast: false
91+
matrix:
92+
tests: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
93+
94+
steps:
95+
- name: Checkout
96+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
97+
98+
- name: Setup Go
99+
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
100+
with:
101+
go-version-file: go.mod
102+
cache: true
103+
104+
- name: Build provider
105+
run: go build -o terraform-provider-github
106+
107+
- name: Setup dev overrides
108+
run: |
109+
ROOT_DIR=$(pwd)
110+
cat > ~/.terraformrc << EOF
111+
provider_installation {
112+
dev_overrides {
113+
"integrations/github" = "${ROOT_DIR}"
114+
}
115+
direct {}
116+
}
117+
EOF
118+
119+
- name: Verify dev overrides setup
120+
run: cat ~/.terraformrc
121+
122+
- name: Setup Terraform
123+
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
124+
with:
125+
terraform_version: 1.x
126+
127+
- name: Check Terraform version
128+
run: terraform version
129+
130+
- name: Terraform init
131+
continue-on-error: true # continue even if init fails
132+
run: terraform -chdir=./${{ env.test_stacks_directory }}/${{ matrix.tests }} init
133+
134+
- name: Terraform validate
135+
run: terraform -chdir=./${{ env.test_stacks_directory }}/${{ matrix.tests }} validate
136+
137+
- name: Clean up
138+
run: rm -f ~/.terraformrc terraform-provider-github

.github/workflows/release.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,63 @@ permissions:
1414
contents: write
1515

1616
jobs:
17+
pre-release-tests:
18+
name: Run tests before release
19+
runs-on: ubuntu-latest
20+
env:
21+
test_stacks_directory: test_tf_stacks # root directory for test stacks
22+
pre_release_tests: provider_only # directory name for pre-release tests
23+
permissions:
24+
contents: read
25+
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
29+
30+
- name: Setup Go
31+
uses: actions/setup-go@44694675825211faa026b3c33043df3e48a5fa00 # v6.0.0
32+
with:
33+
go-version-file: go.mod
34+
cache: true
35+
36+
- name: Build provider
37+
run: go build -o terraform-provider-github
38+
39+
- name: Setup dev overrides
40+
run: |
41+
ROOT_DIR=$(pwd)
42+
cat > ~/.terraformrc << EOF
43+
provider_installation {
44+
dev_overrides {
45+
"integrations/github" = "${ROOT_DIR}"
46+
}
47+
direct {}
48+
}
49+
EOF
50+
51+
- name: Verify dev overrides setup
52+
run: cat ~/.terraformrc
53+
54+
- name: Setup Terraform
55+
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
56+
with:
57+
terraform_version: 1.x
58+
59+
- name: Check Terraform version
60+
run: terraform version
61+
62+
- name: Terraform init
63+
continue-on-error: true # continue even if init fails
64+
run: terraform -chdir=./${{ env.test_stacks_directory }}/${{ env.pre_release_tests }} init
65+
66+
- name: Terraform validate
67+
run: terraform -chdir=./${{ env.test_stacks_directory }}/${{ env.pre_release_tests }} validate
68+
69+
- name: Clean up
70+
run: rm -f ~/.terraformrc terraform-provider-github
71+
1772
goreleaser:
73+
needs: [ pre-release-tests ] # runs only if pre-release tests pass
1874
runs-on: ubuntu-latest
1975
steps:
2076
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

.golangci.yml

Lines changed: 62 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,76 @@
1-
# Visit https://golangci-lint.run/ for usage documentation
2-
# and information on other useful linters
3-
1+
version: "2"
42
run:
5-
deadline: 3m
63
modules-download-mode: vendor
74

8-
issues:
9-
max-per-linter: 0
10-
max-same-issues: 0
11-
125
linters:
13-
disable-all: true
6+
default: none
7+
148
enable:
9+
- copyloopvar
1510
- durationcheck
1611
- errcheck
17-
- exportloopref
18-
# - forcetypeassert
19-
# - godot
20-
- gofmt
21-
- gosimple
12+
- errname
13+
- errorlint
14+
# - forcetypeassert TODO: Re-enable when we can fix the issues
15+
- godot
16+
- govet
2217
- ineffassign
2318
- makezero
2419
- misspell
25-
# - nilerr
26-
# - predeclared
20+
- modernize
21+
- nilerr
22+
- predeclared
2723
- staticcheck
28-
- tenv
2924
- unconvert
30-
# - unparam
25+
- unparam
3126
- unused
32-
- vet
27+
- usetesting
28+
29+
exclusions:
30+
generated: lax
31+
presets:
32+
- comments
33+
- common-false-positives
34+
- legacy
35+
- std-error-handling
36+
paths:
37+
- third_party$
38+
- builtin$
39+
- examples$
40+
rules:
41+
- path: _test\.go
42+
linters:
43+
- unparam
44+
text: always receives
45+
46+
issues:
47+
max-issues-per-linter: 0
48+
max-same-issues: 0
49+
50+
formatters:
51+
enable:
52+
- gofmt
53+
- gofumpt
54+
- goimports
55+
56+
settings:
57+
gofmt:
58+
simplify: true
59+
rewrite-rules:
60+
- pattern: interface{}
61+
replacement: any
62+
- pattern: a[b:len(a)]
63+
replacement: a[b:]
64+
gofumpt:
65+
module-path: github.com/integrations/terraform-provider-github
66+
extra-rules: true
67+
goimports:
68+
local-prefixes:
69+
- github.com/integrations/terraform-provider-github
3370

34-
linters-settings:
35-
errcheck:
36-
ignore: github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema:ForceNew|Set,fmt:.*,io:Close
71+
exclusions:
72+
generated: lax
73+
paths:
74+
- third_party$
75+
- builtin$
76+
- examples$

0 commit comments

Comments
 (0)