Skip to content
Latchkey

Deploy Documentation workflow (LukasNiessen/ArchUnitPython)

The Deploy Documentation workflow from LukasNiessen/ArchUnitPython, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get caching, job timeouts, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: LukasNiessen/ArchUnitPython.github/workflows/docs.yamlLicense MITView source

What it does

This is the Deploy Documentation workflow from the LukasNiessen/ArchUnitPython repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: Deploy Documentation

on:
    push:
        branches: [main]

# Allow one concurrent deployment
concurrency:
    group: 'pages'
    cancel-in-progress: true

permissions:
    contents: read
    pages: write
    id-token: write

jobs:
    # Build job
    build:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v6
              with:
                  fetch-depth: 0

            - name: Setup Python
              uses: actions/setup-python@v6
              with:
                  python-version: '3.12'

            - name: Install dependencies
              run: |
                  pip install -e ".[dev]"
                  pip install pdoc

            - name: Generate documentation
              run: pdoc src/archunitpython/ -o docs/ --docformat google

            - name: Setup Pages
              uses: actions/configure-pages@v6

            - name: Upload artifact
              uses: actions/upload-pages-artifact@v5
              with:
                  path: './docs'

    # Deployment job - only runs on main branch pushes
    deploy:
        if: github.ref == 'refs/heads/main' && github.event_name == 'push'
        environment:
            name: github-pages
            url: ${{ steps.deployment.outputs.page_url }}
        runs-on: ubuntu-latest
        needs: build
        steps:
            - name: Deploy to GitHub Pages
              id: deployment
              uses: actions/deploy-pages@v5

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: Deploy Documentation
 
on:
    push:
        branches: [main]
 
# Allow one concurrent deployment
concurrency:
    group: 'pages'
    cancel-in-progress: true
 
permissions:
    contents: read
    pages: write
    id-token: write
 
jobs:
    # Build job
    build:
        timeout-minutes: 30
        runs-on: latchkey-small
        steps:
            - name: Checkout
              uses: actions/checkout@v6
              with:
                  fetch-depth: 0
 
            - name: Setup Python
              uses: actions/setup-python@v6
              with:
                  cache: 'pip'
                  python-version: '3.12'
 
            - name: Install dependencies
              run: |
                  pip install -e ".[dev]"
                  pip install pdoc
 
            - name: Generate documentation
              run: pdoc src/archunitpython/ -o docs/ --docformat google
 
            - name: Setup Pages
              uses: actions/configure-pages@v6
 
            - name: Upload artifact
              uses: actions/upload-pages-artifact@v5
              with:
                  path: './docs'
 
    # Deployment job - only runs on main branch pushes
    deploy:
        timeout-minutes: 30
        if: github.ref == 'refs/heads/main' && github.event_name == 'push'
        environment:
            name: github-pages
            url: ${{ steps.deployment.outputs.page_url }}
        runs-on: latchkey-small
        needs: build
        steps:
            - name: Deploy to GitHub Pages
              id: deployment
              uses: actions/deploy-pages@v5
 

What changed

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:

This workflow runs 2 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow