Contributing
By participating in this project, you agree to abide our code of conduct.
Set up your machine
goreleaser is written in Go.
Prerequisites:
Other things you might need to run some of the tests (they should get automatically skipped if a needed tool isn’t present):
Building
Clone goreleaser anywhere:
git clone [email protected]:goreleaser/goreleaser.gitcd into the directory and install the dependencies:
go mod tidyYou should then be able to build the binary:
go build -o goreleaser .
./goreleaser --versionTesting your changes
You can create a branch for your changes and try to build from the source as you go:
task buildWhen you are satisfied with the changes, we suggest you run:
task ciBefore you commit the changes, we also suggest you run:
task fmtA note about Docker multi-arch builds
If you want to properly run the Docker tests, or run goreleaser release --snapshot locally, you might need to setup Docker for it.
You can do so by running:
task docker:setupA note about Windows
Make sure to enable “Developer Mode” in Settings.
Writing pipes
Pipes should follow these conventions for consistent error output:
- Do not prefix error messages with the pipe name. Error wrapping with
the pipe name is done at the meta-pipe level (
publish,announce,defaults), so individual pipes should only describe the problem itself (e.g.,"no archives found"instead of"archive: no archives found"). - Use the pipe’s
String()method for context. Meta-pipes wrap errors usingfmt.Errorf("%s: %w", pipe.String(), err), which provides consistent, non-redundant context.
Creating a commit
Commit messages should be well formatted, and to make that “standardized”, we are using Conventional Commits.
You can follow the documentation on their website.
AI usage guidelines
AI usage is permitted as long as it is disclosed. “Disclosed” can mean any of the following:
- Commits have the
Co-authored-byorAssisted-bymarkers in the commit messages - Issues, pull requests, and discussions should explicitly say AI was used
Beyond that, if you used it for coding, you should:
- Fully understand the changes
- Review all the work
Agents that keep going on random repositories pretending to be a human doing things are not allowed.
We reserve the right to close any and all issues, pull requests, and discussions that do not follow these rules.
Submitting a pull request
Push your branch to your goreleaser fork and open a pull request against the main branch.
Financial contributions
You can contribute in our OpenCollective or to any of the contributors directly. See this page for more details.