@@ -2,10 +2,6 @@ name: CI - Test and Validate
22
33on :
44 pull_request :
5- push :
6- branches :
7- - develop
8- - ' release/**'
95
106permissions :
117 contents : read
@@ -16,24 +12,24 @@ concurrency:
1612
1713jobs :
1814 docs-only :
19- name : docs-only
15+ name : " ci: docs-only"
2016 runs-on : ubuntu-latest
2117 outputs :
2218 docs-only : ${{ steps.detect.outputs.docs-only }}
2319 steps :
2420 - name : Checkout code
25- uses : actions/checkout@v4
21+ uses : actions/checkout@v6
2622
2723 - name : Detect docs-only changes
2824 id : detect
2925 uses : wphillipmoore/standard-actions/actions/docs-only-detect@develop
3026
3127 standards-compliance :
32- name : standards-compliance
28+ name : " ci: standards-compliance"
3329 runs-on : ubuntu-latest
3430 steps :
3531 - name : Checkout code
36- uses : actions/checkout@v4
32+ uses : actions/checkout@v6
3733 with :
3834 fetch-depth : 0
3935
@@ -43,11 +39,11 @@ jobs:
4339 commit-cutoff-sha : " df45093c260def11f409dc4f3ba86e91ec444797"
4440
4541 dependency-audit :
46- name : dependency-audit
42+ name : " ci: dependency-audit"
4743 runs-on : ubuntu-latest
4844 steps :
4945 - name : Checkout code
50- uses : actions/checkout@v4
46+ uses : actions/checkout@v6
5147
5248 - name : Set up Python
5349 uses : wphillipmoore/standard-actions/actions/python/setup@develop
7773 Python Software Foundation License"
7874
7975 release-gates :
80- name : release- gates
76+ name : " release: gates"
8177 runs-on : ubuntu-latest
8278 steps :
8379 - name : Skip on non-PR events
@@ -86,13 +82,13 @@ jobs:
8682
8783 - name : Checkout code
8884 if : github.event_name == 'pull_request'
89- uses : actions/checkout@v4
85+ uses : actions/checkout@v6
9086 with :
9187 fetch-depth : 0
9288
9389 - name : Set up Python 3.14
9490 if : github.event_name == 'pull_request'
95- uses : actions/setup-python@v5
91+ uses : actions/setup-python@v6
9692 with :
9793 python-version : " 3.14"
9894
@@ -114,7 +110,7 @@ jobs:
114110 main-version-command : git show origin/main:pyproject.toml | python3 -c "import sys, tomllib; print(tomllib.loads(sys.stdin.read())['project']['version'])"
115111
116112 test-and-validate :
117- name : test-and-validate
113+ name : " test: unit "
118114 runs-on : ubuntu-latest
119115 needs : docs-only
120116 strategy :
@@ -128,7 +124,7 @@ jobs:
128124
129125 - name : Checkout code
130126 if : needs.docs-only.outputs.docs-only != 'true'
131- uses : actions/checkout@v4
127+ uses : actions/checkout@v6
132128
133129 - name : Fetch base branch for version checks
134130 if : github.event_name == 'pull_request' && needs.docs-only.outputs.docs-only != 'true'
@@ -182,76 +178,99 @@ jobs:
182178 --cov-fail-under=100
183179
184180 codeql :
185- name : codeql
181+ name : " security: codeql"
186182 runs-on : ubuntu-latest
187183 needs : docs-only
188- if : needs.docs-only.outputs.docs-only != 'true'
189184 permissions :
190185 security-events : write
191186 steps :
187+ - name : Docs-only short-circuit
188+ if : needs.docs-only.outputs.docs-only == 'true'
189+ run : echo "Docs-only changes detected; skipping CodeQL."
190+
192191 - name : Checkout code
193- uses : actions/checkout@v4
192+ if : needs.docs-only.outputs.docs-only != 'true'
193+ uses : actions/checkout@v6
194194
195195 - name : Run CodeQL analysis
196+ if : needs.docs-only.outputs.docs-only != 'true'
196197 uses : wphillipmoore/standard-actions/actions/security/codeql@develop
197198 with :
198199 language : python
199200
200201 trivy :
201- name : trivy
202+ name : " security: trivy"
202203 runs-on : ubuntu-latest
203204 needs : docs-only
204- if : needs.docs-only.outputs.docs-only != 'true'
205205 permissions :
206206 security-events : write
207207 steps :
208+ - name : Docs-only short-circuit
209+ if : needs.docs-only.outputs.docs-only == 'true'
210+ run : echo "Docs-only changes detected; skipping Trivy."
211+
208212 - name : Checkout code
209- uses : actions/checkout@v4
213+ if : needs.docs-only.outputs.docs-only != 'true'
214+ uses : actions/checkout@v6
210215
211216 - name : Run Trivy vulnerability scan
217+ if : needs.docs-only.outputs.docs-only != 'true'
212218 uses : wphillipmoore/standard-actions/actions/security/trivy@develop
213219 with :
214220 scan-type : fs
215221
216222 semgrep :
217- name : semgrep
223+ name : " security: semgrep"
218224 runs-on : ubuntu-latest
219225 needs : docs-only
220- if : needs.docs-only.outputs.docs-only != 'true'
221226 permissions :
222227 security-events : write
223228 steps :
229+ - name : Docs-only short-circuit
230+ if : needs.docs-only.outputs.docs-only == 'true'
231+ run : echo "Docs-only changes detected; skipping Semgrep."
232+
224233 - name : Checkout code
225- uses : actions/checkout@v4
234+ if : needs.docs-only.outputs.docs-only != 'true'
235+ uses : actions/checkout@v6
226236
227237 - name : Run Semgrep SAST scan
238+ if : needs.docs-only.outputs.docs-only != 'true'
228239 uses : wphillipmoore/standard-actions/actions/security/semgrep@develop
229240 with :
230241 language : python
231242
232243 integration-tests :
233- name : integration-tests
244+ name : " test: integration"
234245 runs-on : ubuntu-latest
235246 needs : docs-only
236- if : needs.docs-only.outputs.docs-only != 'true'
237247 steps :
248+ - name : Docs-only short-circuit
249+ if : needs.docs-only.outputs.docs-only == 'true'
250+ run : echo "Docs-only changes detected; skipping integration tests."
251+
238252 - name : Checkout code
239- uses : actions/checkout@v4
253+ if : needs.docs-only.outputs.docs-only != 'true'
254+ uses : actions/checkout@v6
240255
241256 - name : Set up Python
257+ if : needs.docs-only.outputs.docs-only != 'true'
242258 uses : wphillipmoore/standard-actions/actions/python/setup@develop
243259 with :
244260 python-version : " 3.14"
245261
246262 - name : Install dependencies
263+ if : needs.docs-only.outputs.docs-only != 'true'
247264 run : uv sync --frozen --group dev
248265
249266 - name : Setup MQ environment
267+ if : needs.docs-only.outputs.docs-only != 'true'
250268 uses : wphillipmoore/mq-rest-admin-dev-environment/.github/actions/setup-mq@main
251269 with :
252270 project-name : pymqrest
253271
254272 - name : Run integration tests
273+ if : needs.docs-only.outputs.docs-only != 'true'
255274 run : |
256275 MQ_SKIP_LIFECYCLE=1 \
257276 PYMQREST_RUN_INTEGRATION=1 \
0 commit comments