Files
aego/.github/workflows/github-native.yml
T
sanspie 104051ea96
ci-platforms / darwin arm64 smoke (push) Skipped
ci-platforms / darwin amd64 smoke (push) Skipped
ci-platforms / windows amd64 smoke (push) Skipped
github-native / gitea-pending (push) Skipped
github-native / darwin amd64 native (push) Skipped
github-native / linux amd64 native (push) Skipped
github-native / windows amd64 native (push) Skipped
github-native / darwin arm64 native (push) Skipped
github-native / gitea-result (push) Skipped
GitHub / windows amd64 native GitHub-hosted native CI: failure
GitHub / darwin arm64 native GitHub-hosted native CI: failure
GitHub / darwin amd64 native GitHub-hosted native CI: failure
GitHub / linux amd64 native GitHub-hosted native CI: success
ci / build (amd64, linux, ubuntu-24.04) (push) Failing after 10m33s
ci / checks (push) Failing after 30m26s
ci / release (push) Skipped
ci: isolate native integration test execution
2026-11-10 02:44:24 +03:00

209 lines
8.5 KiB
YAML

name: github-native
on:
push:
branches: [master]
tags: ['v*']
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
gitea-pending:
if: github.server_url == 'https://github.com'
runs-on: ubuntu-24.04
timeout-minutes: 5
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- name: Test status reporter
run: python3 -m unittest discover -s tools/ci -p gitea_status_test.py
- name: Report queued native jobs to Gitea
if: github.repository == 'Alexander-D-Karpov/aego' && github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
continue-on-error: true
env:
GITEA_STATUS_TOKEN: ${{ secrets.GITEA_STATUS_TOKEN }}
run: python3 tools/ci/gitea_status.py pending
native:
needs: gitea-pending
if: github.server_url == 'https://github.com'
name: ${{ matrix.goos }} ${{ matrix.goarch }} native
# Gitea may assign a runner before evaluating job-level `if`. Route its
# skipped matrix entries to the available Linux runner instead of leaving
# Windows/macOS entries queued forever.
runs-on: ${{ github.server_url == 'https://github.com' && matrix.runner || 'ubuntu-24.04' }}
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
include:
- { runner: windows-2025, goos: windows, goarch: amd64 }
- { runner: macos-15, goos: darwin, goarch: arm64 }
- { runner: macos-15-intel, goos: darwin, goarch: amd64 }
- { runner: ubuntu-24.04, goos: linux, goarch: amd64 }
defaults:
run:
shell: bash
env:
CGO_ENABLED: '1'
AEGO_LANG: en
EXPECT_GOOS: ${{ matrix.goos }}
EXPECT_GOARCH: ${{ matrix.goarch }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
with:
go-version-file: go.mod
cache: false
- name: Windows native toolchain
if: runner.os == 'Windows'
id: msys2
uses: msys2/setup-msys2@ec48f7c5447b3140e2b088413ae3a55687bccb6e # 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
mingw-w64-ucrt-x86_64-nsis
- name: Windows toolchain path
if: runner.os == 'Windows'
env:
MSYS2_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
run: echo "${MSYS2_LOCATION}\\ucrt64\\bin" >> "$GITHUB_PATH"
- name: macOS tools
if: runner.os == 'macOS'
run: brew list ninja >/dev/null 2>&1 || brew install ninja
- name: Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build pkg-config openssl \
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 \
glslang-tools=15.1.0-2~ubuntu0.24.04.2
bash tools/check-glslang.sh
- name: Build pinned shader validator
if: runner.os != 'Linux'
run: bash tools/ci/github-glslang.sh
- name: Record environment and check architecture
run: |
mkdir -p .cache/github-ci/logs
{
echo "commit=$(git rev-parse HEAD)"
echo "event_sha=$GITHUB_SHA"
echo "runner=$RUNNER_OS/$RUNNER_ARCH"
uname -a
go version
go env GOOS GOARCH CGO_ENABLED CC
cmake --version
gcc --version
} > .cache/github-ci/logs/environment.txt 2>&1
cat .cache/github-ci/logs/environment.txt
test "$(git rev-parse HEAD)" = "$GITHUB_SHA"
test "$(go env GOOS)" = "$EXPECT_GOOS"
test "$(go env GOARCH)" = "$EXPECT_GOARCH"
test "$(go env CGO_ENABLED)" = 1
- name: Build pinned SDL
run: bash tools/bootstrap-native.sh 2>&1 | tee .cache/github-ci/logs/bootstrap.txt
- name: Build all packages
run: go build ./... 2>&1 | tee .cache/github-ci/logs/build.txt
- name: Native platform tests
if: runner.os != 'Linux'
run: go run ./tools/ci/nativetests 2>&1 | tee .cache/github-ci/logs/tests.txt
- name: Linux compatibility tests
if: runner.os == 'Linux'
run: go test -count=1 ./asset/... ./engine/... ./runtime/... ./update/... 2>&1 | tee .cache/github-ci/logs/tests.txt
- name: Strict headless smoke
run: go run ./cmd/sandbox --demo headless --frames 600 --strict-allocs
- name: CLI and headless runtime smoke
run: bash tools/ci/github-cli-smoke.sh 2>&1 | tee .cache/github-ci/logs/cli-smoke.txt
- name: Build Windows portable and installer
if: runner.os == 'Windows'
run: bash tools/ci/github-windows-package.sh 2>&1 | tee .cache/github-ci/logs/windows-package.txt
- name: Test user PATH preservation
if: runner.os == 'Windows'
shell: pwsh
run: ./tools/release/windows/path_test.ps1
- name: Native silent installer and uninstaller
if: runner.os == 'Windows'
shell: pwsh
run: ./tools/ci/github-windows-installer-smoke.ps1
- name: Build macOS app bundle
if: runner.os == 'macOS'
run: bash tools/ci/github-macos-package.sh 2>&1 | tee .cache/github-ci/logs/macos-package.txt
- name: Package Linux CLI
if: runner.os == 'Linux'
run: |
mkdir -p .cache/github-ci/dist/linux
cp .cache/github-ci/bin/aego .cache/github-ci/dist/linux/aego-linux-amd64
cd .cache/github-ci/dist/linux
sha256sum aego-linux-amd64 > SHA256SUMS.txt
- name: Upload diagnostic logs
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: native-logs-${{ matrix.goos }}-${{ matrix.goarch }}
path: .cache/github-ci/logs/
include-hidden-files: true
if-no-files-found: ignore
- name: Upload Windows portable
if: runner.os == 'Windows' && success()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: windows-amd64-portable-unsigned
path: .cache/github-ci/dist/portable/
include-hidden-files: true
if-no-files-found: error
- name: Upload Windows installer
if: runner.os == 'Windows' && success()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: windows-amd64-installer-unsigned
path: .cache/github-ci/dist/installer/
include-hidden-files: true
if-no-files-found: error
- name: Upload macOS app
if: runner.os == 'macOS' && success()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: macos-${{ matrix.goarch }}-app-not-notarized
path: .cache/github-ci/dist/macos/
include-hidden-files: true
if-no-files-found: error
- name: Upload Linux CLI
if: runner.os == 'Linux' && success()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: linux-amd64-cli
path: .cache/github-ci/dist/linux/
include-hidden-files: true
if-no-files-found: error
gitea-result:
if: ${{ always() && github.server_url == 'https://github.com' && github.repository == 'Alexander-D-Karpov/aego' && github.ref == 'refs/heads/master' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') }}
needs: native
runs-on: ubuntu-24.04
timeout-minutes: 5
permissions:
contents: read
actions: read
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- name: Report actual native results to Gitea
env:
GITEA_STATUS_TOKEN: ${{ secrets.GITEA_STATUS_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python3 tools/ci/gitea_status.py finished