name: Documentation on: push: branches: [main] pull_request: types: - opened - reopened - synchronize - ready_for_review 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@v4 - 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-2024-06-25 - name: Install Node.js uses: actions/setup-node@v4 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: # Work around https://github.com/rust-lang/cargo/issues/10744 CARGO_TARGET_APPLIES_TO_HOST: "true" RUSTDOCFLAGS: "--enable-index-page -Zunstable-options --cfg docsrs -Dwarnings" run: cargo doc --no-deps --workspace --features docsrs - name: Upload artifact if: github.event_name == 'push' && github.ref == 'refs/heads/main' uses: actions/upload-pages-artifact@v3 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