1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2024-12-27 01:33:39 +02:00
goreleaser/.goreleaser.yaml
2024-10-21 08:38:00 -03:00

435 lines
14 KiB
YAML

# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=jcroql
version: 2
env:
- GO111MODULE=on
before:
hooks:
- go mod tidy
- ./scripts/completions.sh
- ./scripts/manpages.sh
snapshot:
version_template: "{{ incpatch .Version }}-next"
gomod:
proxy: true
report_sizes: true
git:
ignore_tags:
- "{{ if not .IsNightly }}nightly{{ end }}"
metadata:
mod_timestamp: "{{ .CommitTimestamp }}"
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- darwin
- windows
goarch:
- "386"
- amd64
- arm
- arm64
- ppc64
- riscv64
goarm:
- "7"
ignore:
- goos: windows
goarch: arm
mod_timestamp: "{{ .CommitTimestamp }}"
flags:
- -trimpath
ldflags:
- -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser -X main.treeState={{ .IsGitDirty }}
universal_binaries:
- replace: false
notarize:
macos:
- enabled: '{{ isEnvSet "MACOS_SIGN_P12" }}'
sign:
certificate: "{{.Env.MACOS_SIGN_P12}}"
password: "{{.Env.MACOS_SIGN_PASSWORD}}"
notarize:
issuer_id: "{{.Env.MACOS_NOTARY_ISSUER_ID}}"
key_id: "{{.Env.MACOS_NOTARY_KEY_ID}}"
key: "{{.Env.MACOS_NOTARY_KEY}}"
# temporarely disables until we add better filters for platforms et al, and test more.
# upx:
# - enabled: true
checksum:
name_template: "checksums.txt"
changelog:
sort: asc
use: github
filters:
exclude:
- "^test:"
- "^test\\("
- "merge conflict"
- Merge pull request
- Merge remote-tracking branch
- Merge branch
- go mod tidy
groups:
- title: Dependency updates
regexp: '^.*?(.+)\(deps\)!?:.+$'
order: 300
- title: "New Features"
regexp: '^.*?feat(\(.+\))??!?:.+$'
order: 100
- title: "Security updates"
regexp: '^.*?sec(\(.+\))??!?:.+$'
order: 150
- title: "Bug fixes"
regexp: '^.*?(fix|refactor)(\(.+\))??!?:.+$'
order: 200
- title: "Documentation updates"
regexp: ^.*?docs?(\(.+\))??!?:.+$
order: 400
- title: "Build process updates"
regexp: ^.*?(build|ci)(\(.+\))??!?:.+$
order: 400
- title: Other work
order: 9999
dockers:
- image_templates:
- "goreleaser/goreleaser:v{{ .Version }}-amd64"
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
dockerfile: Dockerfile
use: buildx
build_flag_templates:
- "--pull"
- "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md"
- "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png"
- '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]'
- "--label=io.artifacthub.package.license=MIT"
- "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.name={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64"
extra_files:
- scripts/entrypoint.sh
- image_templates:
- "goreleaser/goreleaser:v{{ .Version }}-arm64"
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
dockerfile: Dockerfile
use: buildx
build_flag_templates:
- "--pull"
- "--label=io.artifacthub.package.readme-url=https://raw.githubusercontent.com/goreleaser/goreleaser/main/README.md"
- "--label=io.artifacthub.package.logo-url=https://goreleaser.com/static/avatar.png"
- '--label=io.artifacthub.package.maintainers=[{"name":"Carlos Alexandro Becker","email":"carlos@carlosbecker.dev"}]'
- "--label=io.artifacthub.package.license=MIT"
- "--label=org.opencontainers.image.description=Deliver Go binaries as fast and easily as possible"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.name={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm64"
goarch: arm64
extra_files:
- scripts/entrypoint.sh
docker_manifests:
- name_template: "goreleaser/goreleaser:v{{ .Version }}"
image_templates:
- "goreleaser/goreleaser:v{{ .Version }}-amd64"
- "goreleaser/goreleaser:v{{ .Version }}-arm64"
- name_template: "ghcr.io/goreleaser/goreleaser:v{{ .Version }}"
image_templates:
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
- name_template: "{{ if not .IsNightly }}goreleaser/goreleaser:latest{{ end }}"
image_templates:
- "goreleaser/goreleaser:v{{ .Version }}-amd64"
- "goreleaser/goreleaser:v{{ .Version }}-arm64"
- name_template: "{{ if not .IsNightly }}ghcr.io/goreleaser/goreleaser:latest{{ end }}"
image_templates:
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
- name_template: "{{ if .IsNightly }}goreleaser/goreleaser:nightly{{ end }}"
image_templates:
- "goreleaser/goreleaser:v{{ .Version }}-amd64"
- "goreleaser/goreleaser:v{{ .Version }}-arm64"
- name_template: "{{ if .IsNightly }}ghcr.io/goreleaser/goreleaser:nightly{{ end }}"
image_templates:
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-amd64"
- "ghcr.io/goreleaser/goreleaser:v{{ .Version }}-arm64"
archives:
- name_template: >-
{{- .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end -}}
format_overrides:
- goos: windows
format: zip
builds_info:
group: root
owner: root
mtime: "{{ .CommitDate }}"
files:
- src: README.md
info:
owner: root
group: root
mtime: "{{ .CommitDate }}"
- src: LICENSE.md
info:
owner: root
group: root
mtime: "{{ .CommitDate }}"
- src: completions/*
info:
owner: root
group: root
mtime: "{{ .CommitDate }}"
- src: manpages/*
info:
owner: root
group: root
mtime: "{{ .CommitDate }}"
brews:
- repository:
owner: goreleaser
name: homebrew-tap
directory: Formula
goarm: "7"
homepage: https://goreleaser.com
description: Deliver Go binaries as fast and easily as possible
license: MIT
test: |
system "#{bin}/goreleaser -v"
dependencies:
- name: go
type: optional
- name: git
conflicts:
- goreleaser-pro
extra_install: |-
bash_completion.install "completions/goreleaser.bash" => "goreleaser"
zsh_completion.install "completions/goreleaser.zsh" => "_goreleaser"
fish_completion.install "completions/goreleaser.fish"
man1.install "manpages/goreleaser.1.gz"
nix:
- name: goreleaser
repository:
owner: goreleaser
name: nur
homepage: https://goreleaser.com
description: Deliver Go binaries as fast and easily as possible
path: pkgs/goreleaser/default.nix
license: mit
extra_install: |-
installManPage ./manpages/goreleaser.1.gz
installShellCompletion ./completions/*
winget:
- name: goreleaser
publisher: goreleaser
license: MIT
homepage: https://goreleaser.com
short_description: Deliver Go binaries as fast and easily as possible
repository:
owner: goreleaser
name: winget-pkgs
branch: "goreleaser-{{.Version}}"
pull_request:
enabled: true
draft: true
base:
owner: microsoft
name: winget-pkgs
branch: master
aurs:
- homepage: https://goreleaser.com
description: Deliver Go binaries as fast and easily as possible
maintainers:
- "Fernandez Ludovic <lfernandez dot dev at gmail dot com>"
- "Carlos Alexandro Becker <carlos at becker dot software>"
license: MIT
private_key: "{{ .Env.AUR_KEY }}"
git_url: "ssh://aur@aur.archlinux.org/goreleaser-bin.git"
package: |-
# bin
install -Dm755 "./goreleaser" "${pkgdir}/usr/bin/goreleaser"
# license
install -Dm644 "./LICENSE.md" "${pkgdir}/usr/share/licenses/goreleaser/LICENSE"
# completions
mkdir -p "${pkgdir}/usr/share/bash-completion/completions/"
mkdir -p "${pkgdir}/usr/share/zsh/site-functions/"
mkdir -p "${pkgdir}/usr/share/fish/vendor_completions.d/"
install -Dm644 "./completions/goreleaser.bash" "${pkgdir}/usr/share/bash-completion/completions/goreleaser"
install -Dm644 "./completions/goreleaser.zsh" "${pkgdir}/usr/share/zsh/site-functions/_goreleaser"
install -Dm644 "./completions/goreleaser.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/goreleaser.fish"
# man pages
install -Dm644 "./manpages/goreleaser.1.gz" "${pkgdir}/usr/share/man/man1/goreleaser.1.gz"
scoops:
- repository:
owner: goreleaser
name: scoop-bucket
directory: bucket
homepage: https://goreleaser.com
description: Deliver Go binaries as fast and easily as possible
license: MIT
nfpms:
- file_name_template: "{{ .ConventionalFileName }}"
id: packages
homepage: https://goreleaser.com
description: |-
Deliver Go binaries as fast and easily as possible.
GoReleaser allows you to release easily build, package, publish and
announce to several places at one go.
maintainer: Carlos Alexandro Becker <carlos@becker.software>
license: MIT
vendor: GoReleaser
bindir: /usr/bin
section: utils
contents:
- src: ./completions/goreleaser.bash
dst: /usr/share/bash-completion/completions/goreleaser
file_info:
mode: 0644
- src: ./completions/goreleaser.fish
dst: /usr/share/fish/vendor_completions.d/goreleaser.fish
file_info:
mode: 0644
- src: ./completions/goreleaser.zsh
dst: /usr/share/zsh/vendor-completions/_goreleaser
file_info:
mode: 0644
- src: ./manpages/goreleaser.1.gz
dst: /usr/share/man/man1/goreleaser.1.gz
file_info:
mode: 0644
- src: ./LICENSE.md
dst: /usr/share/doc/goreleaser/copyright
file_info:
mode: 0644
formats:
- apk
- deb
- rpm
- archlinux
dependencies:
- git
recommends:
- golang
deb:
lintian_overrides:
- statically-linked-binary
- changelog-file-missing-in-native-package
snapcrafts:
- name_template: "{{ .ProjectName }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
summary: Deliver Go binaries as fast and easily as possible
description: |
GoReleaser builds Go binaries for several platforms, creates a GitHub
release and then pushes a Homebrew formula to a repository. All that
wrapped in your favorite CI.
grade: stable
confinement: classic
publish: true
disable: "{{ if .IsNightly }}true{{ end }}"
sboms:
- artifacts: archive
signs:
- cmd: cosign
certificate: "${artifact}.pem"
output: true
artifacts: checksum
args:
- sign-blob
- "--output-certificate=${certificate}"
- "--output-signature=${signature}"
- "${artifact}"
- --yes
docker_signs:
- cmd: cosign
artifacts: manifests
output: true
args:
- "sign"
- "${artifact}@${digest}"
- --yes
publishers:
- name: fury.io
ids:
- packages
env:
- "FURY_TOKEN={{ .Env.FURY_TOKEN }}"
cmd: ./scripts/fury-upload.sh {{ .ArtifactName }}
disable: "{{ if .IsNightly }}true{{ end }}"
milestones:
- close: true
release:
name_template: "v{{ .Version }}"
footer: |
**Full Changelog**: https://github.com/goreleaser/goreleaser/compare/{{ .PreviousTag }}...{{ if .IsNightly }}nightly{{ else }}{{ .Tag }}{{ end }}
{{ if not .IsNightly }}
## Helping out
This release is only possible thanks to **all** the support of some **awesome people**!
Want to be one of them?
You can [sponsor](https://goreleaser.com/sponsors/), get a [Pro License](https://goreleaser.com/pro) or [contribute with code](https://goreleaser.com/contributing).
## Where to go next?
* Find examples and commented usage of all options in our [website](https://goreleaser.com/intro/).
* Reach out on [Discord](https://discord.gg/RGEBtg8vQ6) and [Twitter](https://twitter.com/goreleaser)!
<a href="https://goreleaser.com"><img src="https://raw.githubusercontent.com/goreleaser/artwork/master/opencollective-header.png" with="100%" alt="GoReleaser logo"></a>
{{ end }}
announce:
twitter:
enabled: false
message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}"
mastodon:
enabled: true
message_template: "#GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}"
server: https://fosstodon.org
discord:
enabled: true
message_template: "GoReleaser {{ .Tag }} is out! Check it out: https://github.com/goreleaser/goreleaser/releases/tag/{{ .Tag }}"