website.yaml
1 on: 2 push: 3 branches: ["main"] 4 pull_request: 5 branches: ["**"] 6 7 permissions: 8 contents: read 9 10 concurrency: 11 group: "pages" 12 cancel-in-progress: false 13 14 env: 15 RUST_VERSION: "1.92.0" 16 CARGO_INCREMENTAL: "0" 17 CARGO_PROFILE_TEST_DEBUG: "0" 18 NODE_VERSION: "24" 19 BINARYEN_VERSION: "124" 20 WASM_BINDGEN_VERSION: "0.2.100" 21 22 jobs: 23 build: 24 name: Build 25 runs-on: ubuntu-latest 26 steps: 27 - name: Checkout repository 28 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 29 with: 30 persist-credentials: true 31 - name: Setup Bun 32 uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2.0.2 33 - name: Fetch Rust and add target 34 run: | 35 rustup toolchain install ${RUST_VERSION}-x86_64-unknown-linux-gnu 36 rustup override set ${RUST_VERSION}-x86_64-unknown-linux-gnu 37 rustup target add wasm32-unknown-unknown 38 - name: Cache Rust dependencies 39 uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1 40 - name: Install wasm-bindgen 41 uses: taiki-e/install-action@a24ba45235ed716ff76646268742990dc9458860 # v2.62.42 42 with: 43 tool: wasm-bindgen@${{ env.WASM_BINDGEN_VERSION }} 44 - name: Install wasm-opt 45 run: | 46 curl -L https://github.com/WebAssembly/binaryen/releases/download/version_${BINARYEN_VERSION}/binaryen-version_${BINARYEN_VERSION}-x86_64-linux.tar.gz -o binaryen.tar.gz 47 tar -xzf binaryen.tar.gz 48 mv binaryen-version_${BINARYEN_VERSION} binaryen 49 - name: Setup Pages 50 id: pages 51 uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0 52 - name: Install Node dependencies and build 53 working-directory: ./duper_website 54 run: | 55 bun install 56 bun wasm:build 57 bun wasm:bindgen 58 ../binaryen/bin/wasm-opt -Os ./pkg/duper_website_bg.wasm -o ./pkg/duper_website_bg.wasm 59 bun run build 60 - name: Upload artifact 61 if: ${{ github.ref == 'refs/heads/main' }} 62 uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4.0.0 63 with: 64 path: ./duper_website/docs/.vitepress/dist 65 66 deploy: 67 name: Deploy 68 runs-on: ubuntu-latest 69 if: ${{ github.ref == 'refs/heads/main' }} 70 environment: 71 name: github-pages 72 url: ${{ steps.deployment.outputs.page_url }} 73 needs: build 74 permissions: 75 pages: write 76 id-token: write 77 steps: 78 - name: Deploy to GitHub Pages 79 id: deployment 80 uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5