All checks were successful
Documentation / Build and Deploy Documentation (pull_request) Successful in 36s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 46s
Release Docker Image / define-variables (pull_request) Successful in 2s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 4m50s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (pull_request) Successful in 8m13s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (pull_request) Successful in 7m26s
Release Docker Image / merge (pull_request) Successful in 7s
Documentation / Build and Deploy Documentation (push) Successful in 28s
Release Docker Image / define-variables (push) Successful in 14s
Checks / Prek / Pre-commit & Formatting (push) Successful in 41s
Checks / Prek / Clippy and Cargo Tests (push) Successful in 3m51s
Release Docker Image / build-image (linux/arm64, release, linux-arm64, base) (push) Successful in 6m32s
Release Docker Image / build-image (linux/amd64, release, linux-amd64, base) (push) Successful in 6m1s
Release Docker Image / merge (push) Successful in 7s
Skip installing Node.js entirely if v20+ is already available, otherwise install v22. Add npm dependency caching with OS-specific cache keys using the custom detect-runner-os action for proper cache isolation between runners. Dependencies normally take just under 10s, so this should more than halve the doc build time to free up runner slots.
87 lines
3.1 KiB
YAML
87 lines
3.1 KiB
YAML
name: Documentation
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- "v*"
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: "pages-${{ github.ref }}"
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
docs:
|
|
name: Build and Deploy Documentation
|
|
runs-on: ubuntu-latest
|
|
if: secrets.CLOUDFLARE_API_TOKEN != ''
|
|
|
|
steps:
|
|
- name: Sync repository
|
|
uses: https://github.com/actions/checkout@v4
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 0
|
|
|
|
- name: Setup mdBook
|
|
uses: https://github.com/peaceiris/actions-mdbook@v2
|
|
with:
|
|
mdbook-version: "latest"
|
|
|
|
- name: Build mdbook
|
|
run: mdbook build
|
|
|
|
- name: Prepare static files for deployment
|
|
run: |
|
|
mkdir -p ./public/.well-known/matrix
|
|
mkdir -p ./public/.well-known/continuwuity
|
|
mkdir -p ./public/schema
|
|
# Copy the Matrix .well-known files
|
|
cp ./docs/static/server ./public/.well-known/matrix/server
|
|
cp ./docs/static/client ./public/.well-known/matrix/client
|
|
cp ./docs/static/client ./public/.well-known/matrix/support
|
|
cp ./docs/static/announcements.json ./public/.well-known/continuwuity/announcements
|
|
cp ./docs/static/announcements.schema.json ./public/schema/announcements.schema.json
|
|
# Copy the custom headers file
|
|
cp ./docs/static/_headers ./public/_headers
|
|
echo "Copied .well-known files and _headers to ./public"
|
|
|
|
- name: Detect runner environment
|
|
id: runner-env
|
|
uses: ./.forgejo/actions/detect-runner-os
|
|
|
|
- name: Setup Node.js
|
|
if: steps.runner-env.outputs.node_major == '' || steps.runner-env.outputs.node_major < '20'
|
|
uses: https://github.com/actions/setup-node@v4
|
|
with:
|
|
node-version: 22
|
|
|
|
- name: Cache npm dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.npm
|
|
key: ${{ steps.runner-env.outputs.slug }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ steps.runner-env.outputs.slug }}-node-
|
|
|
|
- name: Install dependencies
|
|
run: npm install --save-dev wrangler@latest
|
|
|
|
- name: Deploy to Cloudflare Pages (Production)
|
|
if: github.ref == 'refs/heads/main' && vars.CLOUDFLARE_PROJECT_NAME != ''
|
|
uses: https://github.com/cloudflare/wrangler-action@v3
|
|
with:
|
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
command: pages deploy ./public --branch="main" --commit-dirty=true --project-name="${{ vars.CLOUDFLARE_PROJECT_NAME }}"
|
|
|
|
- name: Deploy to Cloudflare Pages (Preview)
|
|
if: github.ref != 'refs/heads/main' && vars.CLOUDFLARE_PROJECT_NAME != ''
|
|
uses: https://github.com/cloudflare/wrangler-action@v3
|
|
with:
|
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
command: pages deploy ./public --branch="${{ github.head_ref || github.ref_name }}" --commit-dirty=true --project-name="${{ vars.CLOUDFLARE_PROJECT_NAME }}"
|