Repository navigation
Add tag-triggered release CI: macOS universal bundle, Windows exe, Linux binary, SBOM, changelog, and PR test checks - #3
Conversation
…angelog Co-authored-by: randomenterprisesolutions <7422754+randomenterprisesolutions@users.noreply.github.com>
randomenterprisesolutions
left a comment
There was a problem hiding this comment.
@copilot execute the tests as well and let them run on prs to main.
…s passing Co-authored-by: randomenterprisesolutions <7422754+randomenterprisesolutions@users.noreply.github.com>
Done in d20bf95. Added two things:
|
randomenterprisesolutions
left a comment
There was a problem hiding this comment.
@copilot let's use commit hashes to pin the actions.
Is the version embedded in the binary for windows?
…binary Co-authored-by: randomenterprisesolutions <7422754+randomenterprisesolutions@users.noreply.github.com>
Done in 663b4cb. Action pinning – all uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4Windows version – it was not embedded before. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
No CI existed to produce release artifacts or run tests automatically. This adds two workflows: a CI workflow that runs tests on PRs and pushes to
main, and a release workflow that fires onv[0-9]*tag pushes and publishes a GitHub Release with platform binaries, a CycloneDX SBOM, and a git-cliff changelog.Workflow jobs (
ci.yml)test– Runscargo test --allon every push tomainand every PR targetingmain. Installs the required X11/Wayland/GTK system headers so the crate compiles correctly on the Ubuntu runner.Workflow jobs (
release.yml)test– Runscargo test --allbefore any platform build begins; all three build jobs depend on this job so a failing test aborts the releasebuild-macos– Builds for bothaarch64-apple-darwinandx86_64-apple-darwin, joins them withlipo, assembles a hand-crafted.appbundle (withInfo.plist+ icon), and packages it aslog-dash-macos-universal.app.tar.gzbuild-windows– Buildslog-dash.exeonwindows-latest, packages aslog-dash-windows-x86_64.zipbuild-linux– Installs required X11/Wayland/GTK headers onubuntu-latest, builds the binary, packages aslog-dash-linux-x86_64.tar.gzrelease– Runs after all builds; generatessbom.cdx.json(CycloneDX JSON viacargo-cyclonedx), generatesCHANGELOG.md(viaorhun/git-cliff-action), then publishes everything to the GitHub Release viasoftprops/action-gh-releaseThe release pipeline dependency chain is:
test → build-macos / build-windows / build-linux → releaseSupporting files
cliff.toml– git-cliff config; groups conventional commits (feat,fix, etc.) and falls through to a catch-allChangesbucket for non-conventional commitsCargo.lock– committed (was erroneously gitignored; apps should lock); enables reproducible builds and cache keying in CI.gitignore– removedCargo.lockexclusionSecurity & supply-chain hardening
uses:action references in bothci.ymlandrelease.ymlare pinned to immutable commit SHAs, with the human-readable version tag kept as a trailing comment (e.g.actions/checkout@34e114876b… # v4). This prevents a compromised or silently-mutated mutable tag from altering what code runs in CI.Windows version embedding
build.rsnow setsFileVersion,ProductVersion,ProductName, andFileDescriptionin the Windows PEVERSIONINFOresource viawinres, sourced fromCARGO_PKG_VERSIONat compile time. The version is visible in Windows Explorer → Properties → Details and tracks whatever version is declared inCargo.toml.Triggering a release
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.