http-api-tool 1.0.6__tar.gz → 1.0.7__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.0.6 → http_api_tool-1.0.7}/.github/dependabot.yml +4 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/build-test-release.yaml +30 -30
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/build-test.yaml +41 -41
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/codeql.yml +1 -1
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/openssf-scorecard.yaml +1 -1
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/release-drafter.yaml +2 -2
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/security-scans.yaml +2 -2
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/workflows/verify-gha-versions.yaml +1 -1
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.pre-commit-config.yaml +5 -5
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/PKG-INFO +1 -1
- http_api_tool-1.0.7/SECURITY.md +77 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/action.yaml +46 -9
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/docker/Containerfile +4 -4
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/pyproject.toml +7 -1
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/_version.py +2 -2
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/verifier.py +2 -1
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/uv.lock +13 -9
- http_api_tool-1.0.6/.github/workflows/autolabeler.yaml +0 -59
- http_api_tool-1.0.6/.github/workflows/semantic-pull-request.yaml +0 -55
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.actrc +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.codespell +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.dockerignore +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.editorconfig +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.github/cache-config.yaml +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.gitignore +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.gitlint +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.readthedocs.yml +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/.yamllint +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/CHANGELOG-v0.2.0.md +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/LICENSE +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/LICENSES/Apache-2.0.txt +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/README.md +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/REUSE.toml +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/UV-QUICK-REFERENCE.md +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/scripts/check-pip-security.py +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/scripts/generate_requirements.py +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/sonar-project.properties +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/__init__.py +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/__main__.py +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/src/http_api_tool/cli.py +0 -0
- {http_api_tool-1.0.6 → http_api_tool-1.0.7}/tests/test_http_api_tool.py +0 -0
|
@@ -11,6 +11,8 @@ updates:
|
|
|
11
11
|
open-pull-requests-limit: 15
|
|
12
12
|
commit-message:
|
|
13
13
|
prefix: "Chore"
|
|
14
|
+
cooldown:
|
|
15
|
+
default-days: 7
|
|
14
16
|
- package-ecosystem: "pip"
|
|
15
17
|
directory: "/"
|
|
16
18
|
schedule:
|
|
@@ -18,3 +20,5 @@ updates:
|
|
|
18
20
|
open-pull-requests-limit: 10
|
|
19
21
|
commit-message:
|
|
20
22
|
prefix: "Chore"
|
|
23
|
+
cooldown:
|
|
24
|
+
default-days: 7
|
|
@@ -32,12 +32,12 @@ 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@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
36
36
|
with:
|
|
37
37
|
egress-policy: audit
|
|
38
38
|
|
|
39
39
|
# yamllint disable-line rule:line-length
|
|
40
|
-
- uses: actions/checkout@
|
|
40
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
41
41
|
with:
|
|
42
42
|
fetch-depth: 0
|
|
43
43
|
|
|
@@ -63,13 +63,13 @@ jobs:
|
|
|
63
63
|
steps:
|
|
64
64
|
# Harden the runner used by this workflow
|
|
65
65
|
# yamllint disable-line rule:line-length
|
|
66
|
-
- uses: step-security/harden-runner@
|
|
66
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
67
67
|
with:
|
|
68
68
|
egress-policy: 'audit'
|
|
69
69
|
|
|
70
70
|
- name: 'Checkout repository'
|
|
71
71
|
# yamllint disable-line rule:line-length
|
|
72
|
-
uses: actions/checkout@
|
|
72
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
73
73
|
with:
|
|
74
74
|
fetch-depth: 0
|
|
75
75
|
fetch-tags: true
|
|
@@ -77,7 +77,7 @@ jobs:
|
|
|
77
77
|
- name: 'Verify pushed tag'
|
|
78
78
|
id: 'tag-validate'
|
|
79
79
|
# yamllint disable-line rule:line-length
|
|
80
|
-
uses: lfreleng-actions/tag-validate-action@
|
|
80
|
+
uses: lfreleng-actions/tag-validate-action@461d187a53b5de27b068c2cea5af972c085a4a6a # v1.0.2
|
|
81
81
|
with:
|
|
82
82
|
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
83
83
|
require_type: 'semver'
|
|
@@ -129,17 +129,17 @@ jobs:
|
|
|
129
129
|
steps:
|
|
130
130
|
# Harden the runner used by this workflow
|
|
131
131
|
# yamllint disable-line rule:line-length
|
|
132
|
-
- uses: step-security/harden-runner@
|
|
132
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
133
133
|
with:
|
|
134
134
|
egress-policy: 'audit'
|
|
135
135
|
|
|
136
136
|
# yamllint disable-line rule:line-length
|
|
137
|
-
- uses: actions/checkout@
|
|
137
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
138
138
|
|
|
139
139
|
- name: 'Build Python project'
|
|
140
140
|
id: 'python-build'
|
|
141
141
|
# yamllint disable-line rule:line-length
|
|
142
|
-
uses: lfreleng-actions/python-build-action@
|
|
142
|
+
uses: lfreleng-actions/python-build-action@5f570d5d17a7315074a824a91c6a705b6fc5c7dd # v1.1.2
|
|
143
143
|
with:
|
|
144
144
|
sigstore_sign: true
|
|
145
145
|
attestations: true
|
|
@@ -158,16 +158,16 @@ jobs:
|
|
|
158
158
|
steps:
|
|
159
159
|
# Harden the runner used by this workflow
|
|
160
160
|
# yamllint disable-line rule:line-length
|
|
161
|
-
- uses: step-security/harden-runner@
|
|
161
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
162
162
|
with:
|
|
163
163
|
egress-policy: 'audit'
|
|
164
164
|
|
|
165
165
|
# yamllint disable-line rule:line-length
|
|
166
|
-
- uses: actions/checkout@
|
|
166
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
167
167
|
|
|
168
168
|
- name: 'Test Python project [PYTEST]'
|
|
169
169
|
# yamllint disable-line rule:line-length
|
|
170
|
-
uses: lfreleng-actions/python-test-action@
|
|
170
|
+
uses: lfreleng-actions/python-test-action@aa753462f090101dcb0c4708e9499f55e276e373 # v1.1.2
|
|
171
171
|
with:
|
|
172
172
|
python_version: "${{ matrix.python-version }}"
|
|
173
173
|
|
|
@@ -185,16 +185,16 @@ jobs:
|
|
|
185
185
|
steps:
|
|
186
186
|
# Harden the runner used by this workflow
|
|
187
187
|
# yamllint disable-line rule:line-length
|
|
188
|
-
- uses: step-security/harden-runner@
|
|
188
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
189
189
|
with:
|
|
190
190
|
egress-policy: 'audit'
|
|
191
191
|
|
|
192
192
|
# yamllint disable-line rule:line-length
|
|
193
|
-
- uses: actions/checkout@
|
|
193
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
194
194
|
|
|
195
195
|
- name: 'Audit Python project'
|
|
196
196
|
# yamllint disable-line rule:line-length
|
|
197
|
-
uses: lfreleng-actions/python-audit-action@
|
|
197
|
+
uses: lfreleng-actions/python-audit-action@78b00a589ced3e8f70d0cd03fd592b8c92298dfd # v0.3.0
|
|
198
198
|
with:
|
|
199
199
|
python_version: "${{ matrix.python-version }}"
|
|
200
200
|
permit_fail: "${{ vars.NO_BLOCK_AUDIT_FAIL == 'true' }}"
|
|
@@ -209,12 +209,12 @@ jobs:
|
|
|
209
209
|
steps:
|
|
210
210
|
# Harden the runner used by this workflow
|
|
211
211
|
# yamllint disable-line rule:line-length
|
|
212
|
-
- uses: step-security/harden-runner@
|
|
212
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
213
213
|
with:
|
|
214
214
|
egress-policy: 'audit'
|
|
215
215
|
|
|
216
216
|
# yamllint disable-line rule:line-length
|
|
217
|
-
- uses: actions/checkout@
|
|
217
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
218
218
|
|
|
219
219
|
- name: "Generate SBOM"
|
|
220
220
|
id: sbom
|
|
@@ -226,7 +226,7 @@ jobs:
|
|
|
226
226
|
|
|
227
227
|
- name: "Upload SBOM artifacts"
|
|
228
228
|
# yamllint disable-line rule:line-length
|
|
229
|
-
uses: actions/upload-artifact@
|
|
229
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
230
230
|
with:
|
|
231
231
|
name: sbom-files
|
|
232
232
|
path: |
|
|
@@ -264,7 +264,7 @@ jobs:
|
|
|
264
264
|
|
|
265
265
|
- name: "Upload Grype scan results"
|
|
266
266
|
# yamllint disable-line rule:line-length
|
|
267
|
-
uses: actions/upload-artifact@
|
|
267
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
268
268
|
if: always()
|
|
269
269
|
with:
|
|
270
270
|
name: grype-scan-results
|
|
@@ -331,7 +331,7 @@ jobs:
|
|
|
331
331
|
steps:
|
|
332
332
|
# Harden the runner used by this workflow
|
|
333
333
|
# yamllint disable-line rule:line-length
|
|
334
|
-
- uses: step-security/harden-runner@
|
|
334
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
335
335
|
with:
|
|
336
336
|
egress-policy: 'audit'
|
|
337
337
|
|
|
@@ -356,22 +356,22 @@ jobs:
|
|
|
356
356
|
steps:
|
|
357
357
|
# Harden the runner used by this workflow
|
|
358
358
|
# yamllint disable-line rule:line-length
|
|
359
|
-
- uses: step-security/harden-runner@
|
|
359
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
360
360
|
with:
|
|
361
361
|
egress-policy: 'audit'
|
|
362
362
|
|
|
363
363
|
# yamllint disable-line rule:line-length
|
|
364
|
-
- uses: actions/checkout@
|
|
364
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
365
365
|
|
|
366
366
|
# Set up Docker Buildx
|
|
367
367
|
- name: Set up Docker Buildx
|
|
368
368
|
# yamllint disable-line rule:line-length
|
|
369
|
-
uses: docker/setup-buildx-action@
|
|
369
|
+
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
|
370
370
|
|
|
371
371
|
# Login to GitHub Container Registry
|
|
372
372
|
- name: Login to Container Registry
|
|
373
373
|
# yamllint disable-line rule:line-length
|
|
374
|
-
uses: docker/login-action@
|
|
374
|
+
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
|
375
375
|
with:
|
|
376
376
|
registry: ${{ env.REGISTRY }}
|
|
377
377
|
username: ${{ github.actor }}
|
|
@@ -381,7 +381,7 @@ jobs:
|
|
|
381
381
|
- name: Extract metadata
|
|
382
382
|
id: meta
|
|
383
383
|
# yamllint disable-line rule:line-length
|
|
384
|
-
uses: docker/metadata-action@
|
|
384
|
+
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
|
385
385
|
with:
|
|
386
386
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
387
387
|
tags: |
|
|
@@ -398,7 +398,7 @@ jobs:
|
|
|
398
398
|
# Build and push image with comprehensive caching
|
|
399
399
|
- name: Build and push Docker image
|
|
400
400
|
# yamllint disable-line rule:line-length
|
|
401
|
-
uses: docker/build-push-action@
|
|
401
|
+
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
|
402
402
|
with:
|
|
403
403
|
context: .
|
|
404
404
|
file: ./docker/Containerfile
|
|
@@ -438,7 +438,7 @@ jobs:
|
|
|
438
438
|
steps:
|
|
439
439
|
# Harden the runner used by this workflow
|
|
440
440
|
# yamllint disable-line rule:line-length
|
|
441
|
-
- uses: step-security/harden-runner@
|
|
441
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
442
442
|
with:
|
|
443
443
|
egress-policy: 'audit'
|
|
444
444
|
|
|
@@ -476,12 +476,12 @@ jobs:
|
|
|
476
476
|
steps:
|
|
477
477
|
# Harden the runner used by this workflow
|
|
478
478
|
# yamllint disable-line rule:line-length
|
|
479
|
-
- uses: step-security/harden-runner@
|
|
479
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
480
480
|
with:
|
|
481
481
|
egress-policy: 'audit'
|
|
482
482
|
|
|
483
483
|
# yamllint disable-line rule:line-length
|
|
484
|
-
- uses: actions/checkout@
|
|
484
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
485
485
|
|
|
486
486
|
- name: 'Download build artefacts'
|
|
487
487
|
# yamllint disable-line rule:line-length
|
|
@@ -514,12 +514,12 @@ jobs:
|
|
|
514
514
|
steps:
|
|
515
515
|
# Harden the runner used by this workflow
|
|
516
516
|
# yamllint disable-line rule:line-length
|
|
517
|
-
- uses: step-security/harden-runner@
|
|
517
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
518
518
|
with:
|
|
519
519
|
egress-policy: 'audit'
|
|
520
520
|
|
|
521
521
|
# yamllint disable-line rule:line-length
|
|
522
|
-
- uses: actions/checkout@
|
|
522
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
523
523
|
|
|
524
524
|
- name: 'Check if release is already promoted'
|
|
525
525
|
id: 'check-promoted'
|
|
@@ -75,21 +75,21 @@ jobs:
|
|
|
75
75
|
steps:
|
|
76
76
|
# Harden the runner
|
|
77
77
|
- name: Harden Runner
|
|
78
|
-
uses: step-security/harden-runner@
|
|
78
|
+
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
79
79
|
with:
|
|
80
80
|
egress-policy: audit
|
|
81
81
|
|
|
82
82
|
- name: Checkout repository
|
|
83
|
-
uses: actions/checkout@
|
|
83
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
84
84
|
|
|
85
85
|
# Set up Docker Buildx with caching
|
|
86
86
|
- name: Set up Docker Buildx
|
|
87
|
-
uses: docker/setup-buildx-action@
|
|
87
|
+
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
|
88
88
|
|
|
89
89
|
# Build Docker image with registry cache
|
|
90
90
|
- name: Build Docker image
|
|
91
91
|
id: build
|
|
92
|
-
uses: docker/build-push-action@
|
|
92
|
+
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
|
93
93
|
with:
|
|
94
94
|
context: .
|
|
95
95
|
file: ./docker/Containerfile
|
|
@@ -127,7 +127,7 @@ jobs:
|
|
|
127
127
|
|
|
128
128
|
steps:
|
|
129
129
|
- name: Checkout repository
|
|
130
|
-
uses: actions/checkout@
|
|
130
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
131
131
|
|
|
132
132
|
# Set up go-httpbin for testing
|
|
133
133
|
- name: Setup go-httpbin HTTPS service
|
|
@@ -202,20 +202,20 @@ jobs:
|
|
|
202
202
|
steps:
|
|
203
203
|
# Harden the runner
|
|
204
204
|
- name: Harden Runner
|
|
205
|
-
uses: step-security/harden-runner@
|
|
205
|
+
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
206
206
|
with:
|
|
207
207
|
egress-policy: audit
|
|
208
208
|
|
|
209
209
|
- name: Checkout repository
|
|
210
|
-
uses: actions/checkout@
|
|
210
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
211
211
|
|
|
212
212
|
# Set up Docker Buildx
|
|
213
213
|
- name: Set up Docker Buildx
|
|
214
|
-
uses: docker/setup-buildx-action@
|
|
214
|
+
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
|
215
215
|
|
|
216
216
|
# Login to GitHub Container Registry
|
|
217
217
|
- name: Login to Container Registry
|
|
218
|
-
uses: docker/login-action@
|
|
218
|
+
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
|
219
219
|
with:
|
|
220
220
|
registry: ${{ env.REGISTRY }}
|
|
221
221
|
username: ${{ github.actor }}
|
|
@@ -224,7 +224,7 @@ jobs:
|
|
|
224
224
|
# Extract metadata for tags and labels
|
|
225
225
|
- name: Extract metadata
|
|
226
226
|
id: meta
|
|
227
|
-
uses: docker/metadata-action@
|
|
227
|
+
uses: docker/metadata-action@80c7e94dd9b9319bd5eb7a0e0fe9291e23a2a2e9 # v6.1.0
|
|
228
228
|
with:
|
|
229
229
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
230
230
|
tags: |
|
|
@@ -238,7 +238,7 @@ jobs:
|
|
|
238
238
|
|
|
239
239
|
# Build and push image with comprehensive caching
|
|
240
240
|
- name: Build and push Docker image
|
|
241
|
-
uses: docker/build-push-action@
|
|
241
|
+
uses: docker/build-push-action@f9f3042f7e2789586610d6e8b85c8f03e5195baf # v7.2.0
|
|
242
242
|
with:
|
|
243
243
|
context: .
|
|
244
244
|
file: ./docker/Containerfile
|
|
@@ -279,11 +279,11 @@ jobs:
|
|
|
279
279
|
GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
280
280
|
steps:
|
|
281
281
|
# Harden the runner used by this workflow
|
|
282
|
-
- uses: step-security/harden-runner@
|
|
282
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
283
283
|
with:
|
|
284
284
|
egress-policy: 'audit'
|
|
285
285
|
|
|
286
|
-
- uses: actions/checkout@
|
|
286
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
287
287
|
|
|
288
288
|
# Setup Python with enhanced caching
|
|
289
289
|
- name: Set up Python
|
|
@@ -297,7 +297,7 @@ jobs:
|
|
|
297
297
|
|
|
298
298
|
# Cache UV dependencies
|
|
299
299
|
- name: Cache UV dependencies
|
|
300
|
-
uses: actions/cache@
|
|
300
|
+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
301
301
|
with:
|
|
302
302
|
path: |
|
|
303
303
|
~/.cache/uv
|
|
@@ -310,7 +310,7 @@ jobs:
|
|
|
310
310
|
- name: 'Build Python project'
|
|
311
311
|
id: python-build
|
|
312
312
|
# yamllint disable-line rule:line-length
|
|
313
|
-
uses: lfreleng-actions/python-build-action@
|
|
313
|
+
uses: lfreleng-actions/python-build-action@5f570d5d17a7315074a824a91c6a705b6fc5c7dd # v1.1.2
|
|
314
314
|
|
|
315
315
|
# Python tests with matrix strategy (after container pipeline)
|
|
316
316
|
python-tests:
|
|
@@ -326,11 +326,11 @@ jobs:
|
|
|
326
326
|
timeout-minutes: 12
|
|
327
327
|
steps:
|
|
328
328
|
# Harden the runner used by this workflow
|
|
329
|
-
- uses: step-security/harden-runner@
|
|
329
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
330
330
|
with:
|
|
331
331
|
egress-policy: audit
|
|
332
332
|
|
|
333
|
-
- uses: actions/checkout@
|
|
333
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
334
334
|
|
|
335
335
|
# Setup Python with comprehensive caching
|
|
336
336
|
- name: Set up Python
|
|
@@ -344,7 +344,7 @@ jobs:
|
|
|
344
344
|
|
|
345
345
|
# Cache UV test dependencies
|
|
346
346
|
- name: Cache UV test dependencies
|
|
347
|
-
uses: actions/cache@
|
|
347
|
+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
348
348
|
with:
|
|
349
349
|
path: |
|
|
350
350
|
~/.cache/uv
|
|
@@ -357,7 +357,7 @@ jobs:
|
|
|
357
357
|
|
|
358
358
|
- name: "Python tests [pytest] ${{ matrix.python-version }}"
|
|
359
359
|
# yamllint disable-line rule:line-length
|
|
360
|
-
uses: lfreleng-actions/python-test-action@
|
|
360
|
+
uses: lfreleng-actions/python-test-action@aa753462f090101dcb0c4708e9499f55e276e373 # v1.1.2
|
|
361
361
|
with:
|
|
362
362
|
python_version: ${{ matrix.python-version }}
|
|
363
363
|
|
|
@@ -375,11 +375,11 @@ jobs:
|
|
|
375
375
|
timeout-minutes: 10
|
|
376
376
|
steps:
|
|
377
377
|
# Harden the runner used by this workflow
|
|
378
|
-
- uses: step-security/harden-runner@
|
|
378
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
379
379
|
with:
|
|
380
380
|
egress-policy: 'audit'
|
|
381
381
|
|
|
382
|
-
- uses: actions/checkout@
|
|
382
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
383
383
|
|
|
384
384
|
# Setup Python with comprehensive caching
|
|
385
385
|
- name: Set up Python
|
|
@@ -393,7 +393,7 @@ jobs:
|
|
|
393
393
|
|
|
394
394
|
# Cache UV audit dependencies
|
|
395
395
|
- name: Cache UV audit dependencies
|
|
396
|
-
uses: actions/cache@
|
|
396
|
+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
397
397
|
with:
|
|
398
398
|
path: |
|
|
399
399
|
~/.cache/uv
|
|
@@ -406,7 +406,7 @@ jobs:
|
|
|
406
406
|
|
|
407
407
|
- name: "Audit dependencies ${{ matrix.python-version }}"
|
|
408
408
|
# yamllint disable-line rule:line-length
|
|
409
|
-
uses: lfreleng-actions/python-audit-action@
|
|
409
|
+
uses: lfreleng-actions/python-audit-action@78b00a589ced3e8f70d0cd03fd592b8c92298dfd # v0.3.0
|
|
410
410
|
with:
|
|
411
411
|
python_version: "${{ matrix.python-version }}"
|
|
412
412
|
|
|
@@ -422,11 +422,11 @@ jobs:
|
|
|
422
422
|
timeout-minutes: 15
|
|
423
423
|
steps:
|
|
424
424
|
# Harden the runner used by this workflow
|
|
425
|
-
- uses: step-security/harden-runner@
|
|
425
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
426
426
|
with:
|
|
427
427
|
egress-policy: 'audit'
|
|
428
428
|
|
|
429
|
-
- uses: actions/checkout@
|
|
429
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
430
430
|
|
|
431
431
|
# Setup Python with comprehensive caching
|
|
432
432
|
- name: Set up Python
|
|
@@ -440,7 +440,7 @@ jobs:
|
|
|
440
440
|
|
|
441
441
|
# Cache UV CLI dependencies
|
|
442
442
|
- name: Cache UV CLI dependencies
|
|
443
|
-
uses: actions/cache@
|
|
443
|
+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
444
444
|
with:
|
|
445
445
|
path: |
|
|
446
446
|
~/.cache/uv
|
|
@@ -451,7 +451,7 @@ jobs:
|
|
|
451
451
|
uv-cli-${{ runner.os }}-
|
|
452
452
|
|
|
453
453
|
- name: Install UV
|
|
454
|
-
uses: astral-sh/setup-uv@
|
|
454
|
+
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
455
455
|
|
|
456
456
|
- name: Install project dependencies
|
|
457
457
|
run: |
|
|
@@ -543,11 +543,11 @@ jobs:
|
|
|
543
543
|
timeout-minutes: 10
|
|
544
544
|
steps:
|
|
545
545
|
# Harden the runner used by this workflow
|
|
546
|
-
- uses: step-security/harden-runner@
|
|
546
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
547
547
|
with:
|
|
548
548
|
egress-policy: 'audit'
|
|
549
549
|
|
|
550
|
-
- uses: actions/checkout@
|
|
550
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
551
551
|
|
|
552
552
|
# Start go-httpbin service for testing
|
|
553
553
|
- name: Setup go-httpbin service
|
|
@@ -602,11 +602,11 @@ jobs:
|
|
|
602
602
|
timeout-minutes: 10
|
|
603
603
|
steps:
|
|
604
604
|
# Harden the runner used by this workflow
|
|
605
|
-
- uses: step-security/harden-runner@
|
|
605
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
606
606
|
with:
|
|
607
607
|
egress-policy: 'audit'
|
|
608
608
|
|
|
609
|
-
- uses: actions/checkout@
|
|
609
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
610
610
|
|
|
611
611
|
# Start go-httpbin service for testing
|
|
612
612
|
- name: Setup go-httpbin service
|
|
@@ -715,11 +715,11 @@ jobs:
|
|
|
715
715
|
steps:
|
|
716
716
|
# Harden the runner used by this workflow
|
|
717
717
|
- name: Harden Runner
|
|
718
|
-
uses: step-security/harden-runner@
|
|
718
|
+
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
719
719
|
with:
|
|
720
720
|
egress-policy: audit
|
|
721
721
|
|
|
722
|
-
- uses: actions/checkout@
|
|
722
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
723
723
|
|
|
724
724
|
# Start go-httpbin service for testing
|
|
725
725
|
- name: Setup go-httpbin service
|
|
@@ -784,19 +784,19 @@ jobs:
|
|
|
784
784
|
steps:
|
|
785
785
|
# Harden the runner used by this workflow
|
|
786
786
|
- name: Harden Runner
|
|
787
|
-
uses: step-security/harden-runner@
|
|
787
|
+
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
788
788
|
with:
|
|
789
789
|
egress-policy: audit
|
|
790
790
|
|
|
791
|
-
- uses: actions/checkout@
|
|
791
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
792
792
|
|
|
793
793
|
# Set up Docker Buildx
|
|
794
794
|
- name: Set up Docker Buildx
|
|
795
|
-
uses: docker/setup-buildx-action@
|
|
795
|
+
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
|
|
796
796
|
|
|
797
797
|
# Login to Container Registry
|
|
798
798
|
- name: Login to Container Registry
|
|
799
|
-
uses: docker/login-action@
|
|
799
|
+
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4.2.0
|
|
800
800
|
with:
|
|
801
801
|
registry: ${{ env.REGISTRY }}
|
|
802
802
|
username: ${{ github.actor }}
|
|
@@ -854,12 +854,12 @@ jobs:
|
|
|
854
854
|
steps:
|
|
855
855
|
# Harden the runner
|
|
856
856
|
- name: Harden Runner
|
|
857
|
-
uses: step-security/harden-runner@
|
|
857
|
+
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
858
858
|
with:
|
|
859
859
|
egress-policy: audit
|
|
860
860
|
|
|
861
861
|
- name: Checkout repository
|
|
862
|
-
uses: actions/checkout@
|
|
862
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
863
863
|
|
|
864
864
|
# Setup Python with caching
|
|
865
865
|
- name: Set up Python
|
|
@@ -872,7 +872,7 @@ jobs:
|
|
|
872
872
|
|
|
873
873
|
# Cache UV dependencies
|
|
874
874
|
- name: Cache UV dependencies
|
|
875
|
-
uses: actions/cache@
|
|
875
|
+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
876
876
|
with:
|
|
877
877
|
path: |
|
|
878
878
|
./.venv
|
|
@@ -885,7 +885,7 @@ jobs:
|
|
|
885
885
|
|
|
886
886
|
# Install UV
|
|
887
887
|
- name: Install UV
|
|
888
|
-
uses: astral-sh/setup-uv@
|
|
888
|
+
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
889
889
|
|
|
890
890
|
# Install project dependencies with dev extras (includes bandit)
|
|
891
891
|
- name: Install project dependencies
|
|
@@ -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@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
|
|
29
29
|
permissions:
|
|
30
30
|
security-events: write
|
|
31
31
|
# required to fetch internal or private CodeQL packs
|
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
openssf-scorecard:
|
|
33
33
|
name: "OpenSSF Scorecard"
|
|
34
34
|
# yamllint disable-line rule:line-length
|
|
35
|
-
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-openssf-scorecard.yaml@
|
|
35
|
+
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-openssf-scorecard.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
|
|
36
36
|
permissions:
|
|
37
37
|
# Needed to upload the results to code-scanning dashboard.
|
|
38
38
|
security-events: write
|
|
@@ -27,9 +27,9 @@ jobs:
|
|
|
27
27
|
steps:
|
|
28
28
|
# Harden the runner used by this workflow
|
|
29
29
|
# yamllint disable-line rule:line-length
|
|
30
|
-
- uses: step-security/harden-runner@
|
|
30
|
+
- uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
|
31
31
|
with:
|
|
32
32
|
egress-policy: 'audit'
|
|
33
33
|
|
|
34
34
|
# yamllint disable-line rule:line-length
|
|
35
|
-
- uses: release-drafter/release-drafter@
|
|
35
|
+
- uses: release-drafter/release-drafter@693d20e7c1ce1a81d3a41962f85914253b518449 # v7.3.1
|
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
sonatype-lifecycle:
|
|
33
33
|
name: "Sonatype Lifecycle"
|
|
34
34
|
# yamllint disable-line rule:line-length
|
|
35
|
-
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonatype-lifecycle.yaml@
|
|
35
|
+
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonatype-lifecycle.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
|
|
36
36
|
secrets:
|
|
37
37
|
NEXUS_IQ_PASSWORD: ${{ secrets.NEXUS_IQ_PASSWORD }}
|
|
38
38
|
|
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
sonarqube-cloud:
|
|
41
41
|
name: "SonarQube Cloud"
|
|
42
42
|
# yamllint disable-line rule:line-length
|
|
43
|
-
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonarqube-cloud.yaml@
|
|
43
|
+
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-sonarqube-cloud.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
|
|
44
44
|
permissions:
|
|
45
45
|
# Needed to upload the results to code-scanning dashboard.
|
|
46
46
|
security-events: write
|
|
@@ -24,6 +24,6 @@ jobs:
|
|
|
24
24
|
verify:
|
|
25
25
|
name: Check GitHub Actions
|
|
26
26
|
# yamllint disable-line rule:line-length
|
|
27
|
-
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-verify-github-actions.yaml@
|
|
27
|
+
uses: lfit/releng-reusable-workflows/.github/workflows/reuse-verify-github-actions.yaml@b2adc11cd90f0ca72a34202589a06d374b5d8366 # v0.5.0
|
|
28
28
|
permissions:
|
|
29
29
|
contents: read
|
|
@@ -52,7 +52,7 @@ repos:
|
|
|
52
52
|
args: [--config-file=.yamllint]
|
|
53
53
|
|
|
54
54
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
55
|
-
rev:
|
|
55
|
+
rev: 3b3f7c3f57fe9925356faf5fe6230835138be230 # frozen: v0.15.17
|
|
56
56
|
hooks:
|
|
57
57
|
- id: ruff
|
|
58
58
|
# Currently only src and tests contain Python files
|
|
@@ -65,7 +65,7 @@ repos:
|
|
|
65
65
|
files: ^(src|tests)/.+\.py$
|
|
66
66
|
|
|
67
67
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
68
|
-
rev:
|
|
68
|
+
rev: d2823d321df3af8f878f7ee3414dc94d037145b9 # frozen: v2.1.0
|
|
69
69
|
hooks:
|
|
70
70
|
- id: mypy
|
|
71
71
|
additional_dependencies: [types-pycurl]
|
|
@@ -116,18 +116,18 @@ repos:
|
|
|
116
116
|
args: ["--ignore-words=.codespell"]
|
|
117
117
|
|
|
118
118
|
- repo: https://github.com/DetachHead/basedpyright-prek-mirror
|
|
119
|
-
rev:
|
|
119
|
+
rev: 5f6f2cb9fa8aec15105f77fd21e8dfe29838b16d # frozen: 1.39.8
|
|
120
120
|
hooks:
|
|
121
121
|
- id: basedpyright
|
|
122
122
|
|
|
123
123
|
- repo: https://github.com/modeseven-lfit/gha-workflow-linter
|
|
124
|
-
rev:
|
|
124
|
+
rev: 1a307fd9eed98268b11300ab86b1a107e1d3d1ae # frozen: v1.1.1
|
|
125
125
|
hooks:
|
|
126
126
|
- id: gha-workflow-linter
|
|
127
127
|
args: [lint, .]
|
|
128
128
|
|
|
129
129
|
- repo: https://github.com/python-jsonschema/check-jsonschema.git
|
|
130
|
-
rev:
|
|
130
|
+
rev: 8ef330cbb7204d388aa7a620f9549bcea8009663 # frozen: 0.37.3
|
|
131
131
|
hooks:
|
|
132
132
|
# - id: check-github-actions
|
|
133
133
|
- id: check-github-workflows
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: http-api-tool
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.7
|
|
4
4
|
Summary: A Python HTTP/HTTPS API testing tool for GitHub Actions and CLI usage
|
|
5
5
|
Project-URL: Homepage, https://github.com/lfreleng-actions/http-api-tool-docker
|
|
6
6
|
Project-URL: Repository, https://github.com/lfreleng-actions/http-api-tool-docker
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
SPDX-FileCopyrightText: 2026 The Linux Foundation
|
|
4
|
+
-->
|
|
5
|
+
|
|
6
|
+
# Security Policy
|
|
7
|
+
|
|
8
|
+
This document describes the security policy for this repository, including
|
|
9
|
+
which versions receive security updates and how to report vulnerabilities.
|
|
10
|
+
|
|
11
|
+
## Supported Versions
|
|
12
|
+
|
|
13
|
+
Maintainers develop and merge security fixes on the default branch
|
|
14
|
+
(`main`) and publish those fixes in the latest tagged release. Older
|
|
15
|
+
releases and tags do not receive security updates. Users should track
|
|
16
|
+
the latest tagged release for security patches.
|
|
17
|
+
|
|
18
|
+
| Version | Supported |
|
|
19
|
+
| --------------------- | ------------------ |
|
|
20
|
+
| Latest tagged release | :white_check_mark: |
|
|
21
|
+
| Older releases/tags | :x: |
|
|
22
|
+
|
|
23
|
+
## Reporting a Vulnerability
|
|
24
|
+
|
|
25
|
+
If you discover a security vulnerability in this project, please report it
|
|
26
|
+
**privately** so that maintainers can investigate and release a fix before
|
|
27
|
+
the issue becomes publicly known.
|
|
28
|
+
|
|
29
|
+
### Preferred: GitHub Private Vulnerability Reporting
|
|
30
|
+
|
|
31
|
+
Use GitHub's private vulnerability reporting feature:
|
|
32
|
+
|
|
33
|
+
1. Navigate to the **Security** tab of this repository.
|
|
34
|
+
2. Click **Report a vulnerability**.
|
|
35
|
+
3. Provide as much detail as possible (see below).
|
|
36
|
+
|
|
37
|
+
This creates a private advisory visible to maintainers.
|
|
38
|
+
|
|
39
|
+
### Alternative: Email
|
|
40
|
+
|
|
41
|
+
If you cannot use GitHub's private reporting, send an email to the Linux
|
|
42
|
+
Foundation Release Engineering team at:
|
|
43
|
+
|
|
44
|
+
- **<releng@linuxfoundation.org>**
|
|
45
|
+
|
|
46
|
+
Please do **not** report security vulnerabilities through public GitHub
|
|
47
|
+
issues, discussions, or pull requests.
|
|
48
|
+
|
|
49
|
+
### What to Include
|
|
50
|
+
|
|
51
|
+
To help maintainers triage and resolve the report, please include:
|
|
52
|
+
|
|
53
|
+
- A clear description of the vulnerability and its potential impact.
|
|
54
|
+
- Steps to reproduce the issue (proof-of-concept code or commands).
|
|
55
|
+
- The affected version(s), commit SHA, or release tag.
|
|
56
|
+
- Any known mitigations or workarounds.
|
|
57
|
+
- Your name and contact details for follow-up (optional).
|
|
58
|
+
|
|
59
|
+
## Response Process
|
|
60
|
+
|
|
61
|
+
Maintainers will acknowledge receipt of vulnerability reports within
|
|
62
|
+
**5 business days**. We aim to:
|
|
63
|
+
|
|
64
|
+
1. Confirm the vulnerability and determine its severity.
|
|
65
|
+
2. Develop and test a fix in a private branch or advisory.
|
|
66
|
+
3. Coordinate a disclosure timeline with the reporter.
|
|
67
|
+
4. Release a patched version and publish a security advisory.
|
|
68
|
+
|
|
69
|
+
We follow a responsible disclosure process and credit reporters in the
|
|
70
|
+
published advisory unless they request to remain anonymous.
|
|
71
|
+
|
|
72
|
+
## Scope
|
|
73
|
+
|
|
74
|
+
This policy covers the source code, configuration, and documentation
|
|
75
|
+
in this repository. Please report vulnerabilities in upstream
|
|
76
|
+
dependencies to their respective maintainers; this project will update
|
|
77
|
+
affected dependencies once fixes become available.
|
|
@@ -151,16 +151,22 @@ runs:
|
|
|
151
151
|
# Validate deploy input
|
|
152
152
|
- name: Validate deploy input
|
|
153
153
|
shell: bash
|
|
154
|
+
env:
|
|
155
|
+
INPUT_DEPLOY: ${{ inputs.deploy }}
|
|
154
156
|
run: |
|
|
155
|
-
if [[ "$
|
|
156
|
-
|
|
157
|
+
if [[ "$INPUT_DEPLOY" != "uvx" && "$INPUT_DEPLOY" != "docker" ]]; then
|
|
158
|
+
# Strip CR/LF from the user value so it cannot inject additional
|
|
159
|
+
# workflow commands/annotations into the log command stream.
|
|
160
|
+
deploy_safe="${INPUT_DEPLOY//$'\n'/}"
|
|
161
|
+
deploy_safe="${deploy_safe//$'\r'/}"
|
|
162
|
+
echo "::error::Invalid deploy input: '$deploy_safe'. Must be 'uvx' or 'docker'."
|
|
157
163
|
exit 1
|
|
158
164
|
fi
|
|
159
165
|
|
|
160
166
|
# UVX deployment path (default)
|
|
161
167
|
- name: Install uv for uvx deployment
|
|
162
168
|
if: inputs.deploy == 'uvx'
|
|
163
|
-
uses: astral-sh/setup-uv@
|
|
169
|
+
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
164
170
|
with:
|
|
165
171
|
enable-cache: false
|
|
166
172
|
ignore-empty-workdir: true
|
|
@@ -193,11 +199,12 @@ runs:
|
|
|
193
199
|
INPUT_CONNECTION_REUSE: ${{ inputs.connection_reuse }}
|
|
194
200
|
INPUT_DEBUG: ${{ inputs.debug }}
|
|
195
201
|
INPUT_FAIL_ON_TIMEOUT: ${{ inputs.fail_on_timeout }}
|
|
202
|
+
INPUT_USE_LOCAL_CODE: ${{ inputs.use_local_code }}
|
|
196
203
|
GITHUB_ACTIONS: 'true'
|
|
197
204
|
GITHUB_OUTPUT: ${{ env.GITHUB_OUTPUT }}
|
|
198
205
|
GITHUB_STEP_SUMMARY: ${{ env.GITHUB_STEP_SUMMARY }}
|
|
199
206
|
run: |
|
|
200
|
-
if [[ "$
|
|
207
|
+
if [[ "$INPUT_USE_LOCAL_CODE" == "true" ]]; then
|
|
201
208
|
if ! command -v http-api-tool &> /dev/null; then
|
|
202
209
|
echo "::error::http-api-tool is not installed." \
|
|
203
210
|
"Please install it first by running 'uv pip install --system -e .'" \
|
|
@@ -257,12 +264,42 @@ runs:
|
|
|
257
264
|
INPUT_FAIL_ON_TIMEOUT: ${{ inputs.fail_on_timeout }}
|
|
258
265
|
GITHUB_ACTIONS: 'true'
|
|
259
266
|
run: |
|
|
260
|
-
# Build volume mounts
|
|
261
|
-
|
|
267
|
+
# Build volume mounts as an array so each '-v' entry is passed as a
|
|
268
|
+
# single quoted argument and cannot inject extra docker flags/mounts.
|
|
269
|
+
VOLUME_MOUNTS=(-v "$GITHUB_OUTPUT:$GITHUB_OUTPUT")
|
|
262
270
|
|
|
263
271
|
# Mount CA bundle if specified
|
|
264
|
-
if [ -n "$
|
|
265
|
-
|
|
272
|
+
if [ -n "$INPUT_CA_BUNDLE_PATH" ] && [ -f "$INPUT_CA_BUNDLE_PATH" ]; then
|
|
273
|
+
# Reject traversal, shell metacharacters, whitespace, and ':'.
|
|
274
|
+
# ':' is the docker volume field separator, so allowing it would let
|
|
275
|
+
# a caller append extra mount options (e.g. ':rw') or fields;
|
|
276
|
+
# whitespace would break argument boundaries.
|
|
277
|
+
if printf '%s' "$INPUT_CA_BUNDLE_PATH" \
|
|
278
|
+
| grep -qE '\.\.(/|$)|[;|&$`:[:space:]]'; then
|
|
279
|
+
echo "::error::ca_bundle_path contains invalid characters"
|
|
280
|
+
exit 1
|
|
281
|
+
fi
|
|
282
|
+
# Constrain to an allowlist of safe roots: the workspace, the runner
|
|
283
|
+
# temp dir, or standard system CA-certificate locations. This blocks
|
|
284
|
+
# mounting arbitrary sensitive host files (e.g. /etc/shadow) while
|
|
285
|
+
# still supporting genuine CA bundles.
|
|
286
|
+
ca_real="$(readlink -f -- "$INPUT_CA_BUNDLE_PATH")"
|
|
287
|
+
ca_allowed=false
|
|
288
|
+
for root in "$GITHUB_WORKSPACE" "$RUNNER_TEMP" \
|
|
289
|
+
/etc/ssl /etc/pki /etc/ca-certificates \
|
|
290
|
+
/usr/share/ca-certificates /usr/local/share/ca-certificates; do
|
|
291
|
+
[ -n "$root" ] || continue
|
|
292
|
+
root_real="$(readlink -f -- "$root" 2>/dev/null)" || continue
|
|
293
|
+
case "$ca_real/" in
|
|
294
|
+
"$root_real"/*) ca_allowed=true; break ;;
|
|
295
|
+
esac
|
|
296
|
+
done
|
|
297
|
+
if [ "$ca_allowed" != true ]; then
|
|
298
|
+
echo "::error::ca_bundle_path must be within the workspace, the" \
|
|
299
|
+
"runner temp dir, or a standard CA-certificate location"
|
|
300
|
+
exit 1
|
|
301
|
+
fi
|
|
302
|
+
VOLUME_MOUNTS+=(-v "${ca_real}:${ca_real}:ro")
|
|
266
303
|
fi
|
|
267
304
|
|
|
268
305
|
docker run --rm \
|
|
@@ -292,7 +329,7 @@ runs:
|
|
|
292
329
|
-e INPUT_FAIL_ON_TIMEOUT \
|
|
293
330
|
-e GITHUB_ACTIONS \
|
|
294
331
|
-e GITHUB_OUTPUT \
|
|
295
|
-
$VOLUME_MOUNTS \
|
|
332
|
+
"${VOLUME_MOUNTS[@]}" \
|
|
296
333
|
http-api-tool:${{ github.run_id }}
|
|
297
334
|
|
|
298
335
|
- name: Cleanup Docker image
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# SPDX-FileCopyrightText: 2025 The Linux Foundation
|
|
3
3
|
|
|
4
4
|
# UV version and checksums for secure installation with architecture-aware download
|
|
5
|
-
# uv 0.
|
|
5
|
+
# uv 0.11.20 - https://github.com/astral-sh/uv/releases/tag/0.11.20
|
|
6
6
|
#
|
|
7
7
|
# This Containerfile automatically detects the target architecture (amd64/arm64) and
|
|
8
8
|
# downloads the appropriate uv binary with checksum validation to prevent MITM
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
# To override the version: docker build --build-arg UV_VERSION=0.8.3 .
|
|
12
12
|
# Supports: linux/amd64 (Intel/AMD x86_64) and linux/arm64 (Apple Silicon/ARM64)
|
|
13
13
|
ARG VERSION=0.0.0
|
|
14
|
-
ARG UV_VERSION=0.
|
|
15
|
-
ARG UV_CHECKSUM_AMD64=
|
|
16
|
-
ARG UV_CHECKSUM_ARM64=
|
|
14
|
+
ARG UV_VERSION=0.11.20
|
|
15
|
+
ARG UV_CHECKSUM_AMD64=5de211d9278af365497d387e25316907b3b4a9f25b4476dd6dbf238d6f85cff3
|
|
16
|
+
ARG UV_CHECKSUM_ARM64=c8b5b7f9c804b640da0bb66cddddf0a00ce971f64d8076622d70bd141bc80857
|
|
17
17
|
|
|
18
18
|
# Cache bust: Migrated from PDM to UV - change this value to force rebuild
|
|
19
19
|
ARG CACHE_BUST=2025-12-11-uv-migration
|
|
@@ -113,7 +113,7 @@ markers = [
|
|
|
113
113
|
]
|
|
114
114
|
|
|
115
115
|
[tool.coverage.run]
|
|
116
|
-
source = ["
|
|
116
|
+
source = ["http_api_tool"]
|
|
117
117
|
omit = [
|
|
118
118
|
"*/tests/*",
|
|
119
119
|
"*/test_*",
|
|
@@ -191,3 +191,9 @@ pythonVersion = "3.10"
|
|
|
191
191
|
typeCheckingMode = "standard"
|
|
192
192
|
reportMissingImports = "warning"
|
|
193
193
|
reportUninitializedInstanceVariable = "warning"
|
|
194
|
+
|
|
195
|
+
[tool.uv]
|
|
196
|
+
# Supply-chain cooldown: do not resolve anything published in the last
|
|
197
|
+
# 7 days (rolling window; uv records it as a relative span in uv.lock).
|
|
198
|
+
# Requires uv >= 0.9.17 for the relative-duration ("7 days") form.
|
|
199
|
+
exclude-newer = "7 days"
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.7'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 7)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -509,7 +509,8 @@ class HTTPAPITester:
|
|
|
509
509
|
}
|
|
510
510
|
|
|
511
511
|
except pycurl.error as e:
|
|
512
|
-
error_code
|
|
512
|
+
error_code = e.args[0] if len(e.args) > 0 else 0
|
|
513
|
+
error_msg = e.args[1] if len(e.args) > 1 else str(e)
|
|
513
514
|
return {
|
|
514
515
|
"success": False,
|
|
515
516
|
"http_code": 0,
|
|
@@ -2,6 +2,10 @@ version = 1
|
|
|
2
2
|
revision = 3
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
4
|
|
|
5
|
+
[options]
|
|
6
|
+
exclude-newer = "0001-01-01T00:00:00Z" # This has no effect and is included for backwards compatibility when using relative exclude-newer values.
|
|
7
|
+
exclude-newer-span = "P7D"
|
|
8
|
+
|
|
5
9
|
[[package]]
|
|
6
10
|
name = "attrs"
|
|
7
11
|
version = "25.4.0"
|
|
@@ -412,11 +416,11 @@ wheels = [
|
|
|
412
416
|
|
|
413
417
|
[[package]]
|
|
414
418
|
name = "idna"
|
|
415
|
-
version = "3.
|
|
419
|
+
version = "3.15"
|
|
416
420
|
source = { registry = "https://pypi.org/simple" }
|
|
417
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
421
|
+
sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" }
|
|
418
422
|
wheels = [
|
|
419
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
423
|
+
{ url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
|
|
420
424
|
]
|
|
421
425
|
|
|
422
426
|
[[package]]
|
|
@@ -681,7 +685,7 @@ wheels = [
|
|
|
681
685
|
|
|
682
686
|
[[package]]
|
|
683
687
|
name = "pytest"
|
|
684
|
-
version = "
|
|
688
|
+
version = "9.0.3"
|
|
685
689
|
source = { registry = "https://pypi.org/simple" }
|
|
686
690
|
dependencies = [
|
|
687
691
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
@@ -692,9 +696,9 @@ dependencies = [
|
|
|
692
696
|
{ name = "pygments" },
|
|
693
697
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
|
694
698
|
]
|
|
695
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
699
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" }
|
|
696
700
|
wheels = [
|
|
697
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
701
|
+
{ url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" },
|
|
698
702
|
]
|
|
699
703
|
|
|
700
704
|
[[package]]
|
|
@@ -958,11 +962,11 @@ wheels = [
|
|
|
958
962
|
|
|
959
963
|
[[package]]
|
|
960
964
|
name = "urllib3"
|
|
961
|
-
version = "2.
|
|
965
|
+
version = "2.7.0"
|
|
962
966
|
source = { registry = "https://pypi.org/simple" }
|
|
963
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
967
|
+
sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
|
|
964
968
|
wheels = [
|
|
965
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
969
|
+
{ url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
|
|
966
970
|
]
|
|
967
971
|
|
|
968
972
|
[[package]]
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# SPDX-FileCopyrightText: 2025 The Linux Foundation
|
|
3
|
-
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
name: 'Autolabeler'
|
|
6
|
-
|
|
7
|
-
# yamllint disable-line rule:truthy
|
|
8
|
-
on:
|
|
9
|
-
# pull_request is required for autolabeler
|
|
10
|
-
pull_request:
|
|
11
|
-
types:
|
|
12
|
-
- opened
|
|
13
|
-
- synchronize
|
|
14
|
-
- reopened
|
|
15
|
-
# pull_request_target is required for autolabeler on PRs from forks
|
|
16
|
-
pull_request_target:
|
|
17
|
-
types:
|
|
18
|
-
- opened
|
|
19
|
-
- synchronize
|
|
20
|
-
- reopened
|
|
21
|
-
|
|
22
|
-
permissions: {}
|
|
23
|
-
|
|
24
|
-
concurrency:
|
|
25
|
-
# yamllint disable-line rule:line-length
|
|
26
|
-
group: ${{ format('al-{0}-pr-{1}', github.event_name, github.event.pull_request.number) }}
|
|
27
|
-
cancel-in-progress: true
|
|
28
|
-
|
|
29
|
-
jobs:
|
|
30
|
-
autolabel:
|
|
31
|
-
name: 'Autolabel PR'
|
|
32
|
-
# Run on pull_request_target for forks, or pull_request for same-repo PRs
|
|
33
|
-
# This prevents duplicate runs for same-repo PRs
|
|
34
|
-
# yamllint disable rule:line-length
|
|
35
|
-
if: >
|
|
36
|
-
(github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.fork) ||
|
|
37
|
-
(github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork)
|
|
38
|
-
# yamllint enable rule:line-length
|
|
39
|
-
# SECURITY: pull_request_target with write permissions is safe here because:
|
|
40
|
-
# 1. This workflow does NOT checkout any code from the PR
|
|
41
|
-
# 2. The workflow code itself runs from the base branch (not the fork)
|
|
42
|
-
# 3. release-drafter only makes GitHub API calls (no code execution)
|
|
43
|
-
# 4. pull_request_target is needed ONLY for autolabeling fork PRs
|
|
44
|
-
permissions:
|
|
45
|
-
# write permission is required for autolabeler
|
|
46
|
-
pull-requests: write
|
|
47
|
-
# read is sufficient; autolabeler does not create releases
|
|
48
|
-
contents: read
|
|
49
|
-
runs-on: 'ubuntu-latest'
|
|
50
|
-
timeout-minutes: 3
|
|
51
|
-
steps:
|
|
52
|
-
# Harden the runner used by this workflow
|
|
53
|
-
# yamllint disable-line rule:line-length
|
|
54
|
-
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
|
|
55
|
-
with:
|
|
56
|
-
egress-policy: 'audit'
|
|
57
|
-
|
|
58
|
-
# yamllint disable-line rule:line-length
|
|
59
|
-
- uses: release-drafter/release-drafter/autolabeler@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
# SPDX-FileCopyrightText: 2025 The Linux Foundation
|
|
4
|
-
|
|
5
|
-
name: '🛠️ Semantic Pull Request'
|
|
6
|
-
|
|
7
|
-
# yamllint disable-line rule:truthy
|
|
8
|
-
on:
|
|
9
|
-
# Not supported when workflow contains: amannn/action-semantic-pull-request
|
|
10
|
-
# workflow_dispatch:
|
|
11
|
-
pull_request:
|
|
12
|
-
types: [opened, reopened, edited, synchronize]
|
|
13
|
-
|
|
14
|
-
permissions: {}
|
|
15
|
-
|
|
16
|
-
concurrency:
|
|
17
|
-
group: ${{ github.workflow }}-${{ github.ref }}
|
|
18
|
-
cancel-in-progress: true
|
|
19
|
-
|
|
20
|
-
jobs:
|
|
21
|
-
semantic-pull-request:
|
|
22
|
-
name: "Semantic Pull Request"
|
|
23
|
-
permissions:
|
|
24
|
-
contents: read
|
|
25
|
-
runs-on: ubuntu-24.04
|
|
26
|
-
timeout-minutes: 3
|
|
27
|
-
steps:
|
|
28
|
-
# Harden the runner used by this workflow
|
|
29
|
-
# yamllint disable-line rule:line-length
|
|
30
|
-
- uses: step-security/harden-runner@f808768d1510423e83855289c910610ca9b43176 # v2.17.0
|
|
31
|
-
with:
|
|
32
|
-
egress-policy: audit
|
|
33
|
-
|
|
34
|
-
- name: "Validate pull request title"
|
|
35
|
-
# yamllint disable-line rule:line-length
|
|
36
|
-
uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
|
|
37
|
-
env:
|
|
38
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
39
|
-
with:
|
|
40
|
-
# Requires the type to be capitalised,
|
|
41
|
-
# but accept any of the standard types
|
|
42
|
-
types: |
|
|
43
|
-
Fix
|
|
44
|
-
Feat
|
|
45
|
-
Chore
|
|
46
|
-
Docs
|
|
47
|
-
Style
|
|
48
|
-
Refactor
|
|
49
|
-
Perf
|
|
50
|
-
Test
|
|
51
|
-
Revert
|
|
52
|
-
CI
|
|
53
|
-
Build
|
|
54
|
-
validateSingleCommit: true
|
|
55
|
-
validateSingleCommitMatchesPrTitle: true
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|