2017-01-02 19:08:49 +02:00
|
|
|
# Contributing
|
|
|
|
|
|
|
|
By participating to this project, you agree to abide our [code of
|
|
|
|
conduct](/CODE_OF_CONDUCT.md).
|
|
|
|
|
|
|
|
## Setup your machine
|
|
|
|
|
2017-01-17 14:47:34 +02:00
|
|
|
`goreleaser` is written in [Go](https://golang.org/).
|
2017-01-02 19:08:49 +02:00
|
|
|
|
2017-10-02 12:35:20 +02:00
|
|
|
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/)
|
2017-01-02 19:08:49 +02:00
|
|
|
|
2017-01-17 14:47:34 +02:00
|
|
|
Clone `goreleaser` from source into `$GOPATH`:
|
2017-01-02 19:08:49 +02:00
|
|
|
|
|
|
|
```sh
|
2017-10-05 10:11:44 +02:00
|
|
|
$ mkdir -p $GOPATH/src/github.com/goreleaser/goreleaser
|
2017-05-13 00:54:56 +02:00
|
|
|
$ cd $_
|
|
|
|
$ git clone git@github.com:goreleaser/goreleaser.git
|
|
|
|
$ cd goreleaser
|
2017-01-02 19:08:49 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
Install the build and lint dependencies:
|
|
|
|
|
2017-08-19 00:13:13 +02:00
|
|
|
```console
|
2017-01-02 19:08:49 +02:00
|
|
|
$ make setup
|
|
|
|
```
|
|
|
|
|
|
|
|
A good way of making sure everything is all right is running the test suite:
|
|
|
|
|
2017-08-19 00:13:13 +02:00
|
|
|
```console
|
2017-01-02 19:08:49 +02:00
|
|
|
$ make test
|
|
|
|
```
|
|
|
|
|
|
|
|
## Test your change
|
|
|
|
|
|
|
|
You can create a branch for your changes and try to build from the source as you go:
|
|
|
|
|
2017-08-19 00:13:13 +02:00
|
|
|
```console
|
2017-04-21 21:20:34 +02:00
|
|
|
$ make build
|
2017-01-02 19:08:49 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
When you are satisfied with the changes, we suggest you run:
|
|
|
|
|
2017-08-19 00:13:13 +02:00
|
|
|
```console
|
2017-01-02 19:08:49 +02:00
|
|
|
$ make ci
|
|
|
|
```
|
|
|
|
|
|
|
|
Which runs all the linters and tests.
|
|
|
|
|
2017-10-01 20:15:06 +02:00
|
|
|
## 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
|
|
|
|
```
|
|
|
|
|
2017-01-02 19:08:49 +02:00
|
|
|
## Submit a pull request
|
|
|
|
|
2017-01-17 14:47:34 +02:00
|
|
|
Push your branch to your `goreleaser` fork and open a pull request against the
|
2017-01-02 19:08:49 +02:00
|
|
|
master branch.
|