Skip to content

Release 2.3.1 with verified cross-platform packaging #53

Release 2.3.1 with verified cross-platform packaging

Release 2.3.1 with verified cross-platform packaging #53

Workflow file for this run

name: CI
on:
push:
branches: [master, main]
pull_request:
workflow_dispatch:
jobs:
lint-commit-messages:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Block AI-tool attribution trailers
shell: bash
run: |
set -euo pipefail
if [ "${{ github.event_name }}" = "pull_request" ]; then
base="${{ github.event.pull_request.base.sha }}"
else
base="${{ github.event.before }}"
fi
if ! git rev-parse -q --verify "${base}^{commit}" >/dev/null 2>&1; then
echo "No valid base commit; skipping footer check."
exit 0
fi
bad=0
for c in $(git rev-list "${base}..HEAD"); do
msg=$(git log -1 --format='%B' "$c")
if offending=$(printf '%s' "$msg" | ./.githooks/check-attribution.sh); then
:
else
echo "::error::Commit $c carries an AI-tool attribution trailer:"
printf '%s\n' "$offending"
bad=1
fi
done
if [ "$bad" -eq 1 ]; then
echo "Remove AI-tool attribution lines (e.g. \"Generated with Codebuff\" or \"Co-Authored-By: Copilot\") before merging; see AGENTS.md."
exit 1
fi
echo "No commit messages contain AI-tool attribution trailers."
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2022, macos-15]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 22
cache: npm
- uses: jurplel/install-qt-action@v4
with:
version: '6.8.3'
cache: true
- name: Linux build tools
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y ninja-build libgl1-mesa-dev libxkbcommon-x11-0 libxcb-cursor0
- name: Worker checks
shell: bash
run: |
npm ci
npx playwright install chromium
if [ "${{ runner.os }}" = "Linux" ]; then
npx playwright install firefox webkit
fi
npm run typecheck:worker
npm run build:worker
npm run test:worker
npm run test:site
- name: Native checks (Unix)
if: runner.os != 'Windows'
shell: bash
run: |
cmake -S . -B build/native -G Ninja -DCMAKE_BUILD_TYPE=Release -DCYBERSNAPPER_BUILD_TESTS=ON
cmake --build build/native --parallel
ctest --test-dir build/native --output-on-failure
- name: Native checks (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
cmake -S . -B build/native -G "Visual Studio 17 2022" -A x64 -DCYBERSNAPPER_BUILD_TESTS=ON
cmake --build build/native --config Release --parallel
ctest --test-dir build/native -C Release --output-on-failure
- name: Documentation screenshot smoke test
if: runner.os == 'Linux'
env:
QT_QPA_PLATFORM: offscreen
run: |
npm run screenshots:docs -- --output build/test-runtime/docs-output-a
npm run screenshots:docs -- --output build/test-runtime/docs-output-b
diff --recursive --brief build/test-runtime/docs-output-a build/test-runtime/docs-output-b