name: Website on: pull_request: {} push: branches: - main concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false jobs: book-test: name: Test Book runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Rust toolchain run: | rustup toolchain install stable --no-self-update --profile minimal rustup target add wasm32-unknown-unknown - name: Set up Rust cache uses: swatinem/rust-cache@v2 with: cache-on-failure: true save-if: ${{ github.ref == 'refs/heads/main' }} - name: Install Cargo Binary Install uses: cargo-bins/cargo-binstall@main - name: Install mdBook run: cargo binstall --force -y mdbook mdbook-tabs mdbook-trunk - name: Run tests run: mdbook test working-directory: book book-build: name: Build Book needs: book-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Rust toolchain run: | rustup toolchain install stable --no-self-update --profile minimal rustup target add wasm32-unknown-unknown - name: Set up Rust cache uses: swatinem/rust-cache@v2 with: cache-on-failure: true save-if: ${{ github.ref == 'refs/heads/main' }} - name: Install Cargo Binary Install uses: cargo-bins/cargo-binstall@main - name: Install mdBook and Trunk run: cargo binstall --force -y mdbook mdbook-tabs mdbook-trunk trunk - name: Install Node.js dependencies run: npm install - name: Build Book run: mdbook build working-directory: book - name: Combine Book Outputs run: mdbook-trunk combine working-directory: book - name: Upload artifact uses: actions/upload-artifact@v4 with: name: book path: book/dist retention-days: 1 if-no-files-found: error deploy: name: Deploy needs: book-build if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest permissions: contents: read pages: write id-token: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Download artifacts uses: actions/download-artifact@v4 with: path: dist merge-multiple: true - name: Setup Pages uses: actions/configure-pages@v5 - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: dist - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4