Repository navigation
Packaging: Intel Mac, DMG images, Windows MSI — the tauri-style matrix #185
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
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| env: | |
| # Exact Rivet commit the hosts build against (migration policy: pinned). | |
| # Bump together with host code; local dev may track rivet main. | |
| RIVET_PIN: 2fcdd091ddd7fd157fa934ac6053cdf4f9ab6100 | |
| jobs: | |
| contract: | |
| name: Contract preflight (i18n + release metadata) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Verify platform i18n copies match shared/i18n | |
| run: scripts/sync-i18n.sh --check | |
| - name: Verify release version alignment | |
| run: bash scripts/check-release-version.sh | |
| core: | |
| name: Racket core (contract tests) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Link Rivet | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Core contract tests | |
| run: raco test racket/ | |
| # Golden CLI suite (61 cases): byte-identical stdout/stderr/exit codes | |
| # against shared/cli-golden/, run through the system-racket CLI shim. | |
| - name: Golden CLI suite | |
| run: python3 shared/cli-golden/runner.py --binary scripts/taskly-cli.sh | |
| linux-host: | |
| name: Linux host (GTK4 build) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Install GTK toolchain | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y cmake ninja-build pkg-config \ | |
| libgtk-4-dev libadwaita-1-dev libjson-glib-dev \ | |
| libsecret-1-dev libglib2.0-dev | |
| - name: Link Rivet | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Cache embeddable Racket CS | |
| id: cache-racket-embed | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ${{ runner.temp }}/racket-embed | |
| key: racket-embed-9.3-${{ runner.os }}-${{ runner.arch }}-v1 | |
| - name: Build embeddable Racket CS | |
| if: steps.cache-racket-embed.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| archive="$RUNNER_TEMP/racket-minimal-9.3-src-builtpkgs.tgz" | |
| source_root="$RUNNER_TEMP/racket-9.3" | |
| build_root="$RUNNER_TEMP/racket-embed-build" | |
| embed_prefix="$RUNNER_TEMP/racket-embed" | |
| curl --fail --location --retry 3 --output "$archive" \ | |
| https://download.racket-lang.org/releases/9.3/installers/racket-minimal-9.3-src-builtpkgs.tgz | |
| echo "3a01324d559a15e3f1f58b0c57a92bb344dce534e72e564e0d8b75e3b9c65295 $archive" | sha256sum --check | |
| tar -xzf "$archive" -C "$RUNNER_TEMP" | |
| mkdir -p "$build_root" | |
| cd "$build_root" | |
| "$source_root/src/configure" --prefix="$embed_prefix" | |
| make -j2 | |
| make install | |
| - name: Save embeddable Racket CS cache | |
| if: steps.cache-racket-embed.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v5 | |
| with: | |
| path: ${{ runner.temp }}/racket-embed | |
| key: racket-embed-9.3-${{ runner.os }}-${{ runner.arch }}-v1 | |
| - name: Expose embeddable runtime paths | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| embed_prefix="$RUNNER_TEMP/racket-embed" | |
| racket_include="$(racket -e '(require setup/dirs) (display (path->string (find-include-dir)))')" | |
| petite="$(find "$embed_prefix" -maxdepth 6 -name petite.boot -print -quit)" | |
| scheme="$(find "$embed_prefix" -maxdepth 6 -name scheme.boot -print -quit)" | |
| racket_boot="$(find "$embed_prefix" -maxdepth 6 -name racket.boot -print -quit)" | |
| test -n "$petite" && test -n "$scheme" && test -n "$racket_boot" | |
| library="$(find "$embed_prefix" -maxdepth 6 -name 'libracketcs*.a' -print -quit)" | |
| test -n "$library" | |
| boot_dir="$(dirname "$petite")" | |
| echo "RIVET_RACKET_INCLUDE=$racket_include" >> "$GITHUB_ENV" | |
| echo "RIVET_RACKET_LIB_DIR=$(dirname "$library")" >> "$GITHUB_ENV" | |
| echo "RIVET_RACKET_LIBRARY=$library" >> "$GITHUB_ENV" | |
| echo "RIVET_RACKET_BOOT_DIR=$boot_dir" >> "$GITHUB_ENV" | |
| - name: Toolchain doctor | |
| run: raco rivet doctor --json | |
| - name: Build host | |
| run: raco rivet build | |
| - name: Headless boot smoke | |
| run: | | |
| sudo apt-get install -y xvfb | |
| xvfb-run -a ./.rivet/stage/RivetHost & | |
| APP_PID=$! | |
| sleep 8 | |
| kill -0 $APP_PID | |
| kill $APP_PID | |
| macos-host: | |
| name: macOS host (${{ matrix.arch }} build) | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - arch: arm64 | |
| runner: macos-15 | |
| racket-arch: arm64 | |
| - arch: x64 | |
| runner: macos-15-intel | |
| racket-arch: x64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| # Each leg builds the architecture it will package (release.yml | |
| # macos matrix matches). | |
| architecture: ${{ matrix.racket-arch }} | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Link Rivet | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Build host | |
| run: raco rivet build | |
| - name: Boot smoke | |
| run: | | |
| smoke_home="$RUNNER_TEMP/taskly-smoke-home" | |
| mkdir -p "$smoke_home" | |
| HOME="$smoke_home" ./.rivet/stage/RivetHost & | |
| APP_PID=$! | |
| sleep 8 | |
| kill -0 $APP_PID | |
| kill $APP_PID | |
| windows-host: | |
| name: Windows host (WinRT build) | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Checkout Rivet at pin | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: turinglambdaai/rivet | |
| ref: ${{ env.RIVET_PIN }} | |
| path: rivet | |
| - name: Setup Racket CS 9.3 | |
| uses: Bogdanp/setup-racket@v1.15 | |
| with: | |
| architecture: x64 | |
| distribution: full | |
| variant: CS | |
| version: '9.3' | |
| - name: Link Rivet | |
| shell: bash | |
| run: raco pkg install --auto --no-docs --name rivet --link "$GITHUB_WORKSPACE/rivet" | |
| - name: Build host | |
| shell: pwsh | |
| run: raco rivet build |