name: Pre-release - Build and publish docs on: push: tags: - "v*" workflow_dispatch: permissions: contents: write jobs: prerelease: if: > startsWith(github.ref_name, 'v') && 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 release-candidate run: | set -euo pipefail git fetch origin release-candidate:refs/remotes/origin/release-candidate if ! git merge-base --is-ancestor "${GITHUB_SHA}" "origin/release-candidate"; then echo "ERROR: Tagged commit ${GITHUB_SHA} is not on release-candidate. Refusing prerelease." 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 prerelease (skip on act) if: ${{ env.ENABLE_RELEASE == 'true' && env.ACT != 'true' }} uses: softprops/action-gh-release@v2 with: prerelease: true files: | ${{ runner.temp }}/dist/${{ github.ref_name }}.zip