1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-19 20:57:53 +02:00
goreleaser/www/docs/install.md

400 lines
10 KiB
Markdown
Raw Normal View History

# Install
2024-07-10 01:27:11 -03:00
There are two GoReleaser distributions: OSS and [Pro](pro.md), each have a
multitude of installation options.
2021-05-26 19:08:46 -03:00
2024-07-10 01:27:11 -03:00
You can see the instructions for each of them below.
2019-03-24 20:10:30 -03:00
2024-07-10 01:27:11 -03:00
## Homebrew Tap
2021-05-26 19:08:46 -03:00
=== "OSS"
```bash
brew install goreleaser/tap/goreleaser
```
=== "Pro"
```bash
brew install goreleaser/tap/goreleaser-pro
```
2021-05-26 19:08:46 -03:00
2024-07-10 01:27:11 -03:00
## Homebrew
2021-05-26 19:08:46 -03:00
=== "OSS"
```bash
brew install goreleaser
```
2024-07-10 01:27:11 -03:00
!!! warning
The [formula in homebrew-core] might be slightly outdated.
Use our homebrew tap to always get the latest updates.
=== "Pro"
2024-07-10 01:27:11 -03:00
Not available.
2024-07-10 01:27:11 -03:00
[formula in homebrew-core]: https://github.com/Homebrew/homebrew-core/blob/master/Formula/g/goreleaser.rb
## Snapcraft
2021-05-26 19:08:46 -03:00
=== "OSS"
```bash
sudo snap install --classic goreleaser
```
2024-07-10 01:27:11 -03:00
=== "Pro"
Not available.
## Scoop
2021-05-26 19:08:46 -03:00
=== "OSS"
```bash
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install goreleaser
```
=== "Pro"
```bash
scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install goreleaser-pro
```
2021-05-26 19:08:46 -03:00
2024-07-10 01:27:11 -03:00
## Apt Repository
=== "OSS"
```bash
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install goreleaser
```
=== "Pro"
```bash
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install goreleaser-pro
```
2024-07-10 01:27:11 -03:00
## Yum Repository
=== "OSS"
```bash
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
sudo yum install goreleaser
```
=== "Pro"
```bash
echo '[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/goreleaser.repo
sudo yum install goreleaser-pro
```
2024-07-10 01:27:11 -03:00
## AUR
=== "OSS"
```bash
yay -S goreleaser-bin
```
=== "Pro"
```bash
yay -S goreleaser-pro-bin
```
2024-07-10 01:27:11 -03:00
## Nixpkgs
=== "OSS"
```bash
2024-07-10 01:27:11 -03:00
nix-shell -p goreleaser
```
2024-07-10 01:27:11 -03:00
!!! warning
The [package in nixpkgs] might be slightly outdated, as it is not
updated automatically.
Use our NUR to always get the latest updates.
=== "Pro"
Not available.
2024-07-10 01:27:11 -03:00
[package in nixpkgs]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/misc/goreleaser/default.nix
2024-07-10 01:27:11 -03:00
## NUR
First, you'll need to add our [NUR][nur] to your nix configuration.
You can follow the guides
[here](https://github.com/nix-community/NUR#installation).
Once you do that, you can install the packages.
[nur]: https://github.com/goreleaser/nur
=== "OSS"
```nix
{ pkgs, lib, ... }: {
home.packages = with pkgs; [
nur.repos.goreleaser.goreleaser
];
}
```
=== "Pro"
```nix
{ pkgs, lib, ... }: {
home.packages = with pkgs; [
nur.repos.goreleaser.goreleaser-pro
];
}
```
2024-07-10 01:27:11 -03:00
## Docker
2021-05-26 19:08:46 -03:00
=== "OSS"
2024-07-10 01:27:11 -03:00
Registries:
2024-07-10 01:27:11 -03:00
- [`goreleaser/goreleaser`](https://hub.docker.com/r/goreleaser/goreleaser)
- [`ghcr.io/goreleaser/goreleaser`](https://github.com/goreleaser/goreleaser/pkgs/container/goreleaser)
2021-05-26 19:08:46 -03:00
2024-07-10 01:27:11 -03:00
**Example usage:**
```bash
2024-07-10 01:27:11 -03:00
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
```
2024-07-10 01:27:11 -03:00
=== "Pro"
2024-07-10 01:27:11 -03:00
Registries:
2024-07-10 01:27:11 -03:00
- [`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)
2024-07-10 01:27:11 -03:00
**Example usage:**
```bash
2024-07-10 01:27:11 -03:00
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
```
2024-07-10 01:27:11 -03:00
!!! warning
2024-07-10 01:27:11 -03:00
The provided docker image does not support the Snapcraft feature.
2024-07-10 01:27:11 -03:00
The `DOCKER_REGISTRY` environment variable can be left empty when you are
releasing to the public docker registry.
2024-07-10 01:27:11 -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.
!!! tip
2024-07-10 01:27:11 -03:00
There are also `:nightly` tags available with the latest nightly builds.
2024-07-10 01:27:11 -03:00
## Linux packages
=== "OSS"
2024-07-10 01:27:11 -03:00
Download the `.deb`, `.rpm`, or `.apk` packages from the [releases page][releases] and install them with the appropriate tools.
=== "Pro"
2024-07-10 01:27:11 -03:00
Download the `.deb`, `.rpm`, or `.apk` packages from the [releases page][pro-releases] and install them with the appropriate tools.
2024-07-10 01:27:11 -03:00
To install, after downloading the files, run:
2022-08-25 10:15:33 -03:00
2024-07-10 01:27:11 -03:00
```bash
dpkg -i goreleaser*.deb
rpm -ivh goreleaser*.rpm
apk add --allow-untrusted goreleaser*.apk
```
2022-08-25 10:15:33 -03:00
2024-07-10 01:27:11 -03:00
## `go install`
2022-08-25 10:15:33 -03:00
=== "OSS"
2024-07-10 01:27:11 -03:00
```bash
go install github.com/goreleaser/goreleaser/v2@latest
```
Requires Go 1.22.
2022-08-25 10:15:33 -03:00
=== "Pro"
2024-07-10 01:27:11 -03:00
Not available.
## Bash Script
2022-08-25 10:15:33 -03:00
2024-07-10 01:27:11 -03:00
This script does not install anything, it just downloads, verifies and runs
GoReleaser.
Its purpose is to be used within scripts and CIs.
2022-10-12 01:12:38 -03:00
=== "OSS"
```bash
2024-07-10 01:27:11 -03:00
curl -sfL https://goreleaser.com/static/run | bash VERSION=__VERSION__ -s -- check
```
2022-10-12 01:12:38 -03:00
=== "Pro"
2022-10-12 01:12:38 -03:00
```bash
2024-07-10 01:27:11 -03:00
curl -sfL https://goreleaser.com/static/run | DISTRIBUTION=pro VERSION=__VERSION__ bash -s -- check
2022-10-12 01:12:38 -03:00
```
2024-07-10 01:27:11 -03:00
!!! tip
2022-08-25 10:15:33 -03:00
2024-07-10 01:27:11 -03:00
The `VERSION` environment variable can be ommited to get the latest stable
version, or you can set it to `nightly` to get the last nightly build.
## Manually
=== "OSS"
2024-07-10 01:27:11 -03:00
Download the pre-compiled binaries from the [releases page][releases] and copy them to the desired location.
=== "Pro"
2022-08-25 10:15:33 -03:00
2024-07-10 01:27:11 -03:00
Download the pre-compiled binaries from the [releases page][pro-releases] and copy them to the desired location.
2022-08-25 10:15:33 -03:00
## Verifying the artifacts
2024-07-10 01:27:11 -03:00
### Binaries
2022-08-25 10:15:33 -03:00
All artifacts are checksummed, and the checksum file is signed with [cosign][].
=== "OSS"
1. Download the files you want, and the `checksums.txt`, `checksum.txt.pem` and `checksums.txt.sig` files from the [releases][releases] page:
```bash
wget 'https://github.com/goreleaser/goreleaser/releases/download/__VERSION__/checksums.txt'
```
1. Verify the signature:
```bash
cosign verify-blob \
--certificate-identity 'https://github.com/goreleaser/goreleaser/.github/workflows/release.yml@refs/tags/__VERSION__' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/goreleaser/goreleaser/releases/download/__VERSION__/checksums.txt.pem' \
--signature 'https://github.com/goreleaser/goreleaser/releases/download/__VERSION__/checksums.txt.sig' \
./checksums.txt
```
1. If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
```bash
sha256sum --ignore-missing -c checksums.txt
```
=== "Pro"
1. Download the files you want, and the `checksums.txt`, `checksum.txt.pem` and `checksums.txt.sig` files from the [releases][pro-releases] page:
```bash
wget 'https://github.com/goreleaser/goreleaser-pro/releases/download/__VERSION__-pro/checksums.txt'
```
1. Verify the signature:
```bash
cosign verify-blob \
--certificate-identity 'https://github.com/goreleaser/goreleaser-pro-internal/.github/workflows/release-pro.yml@refs/tags/__VERSION__-pro' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/goreleaser/goreleaser-pro/releases/download/__VERSION__-pro/checksums.txt.pem' \
--signature 'https://github.com/goreleaser/goreleaser-pro/releases/download/__VERSION__-pro/checksums.txt.sig' \
./checksums.txt
```
1. If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
```bash
sha256sum --ignore-missing -c checksums.txt
```
2024-07-10 01:27:11 -03:00
### Docker images
Our Docker images are signed with [cosign][].
Verify the signatures:
=== "OSS"
```bash
cosign verify \
--certificate-identity 'https://github.com/goreleaser/goreleaser/.github/workflows/release.yml@refs/tags/__VERSION__' \
2024-07-10 00:03:07 -03:00
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
goreleaser/goreleaser
```
=== "Pro"
```bash
cosign verify \
--certificate-identity 'https://github.com/goreleaser/goreleaser-pro-internal/.github/workflows/release-pro.yml@refs/tags/__VERSION__-pro' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
goreleaser/goreleaser-pro
```
2024-07-10 01:27:11 -03:00
## Nightly builds
2024-07-10 01:27:11 -03:00
Nightly build are pre-releases of the current code into the main branch.
Use it for testing out new features only.
2021-05-26 19:08:46 -03:00
=== "OSS"
2024-07-10 01:27:11 -03:00
Download the pre-compiled binaries from the [nightly release][nightly-releases] and copy them to the desired location.
=== "Pro"
2024-07-10 01:27:11 -03:00
Download the pre-compiled binaries from the [nightly release][nightly-pro-releases] and copy them to the desired location.
2024-07-10 01:27:11 -03:00
[Docker](#docker) images are also available, look for tags with a `-nightly`
suffix for the last nightly of a specific release, or the `:nightly` tag,
which is always the latest nightly build available.
2019-03-24 20:10:30 -03:00
2024-07-10 01:27:11 -03:00
You may also use the [Bash Script method](#bash-script) by setting the `VERSION`
environment variable to `nightly`.
2024-07-10 01:27:11 -03:00
## Packaging status
2024-07-10 01:27:11 -03:00
[![Packaging status](https://repology.org/badge/vertical-allrepos/goreleaser.svg)](https://repology.org/project/goreleaser/versions)
2021-11-12 17:23:32 -03:00
[dockerfile]: https://github.com/goreleaser/goreleaser/blob/main/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
2022-08-25 10:15:33 -03:00
[nightly-pro-releases]: https://github.com/goreleaser/goreleaser-pro/releases/nightly
[nightly-releases]: https://github.com/goreleaser/goreleaser/releases/nightly
[cosign]: https://github.com/sigstore/cosign