Repository navigation
Stabilize Glaze architecture, runtime, security, packaging, and cross-platform APIs #64
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
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| test: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macOS-latest] | |
| racket-version: ['8.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| version: ${{ matrix.racket-version }} | |
| - name: Install Glaze package | |
| shell: bash | |
| run: raco pkg install --auto --no-docs --link "$PWD" | |
| - name: Run tests | |
| run: raco test glaze-test/ | |
| - name: Check formatting | |
| run: raco fmt --check glaze/ glaze-cli/ glaze-test/ scripts/ | |
| webview-e2e: | |
| # Real-window WebView end-to-end on each OS: open -> load (title | |
| # commits) -> capture -> navigate -> close -> on-close. Windows needs | |
| # nothing extra (WebView2 runtime is preinstalled); Linux runs under | |
| # Xvfb with the WebKitGTK packages. | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macOS-latest] | |
| racket-version: ['8.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| version: ${{ matrix.racket-version }} | |
| - name: Install Glaze package | |
| shell: bash | |
| run: raco pkg install --auto --no-docs --link "$PWD" | |
| - name: Install webview deps (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev xvfb | |
| - name: Probe webview libraries (Linux debug) | |
| if: runner.os == 'Linux' | |
| run: ldconfig -p | grep -E "libgtk-3|libwebkit2gtk|libglib-2.0|libgdk_pixbuf" | head -10 | |
| - name: Run webview e2e | |
| env: | |
| WEBKIT_DISABLE_DMABUF_RENDERER: '1' | |
| shell: bash | |
| run: | | |
| if [ "$RUNNER_OS" = "Linux" ]; then | |
| xvfb-run -a racket scripts/webview-e2e.rkt | |
| else | |
| racket scripts/webview-e2e.rkt | |
| fi | |
| package: | |
| # Build a sample app with `raco glaze build --installer` on each platform | |
| # and upload the resulting distribution + installer as artifacts. | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macOS-latest] | |
| racket-version: ['8.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| version: ${{ matrix.racket-version }} | |
| - name: Install Glaze package | |
| shell: bash | |
| run: raco pkg install --auto --no-docs --link "$PWD" | |
| - name: Install installer toolchain (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libayatana-appindicator3-dev libgtk-3-dev | |
| # AppImage tooling (optional; build falls back to tar.gz if missing) | |
| sudo wget -q https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool | |
| sudo chmod +x /usr/local/bin/appimagetool | |
| - name: Install installer toolchain (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| # WiX Toolset v4 (build falls back to zip if missing) | |
| dotnet tool install --global wix | |
| echo "$HOME/.dotnet/tools" >> $GITHUB_PATH | |
| - name: Verify packaged entry executes | |
| run: racket scripts/package-entry-smoke.rkt | |
| - name: Scaffold and build a sample app | |
| shell: bash | |
| run: | | |
| raco glaze init sampleapp | |
| cd sampleapp | |
| # --sign - exercises the signing pipeline everywhere: macOS signs | |
| # the bundle ad-hoc (verifiable without a cert); Windows/Linux | |
| # degrade with a loud warning when no signing toolchain exists. | |
| raco glaze build --name sampleapp --version 0.0.1 --out dist --installer --sign - | |
| - name: Verify macOS bundle signature | |
| if: runner.os == 'macOS' | |
| run: | | |
| codesign --verify --strict sampleapp/dist/sampleapp.app | |
| /usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" sampleapp/dist/sampleapp.app/Contents/Info.plist | grep -qx "0.0.1" | |
| - name: Upload distribution | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: glaze-${{ runner.os }}-dist | |
| path: | | |
| sampleapp/dist/ | |
| sampleapp/*.zip | |
| sampleapp/*.tar.gz | |
| sampleapp/dist/*.msi | |
| sampleapp/dist/*.dmg | |
| sampleapp/dist/*.AppImage | |
| package-racket-9-3-macos: | |
| # Regression coverage for the macOS/Racket 9.3 launcher failure reported | |
| # in issue #1. This job executes the final packaged binary, not merely the | |
| # build command. | |
| runs-on: macOS-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| version: '9.3' | |
| - name: Install Glaze package | |
| shell: bash | |
| run: raco pkg install --auto --no-docs --link "$PWD" | |
| - name: Verify packaged entry executes | |
| run: racket scripts/package-entry-smoke.rkt |