| name: Build and Deploy Documentation |
|
|
| on: |
| push: |
| branches: |
| - main |
| - gear-sonic |
| paths: |
| - "docs/**" |
| - ".github/workflows/docs.yml" |
| - ".gitattributes" |
| workflow_dispatch: |
|
|
| |
| concurrency: |
| group: "pages" |
| cancel-in-progress: true |
|
|
| jobs: |
| build: |
| name: Build Sphinx Docs |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout repository |
| uses: actions/checkout@v4 |
| with: |
| lfs: false |
|
|
| - name: Restore docs static assets (bypass git-lfs smudge) |
| run: | |
| # git-lfs on the runner rewrites files tracked by *.png/*.gif |
| # even when our .gitattributes override removes filter=lfs. |
| # Use git cat-file to write real binary content directly from |
| # the object store, bypassing all smudge filters. |
| git ls-tree -r HEAD -- docs/source/_static \ |
| | awk '{print $3, $4}' \ |
| | while IFS=" " read -r hash path; do |
| git cat-file blob "$hash" > "$path" |
| done |
| |
| - name: Set up Python |
| uses: actions/setup-python@v5 |
| with: |
| python-version: "3.10" |
| cache: "pip" |
| cache-dependency-path: "docs/requirements.txt" |
|
|
| - name: Install documentation dependencies |
| run: pip install -r docs/requirements.txt |
|
|
| - name: Build HTML documentation |
| run: sphinx-build -b html docs/source docs/build/html |
|
|
| - name: Upload Pages artifact |
| if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/gear-sonic' |
| uses: actions/upload-pages-artifact@v3 |
| with: |
| path: docs/build/html |
|
|
| deploy: |
| name: Deploy to GitHub Pages |
| needs: build |
| if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/gear-sonic' |
| runs-on: ubuntu-latest |
| permissions: |
| pages: write |
| id-token: write |
| environment: |
| name: github-pages |
| url: ${{ steps.deployment.outputs.page_url }} |
| steps: |
| - name: Deploy to GitHub Pages |
| id: deployment |
| uses: actions/deploy-pages@v4 |
|
|