1# This is an example .goreleaser.yml file with some sensible defaults.
2# Make sure to check the documentation at https://goreleaser.com
3
4# The lines below are called `modelines`. See `:help modeline`
5# Feel free to remove those if you don't want/need to use them.
6# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json
7# vim: set ts=2 sw=2 tw=0 fo=cnqoj
8
9version: 2
10pro: true
11
12before:
13 hooks:
14 - go mod tidy
15
16builds:
17 - binary: catwalk
18 env:
19 - CGO_ENABLED=0
20 main: .
21 ldflags: -s -w -X main.Version=v{{ .Version }} -X main.CommitSHA={{ .Commit }} -X main.CommitDate={{ .CommitDate }}
22 targets:
23 - linux_amd64
24 - linux_arm64
25
26checksum:
27 name_template: "checksums.txt"
28
29snapshot:
30 version_template: "{{ incpatch .Version }}-snapshot"
31
32nightly:
33 version_template: "{{ incpatch .Version }}-devel"
34
35dockers:
36 - image_templates:
37 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
38 goarch: arm64
39 build_flag_templates:
40 - --platform=linux/arm64
41 - --label=org.opencontainers.image.title={{ .ProjectName }}
42 - --label=org.opencontainers.image.source={{ .GitURL }}
43 - --label=org.opencontainers.image.version=v{{ .Version }}
44 - --label=org.opencontainers.image.created={{ .Date }}
45 - --label=org.opencontainers.image.revision={{ .FullCommit }}
46 - --label=org.opencontainers.image.licenses=MIT
47 dockerfile: goreleaser.dockerfile
48 use: buildx
49 - image_templates:
50 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
51 goarch: amd64
52 build_flag_templates:
53 - --platform=linux/amd64
54 - --label=org.opencontainers.image.title={{ .ProjectName }}
55 - --label=org.opencontainers.image.source={{ .GitURL }}
56 - --label=org.opencontainers.image.version=v{{ .Version }}
57 - --label=org.opencontainers.image.created={{ .Date }}
58 - --label=org.opencontainers.image.revision={{ .FullCommit }}
59 - --label=org.opencontainers.image.licenses=MIT
60 dockerfile: goreleaser.dockerfile
61 use: buildx
62
63docker_manifests:
64 - name_template: "{{ if not .IsNightly }}ghcr.io/charmbracelet/{{ .ProjectName }}:latest{{ end }}"
65 image_templates:
66 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
67 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
68 - name_template: "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}"
69 image_templates:
70 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
71 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
72 - name_template: "ghcr.io/charmbracelet/{{ .ProjectName }}:{{ .Commit }}{{ if .IsNightly }}-devel{{ end }}"
73 image_templates:
74 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
75 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
76 - name_template: "{{ if .IsNightly }}ghcr.io/charmbracelet/{{ .ProjectName }}:nightly{{ end }}"
77 image_templates:
78 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-amd64"
79 - "ghcr.io/charmbracelet/{{ .ProjectName }}:v{{ .Version }}-arm64"
80
81release:
82 prerelease: auto
83 footer:
84 from_url:
85 url: https://raw.githubusercontent.com/charmbracelet/meta/main/footer.md
86
87changelog:
88 sort: asc
89 disable: "{{ .IsNightly }}"
90 use: github
91 filters:
92 exclude:
93 - "^(build|ci): "
94 - "^chore: auto-update generated files$"
95 - "^chore\\(legal\\): "
96 - "^chore\\(deps\\): "
97 - "^test:"
98 - "^test\\("
99 - "^v\\d.*"
100 - "merge conflict"
101 - Merge branch
102 - Merge pull request
103 - Merge remote-tracking branch
104 - go mod tidy
105 - "^wip "
106 - "^wip:"
107 groups:
108 - title: "Deps"
109 regexp: "^.*\\(deps\\)*:+.*$"
110 order: 300
111 - title: "New!"
112 regexp: "^.*feat[(\\w)]*:+.*$"
113 order: 100
114 - title: "Fixed"
115 regexp: "^.*fix[(\\w)]*:+.*$"
116 order: 200
117 - title: "Docs"
118 regexp: "^.*docs[(\\w)]*:+.*$"
119 order: 400
120 - title: "Other stuff"
121 order: 9999