name: CI on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: jobs: rust: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown components: rustfmt, clippy - name: Format check run: cargo fmt --all --check - name: Clippy run: cargo clippy --workspace -- -D warnings - name: Test run: cargo test --workspace frontend: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 - name: Install dependencies run: cd frontend && bun install - name: Type check run: cd frontend && bun run type-check - name: Lint run: cd frontend && bun run lint - name: Format check run: cd frontend && bun run format:check - name: Unit tests run: cd frontend && bun run test:run wasm: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Build WASM run: wasm-pack build layout-engine --target web --release publish-crates: if: github.event_name == 'push' && github.ref == 'refs/heads/main' needs: [rust, wasm] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Configure Gitea cargo registry run: | mkdir -p ~/.cargo cat >> ~/.cargo/config.toml <> ~/.cargo/credentials.toml <> ~/.npmrc echo "//${{ github.server_url }}/api/packages/${{ github.repository_owner }}/npm/:_authToken=${{ secrets.GITEA_TOKEN }}" >> ~/.npmrc - name: Install frontend dependencies run: cd frontend && bun install - name: Build frontend run: cd frontend && bun run build