Files
aego/.github/workflows/ci-platforms.yml
T
sanspie a1eb467600 Stage 11b6: QA tools for the agent and the editor's proxy (D341 amended)
scene_run plays the game the way a player would and checks the result in the same run. input presses actions by frame: press, hold over a range, release, and axis values. assert reads values with the paths scene_set takes, at a frame (@120) or at any frame of the run, with ~= comparing numbers within 0.01, and exists or gone for nodes; the report gives ok or failed with the value and the frame, a failed check fails the run, and the CLI exits with 2. shot captures up to three frames from a run with a hidden window: the answer carries them as images scaled to 640 wide (scale changes it) and the full frames stay under .aego/cache/runs.

While the editor is open, the CLI and aego mcp go through it. The editor serves the agent commands on a second loopback MCP server over the same bridge and writes its address in .aego/editor.lock. A change becomes an Undo step named after its origin, via CLI or via agent with the client's name, and asset creation works because the editor does it. Window > Confirm Changes from Outside Agents (editor.proxy.confirm) makes these changes wait in the Agent panel instead; follow mode shows outside calls like the panel's agent's. When the editor does not answer, the CLI works on the files as before.

The native Windows and macOS jobs of ci-platforms are named smoke: the Windows build itself is cross-compiled on the Linux runner.
2026-10-26 15:39:35 +03:00

110 lines
3.9 KiB
YAML

name: ci-platforms
on:
push:
branches: [master]
pull_request:
permissions:
contents: read
env:
LINUX_PKGS: >-
build-essential cmake ninja-build pkg-config
libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev
libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev libxtst-dev libxkbcommon-dev
libwayland-dev wayland-protocols libdecor-0-dev
libasound2-dev libpulse-dev libdrm-dev libgbm-dev libudev-dev libdbus-1-dev libibus-1.0-dev
jobs:
# Native runs on Windows and macOS machines; the Windows build itself is cross-compiled on Linux in ci.yml (D301).
smoke:
name: ${{ matrix.goos }} ${{ matrix.goarch }} smoke
if: vars.PLATFORM_RUNNERS == 'true'
strategy:
fail-fast: false
matrix:
include:
- { os: windows-2022, goos: windows, goarch: amd64 }
- { os: macos-15-intel, goos: darwin, goarch: amd64 }
- { os: macos-15, goos: darwin, goarch: arm64 }
runs-on: ${{ vars.PLATFORM_RUNNERS == 'true' && matrix.os || 'ubuntu-24.04' }}
defaults:
run:
shell: bash
env:
CGO_ENABLED: "1"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: linux packages
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y $LINUX_PKGS
- name: msys2
if: runner.os == 'Windows'
id: msys2
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
update: false
install: mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja
- name: mingw path
if: runner.os == 'Windows'
run: echo "${{ steps.msys2.outputs.msys2-location }}\ucrt64\bin" >> "$GITHUB_PATH"
- name: macos tools
if: runner.os == 'macOS'
run: brew list ninja >/dev/null 2>&1 || brew install ninja
- uses: actions/cache@v4
continue-on-error: true
with:
path: .cache/native
key: native-${{ matrix.goos }}_${{ matrix.goarch }}-${{ hashFiles('third_party/sdl/version.txt', 'tools/bootstrap-native.sh') }}
- name: bootstrap native
run: bash tools/bootstrap-native.sh
- name: build
run: go build ./...
- name: test
run: go test ./...
- name: test without native backends
run: go test -tags aego_nonative $(go list ./... | grep -v -e '/platform/sdl$' -e '/gpu/gl33$' -e '/gpu/gl33/gl$')
- name: gl tests (offscreen, llvmpipe)
if: runner.os == 'Linux'
env:
SDL_VIDEODRIVER: offscreen
LIBGL_ALWAYS_SOFTWARE: "1"
GALLIUM_DRIVER: llvmpipe
run: go test -tags aego_gltest ./tests/gl/
- name: golden
if: runner.os == 'Linux'
env:
SDL_VIDEODRIVER: offscreen
LIBGL_ALWAYS_SOFTWARE: "1"
GALLIUM_DRIVER: llvmpipe
run: go test -tags aego_golden ./tests/golden/...
- name: headless smoke
run: go run ./cmd/sandbox --demo headless --frames 600 --strict-allocs
- name: build the cli
run: go build -o /tmp/aego ./cmd/aego
- name: cli smoke
run: |
/tmp/aego new /tmp/clitest
/tmp/aego import /tmp/clitest
/tmp/aego check /tmp/clitest
/tmp/aego run /tmp/clitest --headless --frames 60
- name: example project
run: |
/tmp/aego check examples/native-rotator
/tmp/aego run examples/native-rotator --headless --frames 60
- name: export packages
run: go test -count=1 ./runtime/... ./vfs/exportfs ./app/export/...
- name: export and run headless
run: go test -count=1 -run 'TestExport' -v ./tests/integration
- name: editor app bundle
if: runner.os == 'macOS'
run: |
make editor-app
plutil -lint ".cache/Aego Editor.app/Contents/Info.plist"
codesign --verify --deep ".cache/Aego Editor.app"