Skip to content

Stabilize Glaze architecture, runtime, security, packaging, and cross-platform APIs #64

Stabilize Glaze architecture, runtime, security, packaging, and cross-platform APIs

Stabilize Glaze architecture, runtime, security, packaging, and cross-platform APIs #64

Workflow file for this run

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