Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Releases with CI-built binaries #10

Open
eriksw opened this issue Jun 25, 2020 · 2 comments
Open

Releases with CI-built binaries #10

eriksw opened this issue Jun 25, 2020 · 2 comments

Comments

@eriksw
Copy link

eriksw commented Jun 25, 2020

It'd be really nice if this repo included releases with usable binaries.

Would there be any interest in a PR to set up a Github Actions workflow that uses goreleaser to build and publish release artifacts when a semver tag is pushed?

I would propose configuring it to publish a "plain" binary as well as a deb, targeting at least amd64 to start. (The configuration to add other targets is trivial.)

@adamvduke
Copy link
Contributor

In general I would be in favor of this if it provides value. I'm not very familiar with goreleaser. Are there other examples of google projects on github that I can reference to get familiar with the tool?

@eriksw
Copy link
Author

eriksw commented Jul 8, 2020

I'm not familiar with the project in particular, but searching just within Google projects on Github, https://github.com/google/go-containerregistry is using goreleaser. (Looks like that project is still using Travis for some stuff instead of going all-in on GitHub actions, however.)

Goreleaser is a replacement for makefile+docker building that provides a standard solution for:
• Building artifacts (optionally in a matrix of different architectures, operating systems, go versions, etc...)
• Uploading the artifacts as a github release
• Uploading a sibling artifact with the sha256's of the other artifacts
• Automatically collecting commit subjects to give the release notes

It's preferable to use it from within GitHub actions because GitHub takes care of providing a GITHUB_TOKEN environment secret that goreleaser (or whatever else) can use to upload the release artifacts that grants access only to the repository the action is run in.

The upside of artifacts in general would be that it becomes possible for me (and countless other users) to have our startup scripts/packer scripts/etc include just a couple lines to install a ready-to-use artifact that's hosted by GitHub, instead of having to either maintain our own CI building this or script in a "go install" on systems that have no business having a go installation.

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

No branches or pull requests

2 participants