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
|
|
|
|
2023-01-02 22:19:17 -03:00
|
|
|
You can install the pre-compiled binary (in several ways), use Docker or compile
|
|
|
|
from source (when on OSS).
|
2019-03-24 20:10:30 -03:00
|
|
|
|
2021-09-16 14:31:57 -03:00
|
|
|
Below 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
|
|
|
|
2022-01-27 00:10:05 -03:00
|
|
|
### aur
|
|
|
|
|
|
|
|
=== "OSS"
|
|
|
|
```sh
|
|
|
|
yay -S goreleaser-bin
|
|
|
|
```
|
|
|
|
|
|
|
|
=== "Pro"
|
|
|
|
```sh
|
|
|
|
yay -S goreleaser-pro-bin
|
|
|
|
```
|
|
|
|
|
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.
|
|
|
|
|
2021-05-26 19:08:46 -03:00
|
|
|
### 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
|
|
|
|
2022-04-29 08:11:04 -03:00
|
|
|
### bash script
|
|
|
|
|
|
|
|
=== "OSS"
|
|
|
|
```sh
|
|
|
|
curl -sfL https://goreleaser.com/static/run | bash
|
|
|
|
```
|
|
|
|
|
|
|
|
=== "Pro"
|
|
|
|
```sh
|
|
|
|
curl -sfL https://goreleaser.com/static/run | DISTRIBUTION=pro bash
|
|
|
|
```
|
|
|
|
|
2022-04-29 08:26:19 -03:00
|
|
|
=== "Additional Options"
|
|
|
|
You can also set the `VERSION` and `DISTRIBUTION` variables to specify
|
|
|
|
a version instead of using latest and `pro` or `oss` distributions,
|
|
|
|
respectively.
|
2022-04-29 08:11:04 -03:00
|
|
|
|
2022-04-29 08:26:19 -03:00
|
|
|
You can also pass flags and args to GoReleaser:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
curl -sfL https://goreleaser.com/static/run |
|
|
|
|
VERSION=__VERSION__ DISTRIBUTION=oss bash -s -- check
|
|
|
|
```
|
2022-04-29 08:11:04 -03:00
|
|
|
|
2022-04-29 08:26:19 -03:00
|
|
|
!!! tip
|
|
|
|
This script does not install anything, it just downloads, verifies and
|
|
|
|
runs GoReleaser.
|
2022-08-25 10:15:33 -03:00
|
|
|
Its purpose is to be used within scripts and CIs.
|
2022-04-29 08:11:04 -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
|
|
|
|
2022-08-25 10:15:33 -03:00
|
|
|
### nightly
|
|
|
|
|
|
|
|
Nightly build are pre-releases of the current code into the main branch.
|
|
|
|
Use it for testing out new features only.
|
|
|
|
|
|
|
|
#### manually
|
|
|
|
|
|
|
|
=== "Pro"
|
|
|
|
Download the pre-compiled binaries from the [nightly release][nighly-pro-releases] and copy them to the desired location.
|
|
|
|
|
2022-10-12 01:12:38 -03:00
|
|
|
### bash script
|
|
|
|
|
|
|
|
=== "Pro"
|
|
|
|
```bash
|
|
|
|
curl -sfL https://goreleaser.com/static/run |
|
2023-01-30 23:06:46 -03:00
|
|
|
VERSION=nightly DISTRIBUTION=pro bash -s -- release --clean
|
2022-10-12 01:12:38 -03:00
|
|
|
```
|
|
|
|
|
2022-08-25 10:15:33 -03:00
|
|
|
#### docker
|
|
|
|
|
|
|
|
=== "Pro"
|
|
|
|
Docker images are also available, look for tags with a `-nightly` suffix.
|
|
|
|
|
|
|
|
Registries:
|
|
|
|
|
|
|
|
- [`goreleaser/goreleaser-pro`](https://hub.docker.com/r/goreleaser/goreleaser-pro)
|
|
|
|
- [`ghcr.io/goreleaser/goreleaser-pro`](https://github.com/goreleaser/goreleaser/pkgs/container/goreleaser-pro)
|
|
|
|
|
2021-12-16 13:43:11 -03:00
|
|
|
## Verifying the artifacts
|
2021-08-24 22:31:02 -03:00
|
|
|
|
2021-12-16 13:43:11 -03:00
|
|
|
### binaries
|
2021-08-24 22:31:02 -03:00
|
|
|
|
2022-08-25 10:15:33 -03:00
|
|
|
All artifacts are checksummed, and the checksum file is signed with [cosign][].
|
2021-08-24 22:31:02 -03:00
|
|
|
|
|
|
|
=== "OSS"
|
2021-12-16 13:43:11 -03:00
|
|
|
1. Download the files you want, and the `checksums.txt`, `checksum.txt.pem` and `checksums.txt.sig` files from the [releases][releases] page:
|
2021-11-22 09:39:16 -03:00
|
|
|
```sh
|
|
|
|
wget https://github.com/goreleaser/goreleaser/releases/download/__VERSION__/checksums.txt
|
|
|
|
wget https://github.com/goreleaser/goreleaser/releases/download/__VERSION__/checksums.txt.sig
|
2021-12-16 13:43:11 -03:00
|
|
|
wget https://github.com/goreleaser/goreleaser/releases/download/__VERSION__/checksums.txt.pem
|
2021-11-22 09:39:16 -03:00
|
|
|
```
|
2021-08-24 22:31:02 -03:00
|
|
|
1. Verify the signature:
|
|
|
|
```sh
|
2023-03-02 15:11:43 -03:00
|
|
|
cosign verify-blob \
|
2021-12-16 13:43:11 -03:00
|
|
|
--cert checksums.txt.pem \
|
|
|
|
--signature checksums.txt.sig \
|
2021-09-02 23:58:18 -03:00
|
|
|
checksums.txt
|
2021-08-24 22:31:02 -03:00
|
|
|
```
|
|
|
|
1. If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
|
|
|
|
```sh
|
2021-09-02 23:58:18 -03:00
|
|
|
sha256sum --ignore-missing -c checksums.txt
|
2021-08-24 22:31:02 -03:00
|
|
|
```
|
|
|
|
|
|
|
|
=== "Pro"
|
2021-12-16 13:43:11 -03:00
|
|
|
1. Download the files you want, and the `checksums.txt`, `checksum.txt.pem` and `checksums.txt.sig` files from the [releases][pro-releases] page:
|
2021-11-22 09:39:16 -03:00
|
|
|
```sh
|
|
|
|
wget https://github.com/goreleaser/goreleaser-pro/releases/download/__VERSION__-pro/checksums.txt
|
|
|
|
wget https://github.com/goreleaser/goreleaser-pro/releases/download/__VERSION__-pro/checksums.txt.sig
|
2021-12-16 13:43:11 -03:00
|
|
|
wget https://github.com/goreleaser/goreleaser-pro/releases/download/__VERSION__-pro/checksums.txt.pem
|
2021-11-22 09:39:16 -03:00
|
|
|
```
|
2021-08-24 22:31:02 -03:00
|
|
|
1. Verify the signature:
|
|
|
|
```sh
|
2023-03-02 15:11:43 -03:00
|
|
|
cosign verify-blob \
|
2021-12-16 13:43:11 -03:00
|
|
|
--cert checksums.txt.pem \
|
|
|
|
--signature checksums.txt.sig \
|
2021-09-02 23:58:18 -03:00
|
|
|
checksums.txt
|
2021-08-24 22:31:02 -03:00
|
|
|
```
|
2021-09-03 00:04:26 -03:00
|
|
|
1. If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
|
2021-08-24 22:31:02 -03:00
|
|
|
```sh
|
2021-09-02 23:58:18 -03:00
|
|
|
sha256sum --ignore-missing -c checksums.txt
|
2021-08-24 22:31:02 -03:00
|
|
|
```
|
|
|
|
|
2021-12-16 13:43:11 -03:00
|
|
|
### docker images
|
2021-08-24 22:31:02 -03:00
|
|
|
|
2021-12-16 13:43:11 -03:00
|
|
|
Our Docker images are signed with [cosign][].
|
2021-08-24 22:31:02 -03:00
|
|
|
|
2021-12-16 13:43:11 -03:00
|
|
|
Verify the signatures:
|
2021-08-24 22:31:02 -03:00
|
|
|
|
|
|
|
=== "OSS"
|
2021-09-23 00:33:28 -03:00
|
|
|
```sh
|
2023-03-02 15:11:43 -03:00
|
|
|
cosign verify goreleaser/goreleaser
|
2021-08-24 22:31:02 -03:00
|
|
|
```
|
|
|
|
|
|
|
|
=== "Pro"
|
2021-09-23 00:33:28 -03:00
|
|
|
```sh
|
2023-03-02 15:11:43 -03:00
|
|
|
cosign verify goreleaser/goreleaser-pro
|
2021-08-24 22:31:02 -03:00
|
|
|
```
|
|
|
|
|
2021-12-16 13:43:11 -03:00
|
|
|
!!! info
|
|
|
|
The `.pem` and `.sig` files are the image `name:tag`, replacing `/` and `:` with `-`.
|
|
|
|
|
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.
|
2021-09-16 14:31:57 -03:00
|
|
|
To do that, you'll need to execute something more-or-less like the examples below.
|
2021-05-26 19:08:46 -03:00
|
|
|
|
2021-07-09 19:11:58 +00:00
|
|
|
=== "OSS"
|
|
|
|
Registries:
|
|
|
|
|
|
|
|
- [`goreleaser/goreleaser`](https://hub.docker.com/r/goreleaser/goreleaser)
|
2021-10-17 15:13:52 -03:00
|
|
|
- [`ghcr.io/goreleaser/goreleaser`](https://github.com/goreleaser/goreleaser/pkgs/container/goreleaser)
|
2021-07-09 19:11:58 +00:00
|
|
|
|
|
|
|
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)
|
2021-10-17 15:13:52 -03:00
|
|
|
- [`ghcr.io/goreleaser/goreleaser-pro`](https://github.com/goreleaser/goreleaser/pkgs/container/goreleaser-pro)
|
2021-07-09 19:11:58 +00:00
|
|
|
|
|
|
|
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
|
2022-08-25 10:15:33 -03:00
|
|
|
Now, the provided docker image does not support
|
2020-05-10 16:57:11 -03:00
|
|
|
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
|
|
|
|
2021-11-12 17:23:32 -03:00
|
|
|
[dockerfile]: https://github.com/goreleaser/goreleaser/blob/main/Dockerfile
|
2018-11-22 17:01:25 -02:00
|
|
|
[releases]: https://github.com/goreleaser/goreleaser/releases
|
2021-05-26 19:08:46 -03:00
|
|
|
[pro-releases]: https://github.com/goreleaser/goreleaser-pro/releases
|
2022-08-25 10:15:33 -03:00
|
|
|
[nightly-pro-releases]: https://github.com/goreleaser/goreleaser-pro/releases/nightly
|
2021-08-24 22:31:02 -03:00
|
|
|
[cosign]: https://github.com/sigstore/cosign
|
2018-11-22 17:01:25 -02:00
|
|
|
|
2023-01-02 22:19:17 -03:00
|
|
|
## Packaging status
|
|
|
|
|
|
|
|
[![Packaging status](https://repology.org/badge/vertical-allrepos/goreleaser.svg)](https://repology.org/project/goreleaser/versions)
|
|
|
|
|
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
|
|
|
```
|