refactor: upgrade to rapace RPC and overhaul testing infrastructure #396
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # GENERATED BY: cargo xtask ci | |
| # DO NOT EDIT - edit xtask/src/ci.rs instead | |
| --- | |
| name: CI | |
| "on": | |
| push: | |
| tags: | |
| - v* | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| build-ddc-linux-x64: | |
| name: Build ddc (linux-x64) | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| targets: wasm32-unknown-unknown | |
| - | |
| name: Install Rust (nightly) | |
| uses: dtolnay/rust-toolchain@nightly | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Install wasm-pack | |
| run: "curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh" | |
| - | |
| name: Build WASM | |
| run: cargo xtask wasm | |
| - | |
| name: Build ddc | |
| run: cargo build --release -p dodeca | |
| - | |
| name: Test ddc | |
| run: cargo test --release -p dodeca --bins | |
| - | |
| name: Clippy | |
| run: cargo clippy --all-features --all-targets -- -D warnings | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ddc-linux-x64 | |
| path: target/release/ddc | |
| build-cells-linux-x64-1: | |
| name: Build cells (linux-x64) [cell-arborium, cell-code-execution, cell-css] | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-arborium --bin ddc-cell-arborium -p cell-code-execution --bin ddc-cell-code-execution -p cell-css --bin ddc-cell-css | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-arborium -p cell-code-execution -p cell-css | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-linux-x64-1 | |
| path: "target/release/ddc-cell-arborium\ntarget/release/ddc-cell-code-execution\ntarget/release/ddc-cell-css" | |
| build-cells-linux-x64-2: | |
| name: Build cells (linux-x64) [cell-fonts, cell-html, cell-html-diff] | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-fonts --bin ddc-cell-fonts -p cell-html --bin ddc-cell-html -p cell-html-diff --bin ddc-cell-html-diff | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-fonts -p cell-html -p cell-html-diff | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-linux-x64-2 | |
| path: "target/release/ddc-cell-fonts\ntarget/release/ddc-cell-html\ntarget/release/ddc-cell-html-diff" | |
| build-cells-linux-x64-3: | |
| name: Build cells (linux-x64) [cell-http, cell-image, cell-js] | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-http --bin ddc-cell-http -p cell-image --bin ddc-cell-image -p cell-js --bin ddc-cell-js | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-http -p cell-image -p cell-js | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-linux-x64-3 | |
| path: "target/release/ddc-cell-http\ntarget/release/ddc-cell-image\ntarget/release/ddc-cell-js" | |
| build-cells-linux-x64-4: | |
| name: Build cells (linux-x64) [cell-jxl, cell-linkcheck, cell-markdown] | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-jxl --bin ddc-cell-jxl -p cell-linkcheck --bin ddc-cell-linkcheck -p cell-markdown --bin ddc-cell-markdown | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-jxl -p cell-linkcheck -p cell-markdown | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-linux-x64-4 | |
| path: "target/release/ddc-cell-jxl\ntarget/release/ddc-cell-linkcheck\ntarget/release/ddc-cell-markdown" | |
| build-cells-linux-x64-5: | |
| name: Build cells (linux-x64) [cell-minify, cell-pagefind, cell-sass] | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-minify --bin ddc-cell-minify -p cell-pagefind --bin ddc-cell-pagefind -p cell-sass --bin ddc-cell-sass | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-minify -p cell-pagefind -p cell-sass | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-linux-x64-5 | |
| path: "target/release/ddc-cell-minify\ntarget/release/ddc-cell-pagefind\ntarget/release/ddc-cell-sass" | |
| build-cells-linux-x64-6: | |
| name: Build cells (linux-x64) [cell-svgo, cell-tui, cell-webp] | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-svgo --bin ddc-cell-svgo -p cell-tui --bin ddc-cell-tui -p cell-webp --bin ddc-cell-webp | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-svgo -p cell-tui -p cell-webp | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-linux-x64-6 | |
| path: "target/release/ddc-cell-svgo\ntarget/release/ddc-cell-tui\ntarget/release/ddc-cell-webp" | |
| assemble-linux-x64: | |
| name: Assemble (linux-x64) | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| needs: | |
| - build-ddc-linux-x64 | |
| - build-cells-linux-x64-1 | |
| - build-cells-linux-x64-2 | |
| - build-cells-linux-x64-3 | |
| - build-cells-linux-x64-4 | |
| - build-cells-linux-x64-5 | |
| - build-cells-linux-x64-6 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download ddc | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ddc-linux-x64 | |
| path: target/release | |
| - | |
| name: Download cells | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: cells-linux-x64-* | |
| path: target/release | |
| merge-multiple: "true" | |
| - | |
| name: List binaries | |
| run: ls -la target/release/ | |
| - | |
| name: Assemble archive | |
| run: bash scripts/assemble-archive.sh x86_64-unknown-linux-gnu | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-linux-x64 | |
| path: dodeca-x86_64-unknown-linux-gnu.tar.xz | |
| integration-linux-x64: | |
| name: Integration (linux-x64) | |
| runs-on: depot-ubuntu-24.04-32 | |
| timeout-minutes: 30 | |
| needs: | |
| - assemble-linux-x64 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - | |
| name: Install Rust (nightly) | |
| uses: dtolnay/rust-toolchain@nightly | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Install wasm-pack | |
| run: "curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh" | |
| - | |
| name: Build WASM | |
| run: cargo xtask wasm | |
| - | |
| name: Download build | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-linux-x64 | |
| path: dist | |
| - | |
| name: Extract archive | |
| run: tar -xf dist/dodeca-x86_64-unknown-linux-gnu.tar.xz -C dist && chmod +x dist/ddc dist/ddc-cell-* && ls -la dist/ | |
| - | |
| name: Run integration tests | |
| run: cargo xtask integration --no-build | |
| env: | |
| DODECA_BIN: ${{ github.workspace }}/dist/ddc | |
| DODECA_CELL_PATH: ${{ github.workspace }}/dist | |
| build-ddc-macos-arm64: | |
| name: Build ddc (macos-arm64) | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| targets: wasm32-unknown-unknown | |
| - | |
| name: Install Rust (nightly) | |
| uses: dtolnay/rust-toolchain@nightly | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Install wasm-pack | |
| run: brew install wasm-pack | |
| - | |
| name: Build WASM | |
| run: cargo xtask wasm | |
| - | |
| name: Build ddc | |
| run: cargo build --release -p dodeca | |
| - | |
| name: Test ddc | |
| run: cargo test --release -p dodeca --bins | |
| - | |
| name: Clippy | |
| run: cargo clippy --all-features --all-targets -- -D warnings | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ddc-macos-arm64 | |
| path: target/release/ddc | |
| build-cells-macos-arm64-1: | |
| name: Build cells (macos-arm64) [cell-arborium, cell-code-execution, cell-css] | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-arborium --bin ddc-cell-arborium -p cell-code-execution --bin ddc-cell-code-execution -p cell-css --bin ddc-cell-css | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-arborium -p cell-code-execution -p cell-css | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-macos-arm64-1 | |
| path: "target/release/ddc-cell-arborium\ntarget/release/ddc-cell-code-execution\ntarget/release/ddc-cell-css" | |
| build-cells-macos-arm64-2: | |
| name: Build cells (macos-arm64) [cell-fonts, cell-html, cell-html-diff] | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-fonts --bin ddc-cell-fonts -p cell-html --bin ddc-cell-html -p cell-html-diff --bin ddc-cell-html-diff | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-fonts -p cell-html -p cell-html-diff | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-macos-arm64-2 | |
| path: "target/release/ddc-cell-fonts\ntarget/release/ddc-cell-html\ntarget/release/ddc-cell-html-diff" | |
| build-cells-macos-arm64-3: | |
| name: Build cells (macos-arm64) [cell-http, cell-image, cell-js] | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-http --bin ddc-cell-http -p cell-image --bin ddc-cell-image -p cell-js --bin ddc-cell-js | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-http -p cell-image -p cell-js | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-macos-arm64-3 | |
| path: "target/release/ddc-cell-http\ntarget/release/ddc-cell-image\ntarget/release/ddc-cell-js" | |
| build-cells-macos-arm64-4: | |
| name: Build cells (macos-arm64) [cell-jxl, cell-linkcheck, cell-markdown] | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-jxl --bin ddc-cell-jxl -p cell-linkcheck --bin ddc-cell-linkcheck -p cell-markdown --bin ddc-cell-markdown | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-jxl -p cell-linkcheck -p cell-markdown | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-macos-arm64-4 | |
| path: "target/release/ddc-cell-jxl\ntarget/release/ddc-cell-linkcheck\ntarget/release/ddc-cell-markdown" | |
| build-cells-macos-arm64-5: | |
| name: Build cells (macos-arm64) [cell-minify, cell-pagefind, cell-sass] | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-minify --bin ddc-cell-minify -p cell-pagefind --bin ddc-cell-pagefind -p cell-sass --bin ddc-cell-sass | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-minify -p cell-pagefind -p cell-sass | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-macos-arm64-5 | |
| path: "target/release/ddc-cell-minify\ntarget/release/ddc-cell-pagefind\ntarget/release/ddc-cell-sass" | |
| build-cells-macos-arm64-6: | |
| name: Build cells (macos-arm64) [cell-svgo, cell-tui, cell-webp] | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Build cells | |
| run: cargo build --release -p cell-svgo --bin ddc-cell-svgo -p cell-tui --bin ddc-cell-tui -p cell-webp --bin ddc-cell-webp | |
| - | |
| name: Test cells | |
| run: cargo test --release -p cell-svgo -p cell-tui -p cell-webp | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cells-macos-arm64-6 | |
| path: "target/release/ddc-cell-svgo\ntarget/release/ddc-cell-tui\ntarget/release/ddc-cell-webp" | |
| assemble-macos-arm64: | |
| name: Assemble (macos-arm64) | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| needs: | |
| - build-ddc-macos-arm64 | |
| - build-cells-macos-arm64-1 | |
| - build-cells-macos-arm64-2 | |
| - build-cells-macos-arm64-3 | |
| - build-cells-macos-arm64-4 | |
| - build-cells-macos-arm64-5 | |
| - build-cells-macos-arm64-6 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download ddc | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ddc-macos-arm64 | |
| path: target/release | |
| - | |
| name: Download cells | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: cells-macos-arm64-* | |
| path: target/release | |
| merge-multiple: "true" | |
| - | |
| name: List binaries | |
| run: ls -la target/release/ | |
| - | |
| name: Assemble archive | |
| run: bash scripts/assemble-archive.sh aarch64-apple-darwin | |
| - | |
| name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-macos-arm64 | |
| path: dodeca-aarch64-apple-darwin.tar.xz | |
| integration-macos-arm64: | |
| name: Integration (macos-arm64) | |
| runs-on: depot-macos-15 | |
| timeout-minutes: 30 | |
| needs: | |
| - assemble-macos-arm64 | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-unknown-unknown | |
| - | |
| name: Install Rust (nightly) | |
| uses: dtolnay/rust-toolchain@nightly | |
| - | |
| name: Rust cache | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| cache-on-failure: "true" | |
| - | |
| name: Install wasm-pack | |
| run: brew install wasm-pack | |
| - | |
| name: Build WASM | |
| run: cargo xtask wasm | |
| - | |
| name: Download build | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build-macos-arm64 | |
| path: dist | |
| - | |
| name: Extract archive | |
| run: tar -xf dist/dodeca-aarch64-apple-darwin.tar.xz -C dist && chmod +x dist/ddc dist/ddc-cell-* && ls -la dist/ | |
| - | |
| name: Run integration tests | |
| run: cargo xtask integration --no-build | |
| env: | |
| DODECA_BIN: ${{ github.workspace }}/dist/ddc | |
| DODECA_CELL_PATH: ${{ github.workspace }}/dist | |
| release: | |
| name: Release | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| needs: | |
| - integration-linux-x64 | |
| - integration-macos-arm64 | |
| if: "startsWith(github.ref, 'refs/tags/')" | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v4 | |
| - | |
| name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: dist | |
| pattern: build-* | |
| merge-multiple: "true" | |
| - | |
| name: List artifacts | |
| run: ls -laR dist/ | |
| - | |
| name: Create GitHub Release | |
| run: "gh release create \"${{ github.ref_name }}\" \\\n --title \"dodeca ${{ github.ref_name }}\" \\\n --generate-notes \\\n dist/**/*.tar.xz dist/**/*.zip" | |
| shell: bash | |
| - | |
| name: Update Homebrew tap | |
| run: "bash scripts/update-homebrew.sh \"${{ github.ref_name }}\"" | |
| shell: bash | |