native: shared Android, Windows and macOS workflows #7

Merged
james.maes merged 5 commits from native-workflows-pr into main 2026-11-08 13:44:54 +00:00
Owner

Native CI workflow types, KISS, one small shared workflow per platform:

  • android.yaml: Gradle invocations (one per line) in the pinned ci-android-runtime image on android-build (Lore builders, /dev/kvm). Optional commands + checksum-verified Node, optional emulator-tasks (boots an AVD and runs connected tests), optional publish-tasks on vX.Y.Z tags to the owner's Gitea Maven registry (gitea repository, giteaMavenUrl/giteaUsername/giteaPassword properties).
  • windows.yaml: host job on a Windows runner, commands as one PowerShell 7 script that stops on any error or non-zero native exit code; optional dotnet-version check; on v* tags uploads artifacts + SHA256SUMS to the tag's Gitea release.
  • macos.yaml: host job on grogu, commands with bash -exo pipefail; optional xcode (DEVELOPER_DIR) and lfs; same tag-release behaviour.

Proven with callers pinned to the branch:

  • android: QRun-IO/qqq-android run 7129 (unit tests, lint, debug+QA APKs, 48 connected tests on the emulator), 6.5 min.
  • windows: KofTwentyTwo/AppKit run 7142 (115 tests, 100% coverage gate, format, pack).
  • macos: KofTwentyTwo/MetalPOC 7135, VoicePOC 7138 (swift test, 20 tests), PerfectCup 7139.

Not exercised live: the tag release/publish steps (need a real tag; owner/release agent on the first one).

Callers reference @v1, so v1 needs to move to this merge commit (owner).

🤖 Generated with Claude Code

Native CI workflow types, KISS, one small shared workflow per platform: - `android.yaml`: Gradle invocations (one per line) in the pinned `ci-android-runtime` image on `android-build` (Lore builders, `/dev/kvm`). Optional `commands` + checksum-verified Node, optional `emulator-tasks` (boots an AVD and runs connected tests), optional `publish-tasks` on `vX.Y.Z` tags to the owner's Gitea Maven registry (`gitea` repository, `giteaMavenUrl`/`giteaUsername`/`giteaPassword` properties). - `windows.yaml`: host job on a Windows runner, `commands` as one PowerShell 7 script that stops on any error or non-zero native exit code; optional `dotnet-version` check; on `v*` tags uploads `artifacts` + `SHA256SUMS` to the tag's Gitea release. - `macos.yaml`: host job on grogu, `commands` with `bash -exo pipefail`; optional `xcode` (DEVELOPER_DIR) and `lfs`; same tag-release behaviour. Proven with callers pinned to the branch: - android: QRun-IO/qqq-android run 7129 (unit tests, lint, debug+QA APKs, 48 connected tests on the emulator), 6.5 min. - windows: KofTwentyTwo/AppKit run 7142 (115 tests, 100% coverage gate, format, pack). - macos: KofTwentyTwo/MetalPOC 7135, VoicePOC 7138 (swift test, 20 tests), PerfectCup 7139. Not exercised live: the tag release/publish steps (need a real tag; owner/release agent on the first one). Callers reference `@v1`, so `v1` needs to move to this merge commit (owner). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
james.maes added 5 commits 2026-11-08 13:44:38 +00:00
android.yaml runs Gradle gates in the pinned Android image on android-build
(optional emulator tasks, optional publish to the Gitea Maven registry on
vX.Y.Z tags). windows.yaml and macos.yaml run the caller's commands directly
on the Windows / macOS host runners and attach artifacts plus SHA256SUMS to
the Gitea release on v* tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Document that .ps1 files reporting failure with exit codes run as pwsh -File.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
james.maes merged commit 20792ea37f into main 2026-11-08 13:44:54 +00:00
james.maes deleted branch native-workflows-pr 2026-11-08 13:44:55 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/ci-workflows#7