github.com/goreleaser/goreleaser@v1.25.1/CONTRIBUTING.md (about)

     1  # Contributing
     2  
     3  By participating in this project, you agree to abide our
     4  [code of conduct](https://github.com/goreleaser/.github/blob/main/CODE_OF_CONDUCT.md).
     5  
     6  ## Set up your machine
     7  
     8  `goreleaser` is written in [Go](https://golang.org/).
     9  
    10  Prerequisites:
    11  
    12  - [Task](https://taskfile.dev/installation)
    13  - [Go 1.22+](https://go.dev/doc/install)
    14  
    15  Other things you might need to run the tests:
    16  
    17  - [cosign](https://github.com/sigstore/cosign)
    18  - [Docker](https://www.docker.com/)
    19  - [GPG](https://gnupg.org)
    20  - [Podman](https://podman.io/)
    21  - [Snapcraft](https://snapcraft.io/)
    22  - [Syft](https://github.com/anchore/syft)
    23  - [upx](https://upx.github.io/)
    24  
    25  Clone `goreleaser` anywhere:
    26  
    27  ```sh
    28  git clone git@github.com:goreleaser/goreleaser.git
    29  ```
    30  
    31  `cd` into the directory and install the dependencies:
    32  
    33  ```sh
    34  task setup
    35  ```
    36  
    37  A good way of making sure everything is all right is running the test suite:
    38  
    39  ```sh
    40  task test
    41  ```
    42  
    43  ### A note about Docker multi-arch builds
    44  
    45  If you want to properly run the Docker tests, or run `goreleaser release
    46  --snapshot` locally, you might need to setup Docker for it.
    47  You can do so by running:
    48  
    49  ```sh
    50  task docker:setup
    51  ```
    52  
    53  ## Test your change
    54  
    55  You can create a branch for your changes and try to build from the source as you go:
    56  
    57  ```sh
    58  task build
    59  ```
    60  
    61  When you are satisfied with the changes, we suggest you run:
    62  
    63  ```sh
    64  task ci
    65  ```
    66  
    67  Before you commit the changes, we also suggest you run:
    68  
    69  ```sh
    70  task fmt
    71  ```
    72  
    73  ## Create a commit
    74  
    75  Commit messages should be well formatted, and to make that "standardized", we
    76  are using Conventional Commits.
    77  
    78  You can follow the documentation on
    79  [their website](https://www.conventionalcommits.org).
    80  
    81  ## Submit a pull request
    82  
    83  Push your branch to your `goreleaser` fork and open a pull request against the main branch.
    84  
    85  ## Financial contributions
    86  
    87  You can contribute in our OpenCollective or to any of the contributors directly.
    88  See [this page](https://goreleaser.com/sponsors) for more details.