name: Release - Build and publish docs on: push: branches: ["main"] tags: - "v*" - "!v*-rc.*" workflow_dispatch: permissions: contents: write jobs: release: if: ${{ !contains(github.ref_name, '-rc.') }} runs-on: ubuntu-latest steps: - name: Checkout (tag) uses: actions/checkout@v4 with: fetch-depth: 0 - name: Ensure tag commit is on main run: | set -euo pipefail git fetch origin main:refs/remotes/origin/main if ! git merge-base --is-ancestor "${GITHUB_SHA}" "origin/main"; then echo "ERROR: Tagged commit ${GITHUB_SHA} is not on main. Refusing release." exit 1 fi - name: Setup Python uses: actions/setup-python@v5 with: python-version: "3.13" cache: "pip" cache-dependency-path: mkdocs/requirements.txt - name: Install dependencies run: | set -euo pipefail pip install -r mkdocs/requirements.txt - name: CI gate (MKDOCS_STRICT) run: | set -euo pipefail MKDOCS_STRICT="${MKDOCS_STRICT:-true}" STRICT_FLAG="" if [ "${MKDOCS_STRICT}" = "true" ]; then STRICT_FLAG="--strict" fi OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml - name: Build artifact (non-strict) env: MKDOCS_STRICT: "false" run: | set -euo pipefail MKDOCS_STRICT="${MKDOCS_STRICT:-true}" STRICT_FLAG="" if [ "${MKDOCS_STRICT}" = "true" ]; then STRICT_FLAG="--strict" fi mkdir -p "${RUNNER_TEMP}/dist" OFFLINE=true mkdocs build ${STRICT_FLAG} -f mkdocs/mkdocs.yml -d "${RUNNER_TEMP}/dist/${{ github.ref_name }}" - name: Zip artifact run: | set -euo pipefail cd "${RUNNER_TEMP}/dist" zip -r "${{ github.ref_name }}.zip" "./${{ github.ref_name }}" - name: Publish release (skip on act; allowed on gitea) if: ${{ env.ENABLE_RELEASE == 'true' && env.ACT != 'true' }} uses: softprops/action-gh-release@v2 with: files: | ${{ runner.temp }}/dist/${{ github.ref_name }}.zip