- GitHub runs CI only.
- GitLab is the release publisher.
- Cloudflare R2 is the auto-update source.
- The launcher is the only end-user distributable.
- The updater only replaces the launcher.
- The new launcher carries the new embedded core and updater.
R2_ACCOUNT_IDR2_ACCESS_KEY_IDR2_SECRET_ACCESS_KEY
Optional:
R2_BUCKETif you do not want the defaultosagent-releasesR2_RELEASE_PREFIXif you do not want the defaultreleasesCDN_BASE_URLif you do not want the defaulthttps://osa.fuckyourcdn.comGITLAB_RELEASE_TOKENif your runner cannot create releases withCI_JOB_TOKEN
- Push a tag to GitLab.
- GitLab builds Windows and Linux launcher archives.
- GitLab publishes archive checksums as separate assets.
- GitLab uploads the archives, checksums, and
release-manifest.jsonto Cloudflare R2. - GitLab updates
releases/latest.jsonon the CDN. - GitLab creates or updates the GitLab Release with links to the R2-hosted assets.
osagent-windows-x86_64.ziposagent-windows-x86_64.zip.sha256osagent-linux-x86_64.tar.gzosagent-linux-x86_64.tar.gz.sha256release-manifest.jsonreleases/latest.json
Run this before tagging a release:
.\build-launcher.ps1 -ChecksThat validates the same launcher-first build contract the release pipeline uses.