mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-15 17:25:26 -04:00
ci: skip pytest smoke on documentation-only changes (#2768)
* ci: skip pytest smoke on documentation-only changes Adding paths-ignore for **.md and docs/** so that PRs that touch only markdown files do not trigger the full pytest suite. Runner minutes are spent only when Python or config files change. Closes #2646. * ci: detect docs-only changes inside the job instead of paths-ignore Previously paths-ignore on the pull_request trigger caused the entire workflow to be skipped, which can leave required checks pending and block merging. Instead, keep the workflow always-triggered and detect docs-only changes inside python-tests with a git diff step; if every changed file is a .md or docs/ path, the step reports success without running pytest. The syntax jobs (python-syntax, node-syntax) are cheap enough to always run. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -51,10 +51,39 @@ jobs:
|
|||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
# Detect whether this PR only touches documentation files.
|
||||||
|
# If so, skip the expensive pytest run while still reporting a passing check.
|
||||||
|
- name: Check for docs-only changes
|
||||||
|
id: docs-check
|
||||||
|
run: |
|
||||||
|
if [ "${{ github.event_name }}" = "pull_request" ]; then
|
||||||
|
BASE="${{ github.event.pull_request.base.sha }}"
|
||||||
|
HEAD="${{ github.event.pull_request.head.sha }}"
|
||||||
|
else
|
||||||
|
BASE="${{ github.event.before }}"
|
||||||
|
HEAD="${{ github.sha }}"
|
||||||
|
fi
|
||||||
|
# List all changed files; if every file matches docs/markdown patterns, skip pytest.
|
||||||
|
changed=$(git diff --name-only "$BASE" "$HEAD" 2>/dev/null || git diff --name-only HEAD~1 HEAD)
|
||||||
|
non_docs=$(echo "$changed" | grep -Ev '^(docs/|.*\.md$|\.github/[^/]+\.md$)' || true)
|
||||||
|
if [ -z "$non_docs" ]; then
|
||||||
|
echo "docs_only=true" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Docs-only change detected — skipping pytest."
|
||||||
|
else
|
||||||
|
echo "docs_only=false" >> "$GITHUB_OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
||||||
|
if: steps.docs-check.outputs.docs_only != 'true'
|
||||||
with:
|
with:
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
cache: pip
|
cache: pip
|
||||||
- run: pip install -r requirements.txt
|
- run: pip install -r requirements.txt
|
||||||
|
if: steps.docs-check.outputs.docs_only != 'true'
|
||||||
- run: mkdir -p data # sqlite DB lives at ./data/app.db
|
- run: mkdir -p data # sqlite DB lives at ./data/app.db
|
||||||
|
if: steps.docs-check.outputs.docs_only != 'true'
|
||||||
- run: python -m pytest -q
|
- run: python -m pytest -q
|
||||||
|
if: steps.docs-check.outputs.docs_only != 'true'
|
||||||
|
|||||||
Reference in New Issue
Block a user