mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-03-09 18:51:25 +00:00
133 lines
4.3 KiB
YAML
133 lines
4.3 KiB
YAML
name: Documentation
|
|
on:
|
|
push:
|
|
branches-ignore:
|
|
- 'translations**'
|
|
pull_request:
|
|
workflow_dispatch:
|
|
concurrency:
|
|
group: docs-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
permissions:
|
|
contents: read
|
|
pages: write
|
|
id-token: write
|
|
env:
|
|
DEFAULT_UV_VERSION: "0.10.x"
|
|
DEFAULT_PYTHON_VERSION: "3.12"
|
|
jobs:
|
|
changes:
|
|
name: Detect Docs Changes
|
|
runs-on: ubuntu-24.04
|
|
outputs:
|
|
docs_changed: ${{ steps.force.outputs.run_all == 'true' || steps.filter.outputs.docs == 'true' }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v6.0.2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Decide run mode
|
|
id: force
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
echo "run_all=true" >> "$GITHUB_OUTPUT"
|
|
elif [[ "${{ github.event_name }}" == "push" && ( "${{ github.ref_name }}" == "main" || "${{ github.ref_name }}" == "dev" ) ]]; then
|
|
echo "run_all=true" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "run_all=false" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
- name: Set diff range
|
|
id: range
|
|
if: steps.force.outputs.run_all != 'true'
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
echo "base=${{ github.event.pull_request.base.sha }}" >> "$GITHUB_OUTPUT"
|
|
elif [[ "${{ github.event.created }}" == "true" ]]; then
|
|
echo "base=origin/${{ github.event.repository.default_branch }}" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "base=${{ github.event.before }}" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
echo "ref=${{ github.sha }}" >> "$GITHUB_OUTPUT"
|
|
- name: Detect changes
|
|
id: filter
|
|
if: steps.force.outputs.run_all != 'true'
|
|
uses: dorny/paths-filter@v3.0.2
|
|
with:
|
|
base: ${{ steps.range.outputs.base }}
|
|
ref: ${{ steps.range.outputs.ref }}
|
|
filters: |
|
|
docs:
|
|
- 'docs/**'
|
|
- 'zensical.toml'
|
|
- 'pyproject.toml'
|
|
- 'uv.lock'
|
|
- '.github/workflows/ci-docs.yml'
|
|
build:
|
|
needs: changes
|
|
if: needs.changes.outputs.docs_changed == 'true'
|
|
name: Build Documentation
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/configure-pages@v5.0.0
|
|
- name: Checkout
|
|
uses: actions/checkout@v6.0.2
|
|
- name: Set up Python
|
|
id: setup-python
|
|
uses: actions/setup-python@v6.2.0
|
|
with:
|
|
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v7.3.1
|
|
with:
|
|
version: ${{ env.DEFAULT_UV_VERSION }}
|
|
enable-cache: true
|
|
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
|
|
- name: Install Python dependencies
|
|
run: |
|
|
uv sync --python ${{ steps.setup-python.outputs.python-version }} --dev --frozen
|
|
- name: Build documentation
|
|
run: |
|
|
uv run \
|
|
--python ${{ steps.setup-python.outputs.python-version }} \
|
|
--dev \
|
|
--frozen \
|
|
zensical build --clean
|
|
- name: Upload GitHub Pages artifact
|
|
uses: actions/upload-pages-artifact@v4.0.0
|
|
with:
|
|
path: site
|
|
name: github-pages-${{ github.run_id }}-${{ github.run_attempt }}
|
|
deploy:
|
|
name: Deploy Documentation
|
|
needs: [changes, build]
|
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.changes.outputs.docs_changed == 'true'
|
|
runs-on: ubuntu-24.04
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
steps:
|
|
- name: Deploy GitHub Pages
|
|
uses: actions/deploy-pages@v4.0.5
|
|
id: deployment
|
|
with:
|
|
artifact_name: github-pages-${{ github.run_id }}-${{ github.run_attempt }}
|
|
gate:
|
|
name: Docs CI Gate
|
|
needs: [changes, build]
|
|
if: always()
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Check gate
|
|
run: |
|
|
if [[ "${{ needs.changes.outputs.docs_changed }}" != "true" ]]; then
|
|
echo "No docs-relevant changes detected."
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "${{ needs.build.result }}" != "success" ]]; then
|
|
echo "::error::Docs build job result: ${{ needs.build.result }}"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Docs checks passed."
|