# Contributing By participating to this project, you agree to abide our [code of conduct](/CODE_OF_CONDUCT.md). ## Setup your machine `goreleaser` is written in [Go](https://golang.org/). Prerequisites: * `make` * [Go 1.8+](https://golang.org/doc/install) * [fpm](https://fpm.readthedocs.io/en/latest/installing.html) * rpm / rpmbuild * [snapcraft](https://snapcraft.io/) * [Docker](https://www.docker.com/) Clone `goreleaser` from source into `$GOPATH`: ```sh $ mkdir -p $GOPATH/src/github.com/goreleaser/goreleaser $ cd $_ $ git clone git@github.com:goreleaser/goreleaser.git $ cd goreleaser ``` Install the build and lint dependencies: ```console $ make setup ``` A good way of making sure everything is all right is running the test suite: ```console $ make test ``` ## Test your change You can create a branch for your changes and try to build from the source as you go: ```console $ make build ``` When you are satisfied with the changes, we suggest you run: ```console $ make ci ``` Which runs all the linters and tests. ## Create a commit Commit messages should be well formatted. Start your commit message with the type. Choose one of the following: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `revert`, `add`, `remove`, `move`, `bump`, `update`, `release` After a colon, you should give the message a title, starting with uppercase and ending without a dot. Keep the width of the text at 72 chars. The title must be followed with a newline, then a more detailed description. Please reference any GitHub issues on the last line of the commit message (e.g. `See #123`, `Closes #123`, `Fixes #123`). An example: ``` docs: Add example for --release-notes flag I added an example to the docs of the `--release-notes` flag to make the usage more clear. The example is an realistic use case and might help others to generate their own changelog. See #284 ``` ## Submit a pull request Push your branch to your `goreleaser` fork and open a pull request against the master branch.