Skip to content

ci: add release workflow with platform binaries#4

Merged
jonwiggins merged 1 commit intojonwiggins:mainfrom
zeitlinger:add-release-workflow
Apr 22, 2026
Merged

ci: add release workflow with platform binaries#4
jonwiggins merged 1 commit intojonwiggins:mainfrom
zeitlinger:add-release-workflow

Conversation

@zeitlinger
Copy link
Copy Markdown
Contributor

Summary

  • Adds .github/workflows/release.yml triggered on v* tags
  • Builds xmllint (the CLI binary, gated on --features cli) for four targets: linux-x86-64, linux-aarch64, darwin-aarch64, windows-x86-64
  • Linux ARM uses cross for cross-compilation; other targets build natively
  • Uploads binaries as GitHub release assets named xmllint_{os}-{arch} (e.g. xmllint_linux-x86-64, xmllint_windows-x86-64.exe)

Motivation

Without pre-built binaries, package managers that support the github: backend (e.g. mise) must fall back to compiling from source via cargo install, which takes several minutes per machine. Binary releases make mise install near-instant.

The asset naming convention ({binary}_{os}-{arch}) matches what mise's github: backend auto-discovers, so no extra configuration is needed on the consumer side.

Notes

  • fail-fast: false keeps the matrix running if one platform fails
  • Uses Swatinem/rust-cache (already in ci.yml) for incremental build caching
  • Uses softprops/action-gh-release for the release step — widely used, no extra secrets needed beyond the default GITHUB_TOKEN

Builds xmllint for linux-x86-64, linux-aarch64, darwin-aarch64, and
windows-x86-64 on each v* tag and uploads the binaries as GitHub release
assets. Asset naming follows the xmllint_{os}-{arch} convention so
package managers (e.g. mise's github: backend) can pick up the right
binary automatically.
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
@zeitlinger zeitlinger marked this pull request as ready for review April 13, 2026 14:06
@jonwiggins
Copy link
Copy Markdown
Owner

Thanks for the contribution, @zeitlinger! This is a nicely scoped change — clean matrix, sensible action choices, and the mise motivation makes a lot of sense. Merging now.

I've opened a follow-up issue tracking some non-blocking improvements (macOS x86_64 coverage, tag/version consistency check, binary stripping, checksums, SHA-pinning third-party actions): see the issue linked from this PR. Happy to take more PRs if any of those interest you.

@jonwiggins jonwiggins merged commit a226ba2 into jonwiggins:main Apr 22, 2026
5 of 7 checks passed
jonwiggins added a commit that referenced this pull request Apr 22, 2026
…0bc-bd8efd3449ca

release workflow: follow-ups from PR #4
jonwiggins added a commit that referenced this pull request Apr 22, 2026
Bump to 0.4.2 and apply the hardened release workflow that was committed
as .github/release.yml.pending in PR #7 but couldn't be moved into
.github/workflows/ from a token without the workflow scope.

Release changes since 0.4.1:
- serial: eliminate implicit xml namespace for exclusive c14n (#5)
- ci: release workflow with per-platform xmllint binaries (#4, #7)
- release profile: strip = true for smaller binaries
- dependabot: weekly github-actions updates
@zeitlinger zeitlinger deleted the add-release-workflow branch April 24, 2026 16:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants