2
2
name : build
3
3
4
4
on :
5
- push :
5
+ merge_group :
6
+ types :
7
+ - checks_requested
6
8
pull_request :
9
+ push :
7
10
repository_dispatch :
8
- types : [apb]
11
+ types :
12
+ - apb
13
+
14
+ # Set a default shell for any run steps. The `-Eueo pipefail` sets errtrace,
15
+ # nounset, errexit, and pipefail. The `-x` will print all commands as they are
16
+ # run. Please see the GitHub Actions documentation for more information:
17
+ # https://docs.github.com/en/actions/using-jobs/setting-default-values-for-jobs
18
+ defaults :
19
+ run :
20
+ shell : bash -Eueo pipefail -x {0}
9
21
10
22
env :
11
23
CURL_CACHE_DIR : ~/.cache/curl
12
24
PIP_CACHE_DIR : ~/.cache/pip
13
25
PRE_COMMIT_CACHE_DIR : ~/.cache/pre-commit
14
26
RUN_TMATE : ${{ secrets.RUN_TMATE }}
27
+ TERRAFORM_DOCS_REPO_BRANCH_NAME : improvement/support_atx_closed_markdown_headers
28
+ TERRAFORM_DOCS_REPO_DEPTH : 1
29
+ TERRAFORM_DOCS_REPO_URL : https://github.com/mcdonnnj/terraform-docs.git
15
30
16
31
jobs :
17
32
diagnostics :
27
42
egress-policy : audit
28
43
- id : github-status
29
44
name : Check GitHub status
30
- uses : crazy-max/ghaction-github-status@v3
45
+ uses : crazy-max/ghaction-github-status@v4
31
46
- id : dump-context
32
47
name : Dump context
33
48
uses : crazy-max/ghaction-dump-context@v2
@@ -45,20 +60,20 @@ jobs:
45
60
uses : cisagov/setup-env-github-action@develop
46
61
- uses : actions/checkout@v4
47
62
- id : setup-python
48
- uses : actions/setup-python@v4
63
+ uses : actions/setup-python@v5
49
64
with :
50
- python-version : " 3.11 "
65
+ python-version : ${{ steps.setup-env.outputs.python-version }}
51
66
# We need the Go version and Go cache location for the actions/cache step,
52
67
# so the Go installation must happen before that.
53
68
- id : setup-go
54
- uses : actions/setup-go@v4
69
+ uses : actions/setup-go@v5
55
70
with :
56
71
# There is no expectation for actual Go code so we disable caching as
57
72
# it relies on the existence of a go.sum file.
58
73
cache : false
59
- go-version : " 1.20 "
60
- - name : Lookup Go cache directory
61
- id : go- cache
74
+ go-version : ${{ steps.setup-env.outputs.go-version }}
75
+ - id : go- cache
76
+ name : Lookup Go cache directory
62
77
run : |
63
78
echo "dir=$(go env GOCACHE)" >> $GITHUB_OUTPUT
64
79
- uses : actions/cache@v3
69
84
packer${{ steps.setup-env.outputs.packer-version }}-\
70
85
tf${{ steps.setup-env.outputs.terraform-version }}-"
71
86
with :
87
+ # We do not use '**/setup.py' in the cache key so only the 'setup.py'
88
+ # file in the root of the repository is used. This is in case a Python
89
+ # package were to have a 'setup.py' as part of its internal codebase.
90
+ key : " ${{ env.BASE_CACHE_KEY }}\
91
+ ${{ hashFiles('**/requirements-test.txt') }}-\
92
+ ${{ hashFiles('**/requirements.txt') }}-\
93
+ ${{ hashFiles('**/.pre-commit-config.yaml') }}-\
94
+ ${{ hashFiles('setup.py') }}"
72
95
# Note that the .terraform directory IS NOT included in the
73
96
# cache because if we were caching, then we would need to use
74
97
# the `-upgrade=true` option. This option blindly pulls down the
@@ -80,14 +103,6 @@ jobs:
80
103
${{ env.PRE_COMMIT_CACHE_DIR }}
81
104
${{ env.CURL_CACHE_DIR }}
82
105
${{ steps.go-cache.outputs.dir }}
83
- # We do not use '**/setup.py' in the cache key so only the 'setup.py'
84
- # file in the root of the repository is used. This is in case a Python
85
- # package were to have a 'setup.py' as part of its internal codebase.
86
- key : " ${{ env.BASE_CACHE_KEY }}\
87
- ${{ hashFiles('**/requirements-test.txt') }}-\
88
- ${{ hashFiles('**/requirements.txt') }}-\
89
- ${{ hashFiles('**/.pre-commit-config.yaml') }}-\
90
- ${{ hashFiles('setup.py') }}"
91
106
restore-keys : |
92
107
${{ env.BASE_CACHE_KEY }}
93
108
- name : Setup curl cache
@@ -105,37 +120,55 @@ jobs:
105
120
${{ env.CURL_CACHE_DIR }}/"${PACKER_ZIP}"
106
121
sudo mv /usr/local/bin/packer /usr/local/bin/packer-default
107
122
sudo ln -s /opt/packer/packer /usr/local/bin/packer
108
- - uses : hashicorp/setup-terraform@v2
123
+ - uses : hashicorp/setup-terraform@v3
109
124
with :
110
125
terraform_version : ${{ steps.setup-env.outputs.terraform-version }}
111
126
- name : Install go-critic
112
127
env :
113
128
PACKAGE_URL : github.com/go-critic/go-critic/cmd/gocritic
114
129
PACKAGE_VERSION : ${{ steps.setup-env.outputs.go-critic-version }}
115
130
run : go install ${PACKAGE_URL}@${PACKAGE_VERSION}
131
+ - name : Install goimports
132
+ env :
133
+ PACKAGE_URL : golang.org/x/tools/cmd/goimports
134
+ PACKAGE_VERSION : ${{ steps.setup-env.outputs.goimports-version }}
135
+ run : go install ${PACKAGE_URL}@${PACKAGE_VERSION}
116
136
- name : Install gosec
117
137
env :
118
138
PACKAGE_URL : github.com/securego/gosec/v2/cmd/gosec
119
139
PACKAGE_VERSION : ${{ steps.setup-env.outputs.gosec-version }}
120
140
run : go install ${PACKAGE_URL}@${PACKAGE_VERSION}
121
- - name : Install shfmt
122
- env :
123
- PACKAGE_URL : mvdan.cc/sh/v3/cmd/shfmt
124
- PACKAGE_VERSION : ${{ steps.setup-env.outputs.shfmt-version }}
125
- run : go install ${PACKAGE_URL}@${PACKAGE_VERSION}
126
141
- name : Install staticcheck
127
142
env :
128
143
PACKAGE_URL : honnef.co/go/tools/cmd/staticcheck
129
144
PACKAGE_VERSION : ${{ steps.setup-env.outputs.staticcheck-version }}
130
145
run : go install ${PACKAGE_URL}@${PACKAGE_VERSION}
131
- - name : Install Terraform-docs
132
- env :
133
- PACKAGE_URL : github.com/terraform-docs/terraform-docs
134
- PACKAGE_VERSION : ${{ steps.setup-env.outputs.terraform-docs-version }}
135
- run : go install ${PACKAGE_URL}@${PACKAGE_VERSION}
146
+ # TODO: https://github.com/cisagov/skeleton-generic/issues/165
147
+ # We are temporarily using @mcdonnnj's forked branch of terraform-docs
148
+ # until his PR: https://github.com/terraform-docs/terraform-docs/pull/745
149
+ # is approved. This temporary fix will allow for ATX header support when
150
+ # terraform-docs is run during linting.
151
+ - name : Clone ATX headers branch from terraform-docs fork
152
+ run : |
153
+ git clone \
154
+ --branch $TERRAFORM_DOCS_REPO_BRANCH_NAME \
155
+ --depth $TERRAFORM_DOCS_REPO_DEPTH \
156
+ --single-branch \
157
+ $TERRAFORM_DOCS_REPO_URL /tmp/terraform-docs
158
+ - name : Build and install terraform-docs binary
159
+ run : |
160
+ go build \
161
+ -C /tmp/terraform-docs \
162
+ -o $(go env GOPATH)/bin/terraform-docs
136
163
- name : Install dependencies
164
+ # We don't upgrade setuptools here because the versions of
165
+ # gophish on PYPI are ancient and depend on an equally ancient
166
+ # version of setuptools. The gophish package installation
167
+ # will fail if we let pip pull in the latest setuptools;
168
+ # instead, we let the gophish package installation itself
169
+ # choose the version of setuptools to install.
137
170
run : |
138
- python -m pip install --upgrade pip setuptools wheel
171
+ python -m pip install --upgrade pip wheel
139
172
pip install --upgrade --requirement requirements-test.txt
140
173
- name : Set up pre-commit hook environments
141
174
run : pre-commit install-hooks
@@ -148,12 +181,10 @@ jobs:
148
181
name : test source - py${{ matrix.python-version }}
149
182
needs :
150
183
- diagnostics
151
- runs-on : ${{ matrix.os }}
184
+ runs-on : ubuntu-latest
152
185
strategy :
153
186
fail-fast : false
154
187
matrix :
155
- os :
156
- - ubuntu-latest
157
188
python-version :
158
189
- " 3.8"
159
190
- " 3.9"
@@ -172,7 +203,7 @@ jobs:
172
203
egress-policy : audit
173
204
- uses : actions/checkout@v4
174
205
- id : setup-python
175
- uses : actions/setup-python@v4
206
+ uses : actions/setup-python@v5
176
207
with :
177
208
python-version : ${{ matrix.python-version }}
178
209
- uses : actions/cache@v3
@@ -221,10 +252,12 @@ jobs:
221
252
with :
222
253
egress-policy : audit
223
254
- uses : actions/checkout@v4
255
+ - id : setup-env
256
+ uses : cisagov/setup-env-github-action@develop
224
257
- id : setup-python
225
- uses : actions/setup-python@v4
258
+ uses : actions/setup-python@v5
226
259
with :
227
- python-version : " 3.10 "
260
+ python-version : ${{ steps.setup-env.outputs.python-version }}
228
261
- uses : actions/cache@v3
229
262
env :
230
263
BASE_CACHE_KEY : " ${{ github.job }}-${{ runner.os }}-\
@@ -241,9 +274,12 @@ jobs:
241
274
restore-keys : |
242
275
${{ env.BASE_CACHE_KEY }}
243
276
- name : Install dependencies
277
+ # We manually upgrade urllib3 here because coveralls needs it
278
+ # but gophish-tools (really gophish) doesn't allow it.
244
279
run : |
245
280
python -m pip install --upgrade pip
246
281
pip install --upgrade --requirement requirements-test.txt
282
+ pip install --upgrade urllib3
247
283
- name : Finished coveralls reports
248
284
run : coveralls --finish
249
285
env :
@@ -257,12 +293,10 @@ jobs:
257
293
- diagnostics
258
294
- lint
259
295
- test
260
- runs-on : ${{ matrix.os }}
296
+ runs-on : ubuntu-latest
261
297
strategy :
262
298
fail-fast : false
263
299
matrix :
264
- os :
265
- - ubuntu-latest
266
300
python-version :
267
301
- " 3.8"
268
302
- " 3.9"
@@ -281,7 +315,7 @@ jobs:
281
315
egress-policy : audit
282
316
- uses : actions/checkout@v4
283
317
- id : setup-python
284
- uses : actions/setup-python@v4
318
+ uses : actions/setup-python@v5
285
319
with :
286
320
python-version : ${{ matrix.python-version }}
287
321
- uses : actions/cache@v3
@@ -299,13 +333,18 @@ jobs:
299
333
restore-keys : |
300
334
${{ env.BASE_CACHE_KEY }}
301
335
- name : Install build dependencies
336
+ # We don't upgrade setuptools here because gophish is ancient
337
+ # code that depends on an ancient version of setuptools. The
338
+ # pip install command fails if we let the python -m pip
339
+ # command pull in the latest setuptools; it is safer to let
340
+ # the pip install command pull in setuptools itself.
302
341
run : |
303
- python -m pip install --upgrade pip setuptools wheel
342
+ python -m pip install --upgrade pip wheel
304
343
python -m pip install --upgrade build
305
344
- name : Build artifacts
306
345
run : python -m build
307
346
- name : Upload artifacts
308
- uses : actions/upload-artifact@v3
347
+ uses : actions/upload-artifact@v4
309
348
with :
310
349
name : dist-${{ matrix.python-version }}
311
350
path : dist
@@ -317,12 +356,10 @@ jobs:
317
356
needs :
318
357
- diagnostics
319
358
- build
320
- runs-on : ${{ matrix.os }}
359
+ runs-on : ubuntu-latest
321
360
strategy :
322
361
fail-fast : false
323
362
matrix :
324
- os :
325
- - ubuntu-latest
326
363
python-version :
327
364
- " 3.8"
328
365
- " 3.9"
@@ -341,7 +378,7 @@ jobs:
341
378
egress-policy : audit
342
379
- uses : actions/checkout@v4
343
380
- id : setup-python
344
- uses : actions/setup-python@v4
381
+ uses : actions/setup-python@v5
345
382
with :
346
383
python-version : ${{ matrix.python-version }}
347
384
- uses : actions/cache@v3
@@ -359,15 +396,21 @@ jobs:
359
396
restore-keys : |
360
397
${{ env.BASE_CACHE_KEY }}
361
398
- name : Retrieve the built wheel
362
- uses : actions/download-artifact@v3
399
+ uses : actions/download-artifact@v4
363
400
with :
364
401
name : dist-${{ matrix.python-version }}
365
402
path : dist
366
403
- id : find-wheel
367
404
name : Get the name of the retrieved wheel (there should only be one)
368
405
run : echo "wheel=$(ls dist/*whl)" >> $GITHUB_OUTPUT
369
406
- name : Update core Python packages
370
- run : python -m pip install --upgrade pip setuptools wheel
407
+ # We don't upgrade setuptools here because the versions of
408
+ # gophish on PYPI are ancient and depend on an equally ancient
409
+ # version of setuptools. The gophish package installation
410
+ # will fail if we let pip pull in the latest setuptools;
411
+ # instead, we let the gophish package installation itself
412
+ # choose the version of setuptools to install.
413
+ run : python -m pip install --upgrade pip wheel
371
414
- name : Install the built wheel (along with testing dependencies)
372
415
run : python -m pip install ${{ steps.find-wheel.outputs.wheel }}[test]
373
416
- name : Run tests
0 commit comments