ci: add universal macOS release workflow

This commit is contained in:
reaper
2026-08-14 20:40:26 -05:00
parent d1fa7825fb
commit d3849acdd3
7 changed files with 173 additions and 3 deletions
+2 -1
View File
@@ -14,6 +14,7 @@
- Native `.pac` files are ZIP-compressed Aurora packages with `manifest.json` at archive root.
- A `.pac` placed beside the AppImage or in its `modules` folder is discovered automatically and appears in the Modules screen.
- Packaged applications also carry a generated `.pac` catalog in their application resources. The macOS DMG layout exposes the same catalog as an **Aurora Modules** folder while the copied `.app` retains its own embedded catalog after the DMG is ejected.
- The `macOS release` GitHub Actions workflow builds universal DMG and ZIP artifacts, verifies the embedded catalog, emits checksums, and optionally signs/notarizes when Apple credentials are configured.
- Linux packages use Aurora's 512×512 application icon and a synchronized `aurora-dockside` desktop filename, executable name, icon name, and `StartupWMClass`.
- `.pac` inspection rejects encrypted entries, symbolic links, path traversal, absolute/drive paths, excessive entry counts, and expanded archives larger than 256 MiB before extraction.
- Installation uses staging plus rollback-safe replacement, so a failed update preserves the currently installed module.
@@ -87,4 +88,4 @@ d2165af4b75ab888c6d35a750a449205123866231ba5e98e1cbe9bcaa8738f46 aurora-module-
- Clean-registry install/remove behavior was exercised through the real registry implementation in automated temporary-directory tests. The live GUI smoke used the already installed local WordPress package and project `24`.
- AppImage systems without working FUSE can use `--appimage-extract` and launch `squashfs-root/AppRun --no-sandbox`.
- The embedded catalog and DMG layout are configured and the identical Linux application-resource layout was verified. A final signed/notarized `.app` and DMG must be built and inspected on macOS or a macOS CI runner.
- The embedded catalog and DMG layout are configured and the identical Linux application-resource layout was verified. The macOS CI workflow must still complete once to validate the final Apple-generated DMG and `.app` artifacts.
+41
View File
@@ -0,0 +1,41 @@
# macOS release build
The `macOS release` GitHub Actions workflow builds a universal Intel and Apple Silicon release containing:
- `Aurora Dockside.app`
- DMG installer
- ZIP updater artifact
- Embedded WordPress `.pac` catalog
- Separate WordPress `.pac`
- SHA-256 checksum manifest
Run it manually from **Actions → macOS release → Run workflow**, or push a version tag such as `v2.0.0-alpha.24`.
## Unsigned test build
No secrets are required. The workflow produces an unsigned DMG suitable for internal verification. macOS Gatekeeper will warn users because it is not signed or notarized.
## Signed and notarized release
Configure these GitHub Actions repository secrets:
| Secret | Purpose |
| --- | --- |
| `MAC_CERTIFICATE_P12` | Base64-encoded Developer ID Application `.p12` certificate |
| `MAC_CERTIFICATE_PASSWORD` | Password protecting the `.p12` certificate |
| `APPLE_API_KEY_P8` | App Store Connect API private key contents |
| `APPLE_API_KEY_ID` | App Store Connect API key ID |
| `APPLE_API_ISSUER` | App Store Connect API issuer ID |
The workflow refuses a partially configured release where a signing certificate is present but notarization credentials are missing.
## DMG contents
The mounted DMG contains the application, an Applications shortcut, and an **Aurora Modules** folder. The application also retains the module catalog internally at:
```text
Aurora Dockside.app/Contents/Resources/module-catalog/
└── wordpress-1.2.0.pac
```
The workflow verifies that the internal `.pac` is byte-for-byte identical to the separately uploaded package before publishing its artifacts.