name: Documentation on: push: branches: [main] pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read pages: write id-token: write jobs: docs: name: All crates runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - name: Install protoc uses: taiki-e/install-action@v2 with: tool: protoc@3.20.3 - name: Install Rust uses: dtolnay/rust-toolchain@master with: toolchain: nightly-2025-10-01 - name: Install Node.js uses: actions/setup-node@v6 with: node-version: 20 - name: Load cache uses: Swatinem/rust-cache@v2 with: save-if: ${{ github.ref == 'refs/heads/main' }} # Keep in sync with xtask docs - name: Build documentation env: RUSTDOCFLAGS: "--enable-index-page -Zunstable-options --cfg docsrs -Dwarnings" run: cargo doc --no-deps --workspace --features docsrs --exclude=xtask - name: Upload artifact if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: actions/upload-pages-artifact@v4 with: path: './target/doc/' - name: Deploy to GitHub Pages if: github.event_name == 'push' && github.ref == 'refs/heads/main' id: deployment uses: actions/deploy-pages@v4