Release 2.3.1 with verified cross-platform packaging #53
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: [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 |