name: Build and Deploy Documentation on: push: branches: [ main ] paths: - 'docs/**' - 'mkdocs.yml' - 'docs-requirements.txt' - '.github/workflows/docs.yml' pull_request: branches: [ main ] paths: - 'docs/**' - 'mkdocs.yml' - 'docs-requirements.txt' release: types: [published] permissions: contents: write pages: write id-token: write concurrency: group: "pages" cancel-in-progress: false jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: | pip install -r docs-requirements.txt - name: Build documentation run: | mkdocs build --strict deploy-dev: runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' && github.event_name == 'push' steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: | pip install -r docs-requirements.txt - name: Configure Git run: | git config --global user.name "${{ github.actor }}" git config --global user.email "${{ github.actor }}@users.noreply.github.com" - name: Deploy development version run: | mike deploy --push --update-aliases dev latest # Set dev as default if no default exists if ! mike list | grep -q "default"; then mike set-default --push dev fi deploy-release: runs-on: ubuntu-latest if: github.event_name == 'release' steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.11' - name: Install dependencies run: | pip install -r docs-requirements.txt - name: Configure Git run: | git config --global user.name "${{ github.actor }}" git config --global user.email "${{ github.actor }}@users.noreply.github.com" - name: Deploy release version run: | VERSION=${GITHUB_REF#refs/tags/} mike deploy --push --update-aliases $VERSION stable mike set-default --push stable