doc_test workflow (hhh675597/revisiting_opd)
The doc_test workflow from hhh675597/revisiting_opd, explained and optimized by Latchkey.
CI health: A - excellent
Point runs-on at Latchkey and get caching, self-healing for flaky steps, and up to 58% lower cost, applied automatically.
What it does
This is the doc_test workflow from the hhh675597/revisiting_opd repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.
Below, Latchkey shows a faster, safer version produced by its optimization engine.
The workflow
name: doc_test
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- main
- v0.*
pull_request:
branches:
- main
- v0.*
paths:
- "**/*.py"
- "docs/**"
- .github/workflows/doc.yml
# Cancel jobs on the same ref if a new one is triggered
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
# Declare permissions just read content.
permissions:
contents: read # for checkout
pages: write # for deploy-pages
id-token: write # for deploy-pages
jobs:
doc_test:
runs-on: ubuntu-latest
timeout-minutes: 5 # Increase this timeout value as needed
strategy:
matrix:
python-version: ["3.10"]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: ${{ matrix.python-version }}
- name: Install the current repository
run: |
pip install -e .[test]
pip install -r docs/requirements-docs.txt
- name: Run doc make html
run: |
cd docs
make clean
make html SPHINXOPTS="--keep-going -w _build/sphinx.log"
if grep -q ": ERROR:" _build/sphinx.log; then
echo "🚨 Sphinx doc build contained ERRORs - see _build/sphinx.log"
exit 1
fi
The same workflow, on Latchkey
Estimated ~20% faster on cache hits, plus fewer wasted runs and a safer supply chain. Added and changed lines are highlighted.
name: doc_test on: # Trigger the workflow on push or pull request, # but only for the main branch push: branches: - main - v0.* pull_request: branches: - main - v0.* paths: - "**/*.py" - "docs/**" - .github/workflows/doc.yml # Cancel jobs on the same ref if a new one is triggered concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} # Declare permissions just read content. permissions: contents: read # for checkout pages: write # for deploy-pages id-token: write # for deploy-pages jobs: doc_test: runs-on: latchkey-small timeout-minutes: 5 # Increase this timeout value as needed strategy: matrix: python-version: ["3.10"] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: cache: 'pip' python-version: ${{ matrix.python-version }} - name: Install the current repository run: | pip install -e .[test] pip install -r docs/requirements-docs.txt - name: Run doc make html run: | cd docs make clean make html SPHINXOPTS="--keep-going -w _build/sphinx.log" if grep -q ": ERROR:" _build/sphinx.log; then echo "🚨 Sphinx doc build contained ERRORs - see _build/sphinx.log" exit 1 fi
What changed
- Run on Latchkey managed runners with one line (
runs-on), which apply the fixes below automatically and self-heal transient failures. This example useslatchkey-small; pick the runner size that fits the job. - Cache dependency installs on the setup step so they are served from cache.
What Latchkey heals here
This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:
- Dependency installs
This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.