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@v5 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 }}"