# Builds the quotesdb Yew/Wasm UI with Trunk and deploys to Cloudflare Pages. # Triggered on push to the quotesdb branch when UI files change. # Required secrets: CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID name: Deploy quotesdb UI on: push: branches: - quotesdb paths: - "quotesdb/src/bin/ui/**" - "quotesdb/index.html" - "quotesdb/Trunk.toml" - "quotesdb/_redirects" - "quotesdb/src/lib.rs" - "quotesdb/Cargo.toml" - "quotesdb/Cargo.lock" jobs: deploy-ui: runs-on: ubuntu-latest defaults: run: working-directory: quotesdb steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain with wasm32 target uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown - name: Cache Rust build artifacts uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git quotesdb/target key: ${{ runner.os }}-cargo-ui-${{ hashFiles('quotesdb/Cargo.lock') }} restore-keys: ${{ runner.os }}-cargo-ui- - name: Install Trunk run: cargo install trunk - name: Build UI with Trunk run: trunk build --release - name: Deploy to Cloudflare Pages uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} command: pages deploy dist/ --project-name quotesdb-ui --branch quotesdb