2020-05-10 16:57:11 -03:00
# Install
2018-11-22 17:01:25 -02:00
2021-06-21 02:13:49 +00:00
There are two GoReleaser distributions: OSS and [Pro ](/pro/ ).
2021-05-26 19:08:46 -03:00
You can install the pre-compiled binary (in several different ways), use Docker or compile from source (when on OSS).
2019-03-24 20:10:30 -03:00
2021-07-12 14:49:26 -03:00
Bellow you can find the steps for each of them.
2018-11-22 17:01:25 -02:00
## Install the pre-compiled binary
2021-05-26 19:08:46 -03:00
### homebrew tap
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
brew install goreleaser/tap/goreleaser
```
2018-11-22 17:01:25 -02:00
2021-07-09 19:11:58 +00:00
=== "Pro"
```sh
brew install goreleaser/tap/goreleaser-pro
```
2021-05-26 19:08:46 -03:00
### homebrew
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
brew install goreleaser
```
2018-11-22 17:01:25 -02:00
2021-07-12 14:49:26 -03:00
!!! info
The [formula in homebrew-core ](https://github.com/Homebrew/homebrew-core/blob/master/Formula/goreleaser.rb ) might be slightly outdated.
Use our homebrew tap to always get the latest updates.
2021-05-26 19:08:46 -03:00
### snapcraft
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
sudo snap install --classic goreleaser
```
2018-11-22 17:01:25 -02:00
2021-05-26 19:08:46 -03:00
### scoop
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install goreleaser
```
2018-11-22 17:01:25 -02:00
2021-07-09 19:11:58 +00:00
=== "Pro"
```sh
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install goreleaser-pro
```
2021-05-26 19:08:46 -03:00
2021-06-21 02:13:49 +00:00
### apt
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
2021-07-29 10:39:14 -03:00
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
2021-07-09 19:11:58 +00:00
sudo apt update
sudo apt install goreleaser
```
2021-06-21 02:13:49 +00:00
2021-07-09 19:11:58 +00:00
=== "Pro"
```sh
2021-07-29 10:39:14 -03:00
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
2021-07-09 19:11:58 +00:00
sudo apt update
sudo apt install goreleaser-pro
```
2021-06-21 02:13:49 +00:00
### yum
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
echo '[goreleaser]
name=GoReleaser
2021-07-29 10:39:14 -03:00
baseurl=https://repo.goreleaser.com/yum/
2021-07-09 19:11:58 +00:00
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
sudo yum install goreleaser
```
=== "Pro"
```sh
echo '[goreleaser]
name=GoReleaser
2021-07-29 10:39:14 -03:00
baseurl=https://repo.goreleaser.com/yum/
2021-07-09 19:11:58 +00:00
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
sudo yum install goreleaser-pro
```
2021-06-21 02:13:49 +00:00
2021-05-26 19:08:46 -03:00
### deb, rpm and apk packages
2021-07-10 16:10:22 +00:00
=== "OSS"
Download the `.deb` , `.rpm` or `.apk` packages from the [OSS releases page][releases] and install them with the appropriate tools.
=== "Pro"
Download the `.deb` , `.rpm` or `.apk` packages from the [Pro releases page][pro-releases] and install them with the appropriate tools.
2018-11-22 17:01:25 -02:00
2021-05-26 19:08:46 -03:00
### shell script
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | sh
```
2019-10-20 19:30:29 +05:30
2021-05-26 19:08:46 -03:00
<!-- TODO: write a new shell script and store it within the website -->
### go install
2021-07-09 19:11:58 +00:00
=== "OSS"
```sh
2021-07-20 09:20:05 -03:00
go install github.com/goreleaser/goreleaser@latest
2021-07-09 19:11:58 +00:00
```
2021-03-23 09:46:11 -03:00
2021-05-26 19:08:46 -03:00
### manually
2018-11-22 17:01:25 -02:00
2021-07-09 19:11:58 +00:00
=== "OSS"
2021-07-09 19:13:50 +00:00
Download the pre-compiled binaries from the [OSS releases page][releases] and copy them to the desired location.
2021-07-09 19:11:58 +00:00
=== "Pro"
2021-07-09 19:13:50 +00:00
Download the pre-compiled binaries from the [Pro releases page][pro-releases] and copy them to the desired location.
2018-11-22 17:01:25 -02:00
2021-08-24 22:31:02 -03:00
## Verifying the binaries
All artifacts are checksummed and the checksum file is signed with [cosign][].
You can verify it using [our public key ](https://goreleaser.com/goreleaser.pub ).
=== "OSS"
1. Download the files you want, the `goreleaser_checksums.txt` and `goreleaser_checksums.txt.sig` files from the [releases][releases] page.
1. Get our public key:
```sh
wget https://goreleaser.com/goreleaser.pub
```
1. Verify the signature:
```sh
cosign verify-blob \
-key goreleaser.pub \
-signature goreleaser_checksums.txt.sig \
goreleaser_checksums.txt
```
1. If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
```sh
sha256sum --ignore-missing -c goreleaser-pro_checksums.txt
```
=== "Pro"
1. Download the files you want, the `goreleaser-pro_checksums.txt` and `goreleaser-pro_checksums.txt.sig` files from the [releases][pro-releases] page.
1. Get our public key:
```sh
wget https://goreleaser.com/goreleaser.pub
```
1. Verify the signature:
```sh
cosign verify-blob \
-key goreleaser.pub \
-signature goreleaser-pro_checksums.txt.sig \
goreleaser-pro_checksums.txt
```
1. If the signature is ok, you can then verify the SHA256 sums match with the downloaded binary:
```sh
sha256sum --ignore-missing -c goreleaser-pro_checksums.txt
```
## Verifying docker images
Our Docker image is signed with [cosign][].
You can verify it using [our public key ](https://goreleaser.com/goreleaser.pub ).
=== "OSS"
```sh
wget https://goreleaser.com/goreleaser.pub
cosign verify -key goreleaser.pub goreleaser/goreleaser
cosign verify -key goreleaser.pub ghcr.io/goreleaser/goreleaser
```
=== "Pro"
```sh
wget https://goreleaser.com/goreleaser.pub
cosign verify -key goreleaser.pub goreleaser/goreleaser-pro
cosign verify -key goreleaser.pub ghcr.io/goreleaser/goreleaser-pro
```
2018-11-22 17:01:25 -02:00
## Running with Docker
2021-05-26 19:08:46 -03:00
You can also use it within a Docker container.
To do that, you'll need to execute something more-or-less like the examples bellow.
2021-07-09 19:11:58 +00:00
=== "OSS"
Registries:
- [`goreleaser/goreleaser` ](https://hub.docker.com/r/goreleaser/goreleaser )
- [`ghcr.io/goreleaser/goreleaser` ](https://github.com/orgs/goreleaser/packages/container/package/goreleaser )
Example usage:
```sh
docker run --rm --privileged \
-v $PWD:/go/src/github.com/user/repo \
-v /var/run/docker.sock:/var/run/docker.sock \
-w /go/src/github.com/user/repo \
-e GITHUB_TOKEN \
-e DOCKER_USERNAME \
-e DOCKER_PASSWORD \
-e DOCKER_REGISTRY \
goreleaser/goreleaser release
```
=== "Pro"
Registries:
- [`goreleaser/goreleaser-pro` ](https://hub.docker.com/r/goreleaser/goreleaser-pro )
- [`ghcr.io/goreleaser/goreleaser-pro` ](https://github.com/orgs/goreleaser/packages/container/package/goreleaser-pro )
Example usage:
```sh
docker run --rm --privileged \
-v $PWD:/go/src/github.com/user/repo \
-v /var/run/docker.sock:/var/run/docker.sock \
-w /go/src/github.com/user/repo \
-e GITHUB_TOKEN \
-e DOCKER_USERNAME \
-e DOCKER_PASSWORD \
-e DOCKER_REGISTRY \
-e GORELEASER_KEY \
goreleaser/goreleaser-pro release
```
2021-05-26 19:08:46 -03:00
2020-05-10 16:57:11 -03:00
!!! info
Currently, the provided docker image does not support
the generation of snapcraft packages.
2019-03-24 20:10:30 -03:00
2018-11-22 17:01:25 -02:00
Note that the image will almost always have the last stable Go version.
2019-03-24 20:10:30 -03:00
The `DOCKER_REGISTRY` environment variable can be left empty when you are
2018-12-10 16:45:01 +01:00
releasing to the public docker registry.
2019-03-24 20:10:30 -03:00
If you need more things, you are encouraged to keep your own image. You can
always use GoReleaser's [own Dockerfile][dockerfile] as an example though
and iterate from that.
2018-11-22 17:01:25 -02:00
[dockerfile]: https://github.com/goreleaser/goreleaser/blob/master/Dockerfile
[releases]: https://github.com/goreleaser/goreleaser/releases
2021-05-26 19:08:46 -03:00
[pro-releases]: https://github.com/goreleaser/goreleaser-pro/releases
2021-08-24 22:31:02 -03:00
[cosign]: https://github.com/sigstore/cosign
2018-11-22 17:01:25 -02:00
2020-05-10 18:59:21 -03:00
## Compiling from source
2018-11-22 17:01:25 -02:00
2019-05-14 11:22:56 -03:00
Here you have two options:
2020-05-11 09:35:58 -03:00
If you want to contribute to the project, please follow the
2021-06-21 02:13:49 +00:00
steps on our [contributing guide ](/contributing/ ).
2019-05-14 11:22:56 -03:00
2020-05-11 09:35:58 -03:00
If you just want to build from source for whatever reason, follow these steps:
2019-05-14 11:22:56 -03:00
2021-03-23 09:46:11 -03:00
**clone:**
2019-05-14 11:22:56 -03:00
2020-08-14 18:13:02 -03:00
```sh
git clone https://github.com/goreleaser/goreleaser
cd goreleaser
2020-05-11 09:35:58 -03:00
```
2021-03-23 09:46:11 -03:00
**get the dependencies:**
2020-05-11 09:35:58 -03:00
2020-08-14 18:13:02 -03:00
```sh
2021-03-23 09:46:11 -03:00
go mod tidy
2020-05-11 09:35:58 -03:00
```
2021-03-23 09:46:11 -03:00
**build:**
2020-05-11 09:35:58 -03:00
2020-08-14 18:13:02 -03:00
```sh
go build -o goreleaser .
2020-05-11 09:35:58 -03:00
```
2021-03-23 09:46:11 -03:00
**verify it works:**
2019-05-14 11:22:56 -03:00
2020-08-14 18:13:02 -03:00
```sh
./goreleaser --version
2019-05-14 11:22:56 -03:00
```