http-api-tool 1.1.0__tar.gz → 1.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- http_api_tool-1.1.2/.aislop/config.yml +5 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.editorconfig +2 -2
- http_api_tool-1.1.2/.github/actionlint.yaml +12 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/build-test-release.yaml +23 -23
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/build-test.yaml +41 -58
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/clear-action-cache.yaml +1 -1
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/codeql.yml +1 -1
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/openssf-scorecard.yaml +3 -1
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/release-drafter.yaml +2 -2
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/workflows/security-scans.yaml +6 -2
- http_api_tool-1.1.2/.gitlint +30 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.pre-commit-config.yaml +47 -22
- http_api_tool-1.1.2/AGENTS.md +43 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/PKG-INFO +3 -3
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/README.md +2 -2
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/action.yaml +3 -3
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/pyproject.toml +9 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/_version.py +2 -2
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/cli.py +1 -1
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/verifier.py +2 -2
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/tests/test_http_api_tool.py +115 -33
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/uv.lock +20 -7
- http_api_tool-1.1.0/.gitlint +0 -37
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.actrc +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.codespell +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.dockerignore +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/cache-config.yaml +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.github/dependabot.yml +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.gitignore +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.readthedocs.yml +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/.yamllint +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/CHANGELOG-v0.2.0.md +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/LICENSE +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/LICENSES/Apache-2.0.txt +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/REUSE.toml +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/SECURITY.md +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/UV-QUICK-REFERENCE.md +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/docker/Containerfile +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/scripts/check-pip-security.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/scripts/generate_requirements.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/sonar-project.properties +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/__init__.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/__main__.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/curl_client.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/reporting.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/sanitize.py +0 -0
- {http_api_tool-1.1.0 → http_api_tool-1.1.2}/src/http_api_tool/validation.py +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
# SPDX-FileCopyrightText: 2025 The Linux Foundation
|
|
4
|
+
|
|
5
|
+
paths:
|
|
6
|
+
.github/workflows/build-test.yaml:
|
|
7
|
+
ignore:
|
|
8
|
+
# actionlint v1.17.0 rejects a bare '$/' (an action at the repository
|
|
9
|
+
# root), which GitHub accepts and runs. The ignore also skips input and
|
|
10
|
+
# output checks for those steps; drop it once a release with
|
|
11
|
+
# kjanat/actionlint#200 is pinned (actions-template#253).
|
|
12
|
+
- 'specifying action "\$/" in invalid format because path is missing'
|
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
timeout-minutes: 5
|
|
33
33
|
steps:
|
|
34
34
|
# yamllint disable-line rule:line-length
|
|
35
|
-
- uses: step-security/harden-runner@
|
|
35
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
36
36
|
with:
|
|
37
37
|
egress-policy: audit
|
|
38
38
|
|
|
@@ -45,7 +45,7 @@ jobs:
|
|
|
45
45
|
- name: "Gather repository metadata"
|
|
46
46
|
id: repo-metadata
|
|
47
47
|
# yamllint disable-line rule:line-length
|
|
48
|
-
uses: lfreleng-actions/repository-metadata-action@
|
|
48
|
+
uses: lfreleng-actions/repository-metadata-action@847400e0d0b34cc88a572fa9575accd80401b796 # v0.3.1
|
|
49
49
|
with:
|
|
50
50
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
51
51
|
github_summary: 'true'
|
|
@@ -64,7 +64,7 @@ jobs:
|
|
|
64
64
|
steps:
|
|
65
65
|
# Harden the runner used by this workflow
|
|
66
66
|
# yamllint disable-line rule:line-length
|
|
67
|
-
- uses: step-security/harden-runner@
|
|
67
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
68
68
|
with:
|
|
69
69
|
egress-policy: 'audit'
|
|
70
70
|
|
|
@@ -79,7 +79,7 @@ jobs:
|
|
|
79
79
|
- name: 'Verify pushed tag'
|
|
80
80
|
id: 'tag-validate'
|
|
81
81
|
# yamllint disable-line rule:line-length
|
|
82
|
-
uses: lfreleng-actions/tag-validate-action@
|
|
82
|
+
uses: lfreleng-actions/tag-validate-action@63470621b8ebc5c4fc86ebb616727dd0a7285dd9 # v1.1.7
|
|
83
83
|
with:
|
|
84
84
|
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
85
85
|
require_type: 'semver'
|
|
@@ -132,7 +132,7 @@ jobs:
|
|
|
132
132
|
steps:
|
|
133
133
|
# Harden the runner used by this workflow
|
|
134
134
|
# yamllint disable-line rule:line-length
|
|
135
|
-
- uses: step-security/harden-runner@
|
|
135
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
136
136
|
with:
|
|
137
137
|
egress-policy: 'audit'
|
|
138
138
|
|
|
@@ -144,7 +144,7 @@ jobs:
|
|
|
144
144
|
- name: 'Build Python project'
|
|
145
145
|
id: 'python-build'
|
|
146
146
|
# yamllint disable-line rule:line-length
|
|
147
|
-
uses: lfreleng-actions/python-build-action@
|
|
147
|
+
uses: lfreleng-actions/python-build-action@1a1d011cd71e781f9b7896fc9a8c5653406a7758 # v2.1.0
|
|
148
148
|
with:
|
|
149
149
|
sigstore_sign: true
|
|
150
150
|
attestations: true
|
|
@@ -163,7 +163,7 @@ jobs:
|
|
|
163
163
|
steps:
|
|
164
164
|
# Harden the runner used by this workflow
|
|
165
165
|
# yamllint disable-line rule:line-length
|
|
166
|
-
- uses: step-security/harden-runner@
|
|
166
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
167
167
|
with:
|
|
168
168
|
egress-policy: 'audit'
|
|
169
169
|
|
|
@@ -174,7 +174,7 @@ jobs:
|
|
|
174
174
|
|
|
175
175
|
- name: 'Test Python project [PYTEST]'
|
|
176
176
|
# yamllint disable-line rule:line-length
|
|
177
|
-
uses: lfreleng-actions/python-test-action@
|
|
177
|
+
uses: lfreleng-actions/python-test-action@88506b4bba4d2acd670ea3cc0bb6f976e0391d24 # v1.3.0
|
|
178
178
|
with:
|
|
179
179
|
python_version: "${{ matrix.python-version }}"
|
|
180
180
|
|
|
@@ -192,7 +192,7 @@ jobs:
|
|
|
192
192
|
steps:
|
|
193
193
|
# Harden the runner used by this workflow
|
|
194
194
|
# yamllint disable-line rule:line-length
|
|
195
|
-
- uses: step-security/harden-runner@
|
|
195
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
196
196
|
with:
|
|
197
197
|
egress-policy: 'audit'
|
|
198
198
|
|
|
@@ -203,7 +203,7 @@ jobs:
|
|
|
203
203
|
|
|
204
204
|
- name: 'Audit Python project'
|
|
205
205
|
# yamllint disable-line rule:line-length
|
|
206
|
-
uses: lfreleng-actions/python-audit-action@
|
|
206
|
+
uses: lfreleng-actions/python-audit-action@f823e631b562f7632730ab36ba0b59a724350d88 # v0.5.1
|
|
207
207
|
with:
|
|
208
208
|
python_version: "${{ matrix.python-version }}"
|
|
209
209
|
permit_fail: "${{ vars.NO_BLOCK_AUDIT_FAIL == 'true' }}"
|
|
@@ -218,7 +218,7 @@ jobs:
|
|
|
218
218
|
steps:
|
|
219
219
|
# Harden the runner used by this workflow
|
|
220
220
|
# yamllint disable-line rule:line-length
|
|
221
|
-
- uses: step-security/harden-runner@
|
|
221
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
222
222
|
with:
|
|
223
223
|
egress-policy: 'audit'
|
|
224
224
|
|
|
@@ -230,7 +230,7 @@ jobs:
|
|
|
230
230
|
- name: "Generate SBOM"
|
|
231
231
|
id: sbom
|
|
232
232
|
# yamllint disable-line rule:line-length
|
|
233
|
-
uses: lfreleng-actions/python-sbom-action@
|
|
233
|
+
uses: lfreleng-actions/python-sbom-action@a849d7190403165d437f2b8d29bc17a4894728f7 # v0.1.3
|
|
234
234
|
with:
|
|
235
235
|
include_dev: "false"
|
|
236
236
|
sbom_format: "both"
|
|
@@ -247,7 +247,7 @@ jobs:
|
|
|
247
247
|
|
|
248
248
|
- name: "Security scan with Grype (SARIF)"
|
|
249
249
|
# yamllint disable-line rule:line-length
|
|
250
|
-
uses: anchore/scan-action@
|
|
250
|
+
uses: anchore/scan-action@27805bf3b4e84b4a5c980df22ed233c00390a439 # v7.4.2
|
|
251
251
|
id: grype-sarif
|
|
252
252
|
# The first Grype scan should not abort the job on failure so that
|
|
253
253
|
# subsequent steps can collect artefacts and display human-readable
|
|
@@ -261,7 +261,7 @@ jobs:
|
|
|
261
261
|
|
|
262
262
|
- name: "Security scan with Grype (Text/Table)"
|
|
263
263
|
# yamllint disable-line rule:line-length
|
|
264
|
-
uses: anchore/scan-action@
|
|
264
|
+
uses: anchore/scan-action@27805bf3b4e84b4a5c980df22ed233c00390a439 # v7.4.2
|
|
265
265
|
id: grype-table
|
|
266
266
|
if: always()
|
|
267
267
|
with:
|
|
@@ -345,7 +345,7 @@ jobs:
|
|
|
345
345
|
steps:
|
|
346
346
|
# Harden the runner used by this workflow
|
|
347
347
|
# yamllint disable-line rule:line-length
|
|
348
|
-
- uses: step-security/harden-runner@
|
|
348
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
349
349
|
with:
|
|
350
350
|
egress-policy: 'audit'
|
|
351
351
|
|
|
@@ -370,7 +370,7 @@ jobs:
|
|
|
370
370
|
steps:
|
|
371
371
|
# Harden the runner used by this workflow
|
|
372
372
|
# yamllint disable-line rule:line-length
|
|
373
|
-
- uses: step-security/harden-runner@
|
|
373
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
374
374
|
with:
|
|
375
375
|
egress-policy: 'audit'
|
|
376
376
|
|
|
@@ -382,7 +382,7 @@ jobs:
|
|
|
382
382
|
# Set up Docker Buildx
|
|
383
383
|
- name: Set up Docker Buildx
|
|
384
384
|
# yamllint disable-line rule:line-length
|
|
385
|
-
uses: docker/setup-buildx-action@
|
|
385
|
+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
386
386
|
|
|
387
387
|
# Login to GitHub Container Registry
|
|
388
388
|
- name: Login to Container Registry
|
|
@@ -414,7 +414,7 @@ jobs:
|
|
|
414
414
|
# Build and push image with comprehensive caching
|
|
415
415
|
- name: Build and push Docker image
|
|
416
416
|
# yamllint disable-line rule:line-length
|
|
417
|
-
uses: docker/build-push-action@
|
|
417
|
+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
418
418
|
with:
|
|
419
419
|
context: .
|
|
420
420
|
file: ./docker/Containerfile
|
|
@@ -457,7 +457,7 @@ jobs:
|
|
|
457
457
|
steps:
|
|
458
458
|
# Harden the runner used by this workflow
|
|
459
459
|
# yamllint disable-line rule:line-length
|
|
460
|
-
- uses: step-security/harden-runner@
|
|
460
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
461
461
|
with:
|
|
462
462
|
egress-policy: 'audit'
|
|
463
463
|
|
|
@@ -495,7 +495,7 @@ jobs:
|
|
|
495
495
|
steps:
|
|
496
496
|
# Harden the runner used by this workflow
|
|
497
497
|
# yamllint disable-line rule:line-length
|
|
498
|
-
- uses: step-security/harden-runner@
|
|
498
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
499
499
|
with:
|
|
500
500
|
egress-policy: 'audit'
|
|
501
501
|
|
|
@@ -513,7 +513,7 @@ jobs:
|
|
|
513
513
|
|
|
514
514
|
- name: 'Attach build artefacts to release'
|
|
515
515
|
# yamllint disable-line rule:line-length
|
|
516
|
-
uses: lfreleng-actions/release-assets-action@
|
|
516
|
+
uses: lfreleng-actions/release-assets-action@51e2955cf9aeab3731efd7cc4605aa2847e7d8e2 # v0.1.3
|
|
517
517
|
with:
|
|
518
518
|
asset_paths: '["${{ needs.python-build.outputs.artefact_path }}/**"]'
|
|
519
519
|
release_tag: "${{ needs.tag-validate.outputs.tag }}"
|
|
@@ -535,7 +535,7 @@ jobs:
|
|
|
535
535
|
steps:
|
|
536
536
|
# Harden the runner used by this workflow
|
|
537
537
|
# yamllint disable-line rule:line-length
|
|
538
|
-
- uses: step-security/harden-runner@
|
|
538
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
539
539
|
with:
|
|
540
540
|
egress-policy: 'audit'
|
|
541
541
|
|
|
@@ -566,7 +566,7 @@ jobs:
|
|
|
566
566
|
id: 'promote-release'
|
|
567
567
|
if: steps.check-promoted.outputs.already_promoted == 'false'
|
|
568
568
|
# yamllint disable-line rule:line-length
|
|
569
|
-
uses: lfreleng-actions/draft-release-promote-action@
|
|
569
|
+
uses: lfreleng-actions/draft-release-promote-action@e420b392557c9b1eea642f0d54dec4ff39086d5f # v0.1.5
|
|
570
570
|
with:
|
|
571
571
|
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
572
572
|
tag: "${{ needs.tag-validate.outputs.tag }}"
|
|
@@ -76,7 +76,7 @@ jobs:
|
|
|
76
76
|
steps:
|
|
77
77
|
# Harden the runner
|
|
78
78
|
- name: Harden Runner
|
|
79
|
-
uses: step-security/harden-runner@
|
|
79
|
+
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
80
80
|
with:
|
|
81
81
|
egress-policy: audit
|
|
82
82
|
|
|
@@ -87,12 +87,12 @@ jobs:
|
|
|
87
87
|
|
|
88
88
|
# Set up Docker Buildx with caching
|
|
89
89
|
- name: Set up Docker Buildx
|
|
90
|
-
uses: docker/setup-buildx-action@
|
|
90
|
+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
91
91
|
|
|
92
92
|
# Build Docker image with registry cache
|
|
93
93
|
- name: Build Docker image
|
|
94
94
|
id: build
|
|
95
|
-
uses: docker/build-push-action@
|
|
95
|
+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
96
96
|
with:
|
|
97
97
|
context: .
|
|
98
98
|
file: ./docker/Containerfile
|
|
@@ -130,14 +130,9 @@ jobs:
|
|
|
130
130
|
contents: read
|
|
131
131
|
|
|
132
132
|
steps:
|
|
133
|
-
- name: Checkout repository
|
|
134
|
-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
135
|
-
with:
|
|
136
|
-
persist-credentials: false
|
|
137
|
-
|
|
138
133
|
# Set up go-httpbin for testing
|
|
139
134
|
- name: Setup go-httpbin HTTPS service
|
|
140
|
-
uses: lfreleng-actions/go-httpbin-action@
|
|
135
|
+
uses: lfreleng-actions/go-httpbin-action@b0fcc716270b4975172449a293173e679773d17e # v0.1.6
|
|
141
136
|
id: go-httpbin
|
|
142
137
|
with:
|
|
143
138
|
debug: 'true'
|
|
@@ -145,7 +140,7 @@ jobs:
|
|
|
145
140
|
|
|
146
141
|
# Test 1: Basic GET request
|
|
147
142
|
- name: Test Basic GET request
|
|
148
|
-
uses:
|
|
143
|
+
uses: $/
|
|
149
144
|
with:
|
|
150
145
|
url: 'https://${{ steps.go-httpbin.outputs.host-gateway-ip }}:8080/get'
|
|
151
146
|
ca_bundle_path: '${{ steps.go-httpbin.outputs.ca-cert-path }}'
|
|
@@ -154,7 +149,7 @@ jobs:
|
|
|
154
149
|
|
|
155
150
|
# Test 2: POST request with JSON
|
|
156
151
|
- name: Test POST request with JSON
|
|
157
|
-
uses:
|
|
152
|
+
uses: $/
|
|
158
153
|
with:
|
|
159
154
|
url: 'https://${{ steps.go-httpbin.outputs.host-gateway-ip }}:8080/post'
|
|
160
155
|
http_method: 'POST'
|
|
@@ -166,7 +161,7 @@ jobs:
|
|
|
166
161
|
|
|
167
162
|
# Test 3: Custom headers
|
|
168
163
|
- name: Test Custom headers
|
|
169
|
-
uses:
|
|
164
|
+
uses: $/
|
|
170
165
|
with:
|
|
171
166
|
url: 'https://${{ steps.go-httpbin.outputs.host-gateway-ip }}:8080/headers'
|
|
172
167
|
request_headers: '{"X-Test-Header": "test-value", "X-API-Key": "secret123"}'
|
|
@@ -176,7 +171,7 @@ jobs:
|
|
|
176
171
|
|
|
177
172
|
# Test 4: Error handling (404)
|
|
178
173
|
- name: Test Error handling (404)
|
|
179
|
-
uses:
|
|
174
|
+
uses: $/
|
|
180
175
|
with:
|
|
181
176
|
url: 'https://${{ steps.go-httpbin.outputs.host-gateway-ip }}:8080/status/404'
|
|
182
177
|
ca_bundle_path: '${{ steps.go-httpbin.outputs.ca-cert-path }}'
|
|
@@ -185,7 +180,7 @@ jobs:
|
|
|
185
180
|
|
|
186
181
|
# Test 5: Error handling (500)
|
|
187
182
|
- name: Test Error handling (500)
|
|
188
|
-
uses:
|
|
183
|
+
uses: $/
|
|
189
184
|
with:
|
|
190
185
|
url: 'https://${{ steps.go-httpbin.outputs.host-gateway-ip }}:8080/status/500'
|
|
191
186
|
ca_bundle_path: '${{ steps.go-httpbin.outputs.ca-cert-path }}'
|
|
@@ -208,7 +203,7 @@ jobs:
|
|
|
208
203
|
steps:
|
|
209
204
|
# Harden the runner
|
|
210
205
|
- name: Harden Runner
|
|
211
|
-
uses: step-security/harden-runner@
|
|
206
|
+
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
212
207
|
with:
|
|
213
208
|
egress-policy: audit
|
|
214
209
|
|
|
@@ -219,7 +214,7 @@ jobs:
|
|
|
219
214
|
|
|
220
215
|
# Set up Docker Buildx
|
|
221
216
|
- name: Set up Docker Buildx
|
|
222
|
-
uses: docker/setup-buildx-action@
|
|
217
|
+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
223
218
|
|
|
224
219
|
# Login to GitHub Container Registry
|
|
225
220
|
- name: Login to Container Registry
|
|
@@ -246,7 +241,7 @@ jobs:
|
|
|
246
241
|
|
|
247
242
|
# Build and push image with comprehensive caching
|
|
248
243
|
- name: Build and push Docker image
|
|
249
|
-
uses: docker/build-push-action@
|
|
244
|
+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
250
245
|
with:
|
|
251
246
|
context: .
|
|
252
247
|
file: ./docker/Containerfile
|
|
@@ -290,7 +285,7 @@ jobs:
|
|
|
290
285
|
GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
291
286
|
steps:
|
|
292
287
|
# Harden the runner used by this workflow
|
|
293
|
-
- uses: step-security/harden-runner@
|
|
288
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
294
289
|
with:
|
|
295
290
|
egress-policy: 'audit'
|
|
296
291
|
|
|
@@ -324,7 +319,7 @@ jobs:
|
|
|
324
319
|
- name: 'Build Python project'
|
|
325
320
|
id: python-build
|
|
326
321
|
# yamllint disable-line rule:line-length
|
|
327
|
-
uses: lfreleng-actions/python-build-action@
|
|
322
|
+
uses: lfreleng-actions/python-build-action@1a1d011cd71e781f9b7896fc9a8c5653406a7758 # v2.1.0
|
|
328
323
|
|
|
329
324
|
# Python tests with matrix strategy (after container pipeline)
|
|
330
325
|
python-tests:
|
|
@@ -340,7 +335,7 @@ jobs:
|
|
|
340
335
|
timeout-minutes: 12
|
|
341
336
|
steps:
|
|
342
337
|
# Harden the runner used by this workflow
|
|
343
|
-
- uses: step-security/harden-runner@
|
|
338
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
344
339
|
with:
|
|
345
340
|
egress-policy: audit
|
|
346
341
|
|
|
@@ -373,7 +368,7 @@ jobs:
|
|
|
373
368
|
|
|
374
369
|
- name: "Python tests [pytest] ${{ matrix.python-version }}"
|
|
375
370
|
# yamllint disable-line rule:line-length
|
|
376
|
-
uses: lfreleng-actions/python-test-action@
|
|
371
|
+
uses: lfreleng-actions/python-test-action@88506b4bba4d2acd670ea3cc0bb6f976e0391d24 # v1.3.0
|
|
377
372
|
with:
|
|
378
373
|
python_version: ${{ matrix.python-version }}
|
|
379
374
|
|
|
@@ -391,7 +386,7 @@ jobs:
|
|
|
391
386
|
timeout-minutes: 10
|
|
392
387
|
steps:
|
|
393
388
|
# Harden the runner used by this workflow
|
|
394
|
-
- uses: step-security/harden-runner@
|
|
389
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
395
390
|
with:
|
|
396
391
|
egress-policy: 'audit'
|
|
397
392
|
|
|
@@ -424,7 +419,7 @@ jobs:
|
|
|
424
419
|
|
|
425
420
|
- name: "Audit dependencies ${{ matrix.python-version }}"
|
|
426
421
|
# yamllint disable-line rule:line-length
|
|
427
|
-
uses: lfreleng-actions/python-audit-action@
|
|
422
|
+
uses: lfreleng-actions/python-audit-action@f823e631b562f7632730ab36ba0b59a724350d88 # v0.5.1
|
|
428
423
|
with:
|
|
429
424
|
python_version: "${{ matrix.python-version }}"
|
|
430
425
|
|
|
@@ -439,7 +434,7 @@ jobs:
|
|
|
439
434
|
timeout-minutes: 15
|
|
440
435
|
steps:
|
|
441
436
|
# Harden the runner used by this workflow
|
|
442
|
-
- uses: step-security/harden-runner@
|
|
437
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
443
438
|
with:
|
|
444
439
|
egress-policy: 'audit'
|
|
445
440
|
|
|
@@ -471,7 +466,7 @@ jobs:
|
|
|
471
466
|
uv-cli-${{ runner.os }}-
|
|
472
467
|
|
|
473
468
|
- name: Install UV
|
|
474
|
-
uses: astral-sh/setup-uv@
|
|
469
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
475
470
|
|
|
476
471
|
- name: Install project dependencies
|
|
477
472
|
run: |
|
|
@@ -488,7 +483,7 @@ jobs:
|
|
|
488
483
|
# Start go-httpbin service for testing
|
|
489
484
|
- name: Setup go-httpbin service
|
|
490
485
|
id: go-httpbin
|
|
491
|
-
uses: lfreleng-actions/go-httpbin-action@
|
|
486
|
+
uses: lfreleng-actions/go-httpbin-action@b0fcc716270b4975172449a293173e679773d17e # v0.1.6
|
|
492
487
|
with:
|
|
493
488
|
port: '8080'
|
|
494
489
|
debug: 'true'
|
|
@@ -566,24 +561,20 @@ jobs:
|
|
|
566
561
|
timeout-minutes: 10
|
|
567
562
|
steps:
|
|
568
563
|
# Harden the runner used by this workflow
|
|
569
|
-
- uses: step-security/harden-runner@
|
|
564
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
570
565
|
with:
|
|
571
566
|
egress-policy: 'audit'
|
|
572
567
|
|
|
573
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
574
|
-
with:
|
|
575
|
-
persist-credentials: false
|
|
576
|
-
|
|
577
568
|
# Start go-httpbin service for testing
|
|
578
569
|
- name: Setup go-httpbin service
|
|
579
570
|
id: go-httpbin
|
|
580
|
-
uses: lfreleng-actions/go-httpbin-action@
|
|
571
|
+
uses: lfreleng-actions/go-httpbin-action@b0fcc716270b4975172449a293173e679773d17e # v0.1.6
|
|
581
572
|
with:
|
|
582
573
|
port: '8080'
|
|
583
574
|
debug: 'true'
|
|
584
575
|
|
|
585
576
|
- name: Test GitHub Action (local)
|
|
586
|
-
uses:
|
|
577
|
+
uses: $/
|
|
587
578
|
with:
|
|
588
579
|
url: '${{ steps.go-httpbin.outputs.service-url }}/get'
|
|
589
580
|
service_name: 'HTTPBin Test Service'
|
|
@@ -593,7 +584,7 @@ jobs:
|
|
|
593
584
|
ca_bundle_path: '${{ steps.go-httpbin.outputs.ca-cert-path }}'
|
|
594
585
|
|
|
595
586
|
- name: Test GitHub Action with POST
|
|
596
|
-
uses:
|
|
587
|
+
uses: $/
|
|
597
588
|
with:
|
|
598
589
|
url: '${{ steps.go-httpbin.outputs.service-url }}/post'
|
|
599
590
|
service_name: 'HTTPBin POST Test'
|
|
@@ -604,7 +595,7 @@ jobs:
|
|
|
604
595
|
ca_bundle_path: '${{ steps.go-httpbin.outputs.ca-cert-path }}'
|
|
605
596
|
|
|
606
597
|
- name: Test GitHub Action error handling
|
|
607
|
-
uses:
|
|
598
|
+
uses: $/
|
|
608
599
|
continue-on-error: true
|
|
609
600
|
with:
|
|
610
601
|
url: 'https://localhost:9999/nonexistent'
|
|
@@ -627,18 +618,14 @@ jobs:
|
|
|
627
618
|
timeout-minutes: 10
|
|
628
619
|
steps:
|
|
629
620
|
# Harden the runner used by this workflow
|
|
630
|
-
- uses: step-security/harden-runner@
|
|
621
|
+
- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
631
622
|
with:
|
|
632
623
|
egress-policy: 'audit'
|
|
633
624
|
|
|
634
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
635
|
-
with:
|
|
636
|
-
persist-credentials: false
|
|
637
|
-
|
|
638
625
|
# Start go-httpbin service for testing
|
|
639
626
|
- name: Setup go-httpbin service
|
|
640
627
|
id: go-httpbin
|
|
641
|
-
uses: lfreleng-actions/go-httpbin-action@
|
|
628
|
+
uses: lfreleng-actions/go-httpbin-action@b0fcc716270b4975172449a293173e679773d17e # v0.1.6
|
|
642
629
|
with:
|
|
643
630
|
port: '8080'
|
|
644
631
|
debug: 'true'
|
|
@@ -669,7 +656,7 @@ jobs:
|
|
|
669
656
|
STEPS_GO_HTTPBIN_OUTPUTS_SERVICE_URL: ${{ steps.go-httpbin.outputs.service-url }}
|
|
670
657
|
|
|
671
658
|
- name: Test uvx deployment with host URL
|
|
672
|
-
uses:
|
|
659
|
+
uses: $/
|
|
673
660
|
with:
|
|
674
661
|
deploy: 'uvx'
|
|
675
662
|
url: '${{ steps.test-urls.outputs.host-url }}/get'
|
|
@@ -686,7 +673,7 @@ jobs:
|
|
|
686
673
|
echo "UVX runs on the host, so it can access services via loopback interface"
|
|
687
674
|
|
|
688
675
|
- name: Test docker deployment with gateway URL
|
|
689
|
-
uses:
|
|
676
|
+
uses: $/
|
|
690
677
|
with:
|
|
691
678
|
deploy: 'docker'
|
|
692
679
|
url: '${{ steps.test-urls.outputs.gateway-url }}/get'
|
|
@@ -704,7 +691,7 @@ jobs:
|
|
|
704
691
|
|
|
705
692
|
|
|
706
693
|
- name: Test uvx with POST request
|
|
707
|
-
uses:
|
|
694
|
+
uses: $/
|
|
708
695
|
with:
|
|
709
696
|
deploy: 'uvx'
|
|
710
697
|
url: '${{ steps.test-urls.outputs.host-url }}/post'
|
|
@@ -743,25 +730,21 @@ jobs:
|
|
|
743
730
|
steps:
|
|
744
731
|
# Harden the runner used by this workflow
|
|
745
732
|
- name: Harden Runner
|
|
746
|
-
uses: step-security/harden-runner@
|
|
733
|
+
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
747
734
|
with:
|
|
748
735
|
egress-policy: audit
|
|
749
736
|
|
|
750
|
-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
751
|
-
with:
|
|
752
|
-
persist-credentials: false
|
|
753
|
-
|
|
754
737
|
# Start go-httpbin service for testing
|
|
755
738
|
- name: Setup go-httpbin service
|
|
756
739
|
id: go-httpbin
|
|
757
|
-
uses: lfreleng-actions/go-httpbin-action@
|
|
740
|
+
uses: lfreleng-actions/go-httpbin-action@b0fcc716270b4975172449a293173e679773d17e # v0.1.6
|
|
758
741
|
with:
|
|
759
742
|
port: '8080'
|
|
760
743
|
debug: 'true'
|
|
761
744
|
|
|
762
745
|
# Test Docker integration via GitHub Action (no Docker CLI dependency)
|
|
763
746
|
- name: Test Docker integration via GitHub Action
|
|
764
|
-
uses:
|
|
747
|
+
uses: $/
|
|
765
748
|
with:
|
|
766
749
|
url: '${{ steps.go-httpbin.outputs.service-url }}/get'
|
|
767
750
|
service_name: 'Docker Integration Test (PR)'
|
|
@@ -772,7 +755,7 @@ jobs:
|
|
|
772
755
|
|
|
773
756
|
# Test additional Docker integration scenarios via GitHub Action
|
|
774
757
|
- name: Test Docker integration with POST
|
|
775
|
-
uses:
|
|
758
|
+
uses: $/
|
|
776
759
|
with:
|
|
777
760
|
url: '${{ steps.go-httpbin.outputs.service-url }}/post'
|
|
778
761
|
service_name: 'Docker Integration POST Test (PR)'
|
|
@@ -785,7 +768,7 @@ jobs:
|
|
|
785
768
|
|
|
786
769
|
# Test Docker integration with custom headers
|
|
787
770
|
- name: Test Docker integration with headers
|
|
788
|
-
uses:
|
|
771
|
+
uses: $/
|
|
789
772
|
with:
|
|
790
773
|
url: '${{ steps.go-httpbin.outputs.service-url }}/headers'
|
|
791
774
|
service_name: 'Docker Integration Headers Test (PR)'
|
|
@@ -814,7 +797,7 @@ jobs:
|
|
|
814
797
|
steps:
|
|
815
798
|
# Harden the runner used by this workflow
|
|
816
799
|
- name: Harden Runner
|
|
817
|
-
uses: step-security/harden-runner@
|
|
800
|
+
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
818
801
|
with:
|
|
819
802
|
egress-policy: audit
|
|
820
803
|
|
|
@@ -824,7 +807,7 @@ jobs:
|
|
|
824
807
|
|
|
825
808
|
# Set up Docker Buildx
|
|
826
809
|
- name: Set up Docker Buildx
|
|
827
|
-
uses: docker/setup-buildx-action@
|
|
810
|
+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
828
811
|
|
|
829
812
|
# Login to Container Registry
|
|
830
813
|
- name: Login to Container Registry
|
|
@@ -846,7 +829,7 @@ jobs:
|
|
|
846
829
|
# Start go-httpbin service for testing
|
|
847
830
|
- name: Setup go-httpbin service
|
|
848
831
|
id: go-httpbin
|
|
849
|
-
uses: lfreleng-actions/go-httpbin-action@
|
|
832
|
+
uses: lfreleng-actions/go-httpbin-action@b0fcc716270b4975172449a293173e679773d17e # v0.1.6
|
|
850
833
|
with:
|
|
851
834
|
port: '8080'
|
|
852
835
|
debug: 'true'
|
|
@@ -889,7 +872,7 @@ jobs:
|
|
|
889
872
|
steps:
|
|
890
873
|
# Harden the runner
|
|
891
874
|
- name: Harden Runner
|
|
892
|
-
uses: step-security/harden-runner@
|
|
875
|
+
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
893
876
|
with:
|
|
894
877
|
egress-policy: audit
|
|
895
878
|
|
|
@@ -922,7 +905,7 @@ jobs:
|
|
|
922
905
|
|
|
923
906
|
# Install UV
|
|
924
907
|
- name: Install UV
|
|
925
|
-
uses: astral-sh/setup-uv@
|
|
908
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
926
909
|
|
|
927
910
|
# Install project dependencies with dev extras (includes bandit)
|
|
928
911
|
- name: Install project dependencies
|
|
@@ -51,7 +51,7 @@ jobs:
|
|
|
51
51
|
permissions:
|
|
52
52
|
actions: write # list and delete repository Actions caches
|
|
53
53
|
# yamllint disable-line rule:line-length
|
|
54
|
-
uses: lfreleng-actions/generic-workflows/.github/workflows/clear-action-cache.yaml@
|
|
54
|
+
uses: lfreleng-actions/generic-workflows/.github/workflows/clear-action-cache.yaml@42ee0a60963eede4169a7347f62da102bfc3b9b5 # v0.4.0
|
|
55
55
|
with:
|
|
56
56
|
key_pattern: ${{ inputs.key_pattern }}
|
|
57
57
|
ref_filter: ${{ inputs.ref_filter }}
|
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
scan:
|
|
26
26
|
name: 'Audit Repository'
|
|
27
27
|
# yamllint disable-line rule:line-length
|
|
28
|
-
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-python-codeql.yaml@
|
|
28
|
+
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-python-codeql.yaml@87eacd1f8322263ebbc1411ce2ea82bab10ed091 # v0.10.3
|
|
29
29
|
permissions:
|
|
30
30
|
security-events: write # Upload CodeQL results to code-scanning
|
|
31
31
|
packages: read # Fetch internal or private CodeQL packs
|
|
@@ -28,7 +28,9 @@ jobs:
|
|
|
28
28
|
openssf-scorecard:
|
|
29
29
|
name: "OpenSSF Scorecard"
|
|
30
30
|
# yamllint disable-line rule:line-length
|
|
31
|
-
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-openssf-scorecard.yaml@
|
|
31
|
+
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-openssf-scorecard.yaml@87eacd1f8322263ebbc1411ce2ea82bab10ed091 # v0.10.3
|
|
32
|
+
# Scorecard uses no cache; deny writes under branch_protection_rule
|
|
33
|
+
cache-mode: read
|
|
32
34
|
permissions:
|
|
33
35
|
contents: read # Read repository contents (checkout, etc.)
|
|
34
36
|
# yamllint disable-line rule:line-length
|
|
@@ -28,14 +28,14 @@ jobs:
|
|
|
28
28
|
# organisation's .github repository and publish it as
|
|
29
29
|
# $CONNECTION_ALLOW_LIST for the harden-runner step below.
|
|
30
30
|
# yamllint disable-line rule:line-length
|
|
31
|
-
- uses: lfreleng-actions/harden-runner-block-action@
|
|
31
|
+
- uses: lfreleng-actions/harden-runner-block-action@a32eb064a1188f6b0f15d2c0c0381efe54b0dd22 # v0.12.2
|
|
32
32
|
with:
|
|
33
33
|
config: '@18d9c4446bea555d0783e850f6d295f844fe8f67' # v0.1.1
|
|
34
34
|
|
|
35
35
|
# Harden the runner with the just-loaded allow-list.
|
|
36
36
|
- name: 'Harden runner (block)'
|
|
37
37
|
# yamllint disable-line rule:line-length
|
|
38
|
-
uses: step-security/harden-runner@
|
|
38
|
+
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
|
39
39
|
with:
|
|
40
40
|
egress-policy: 'block'
|
|
41
41
|
allowed-endpoints: >
|