.goreleaser.yaml RawHistoryFolder
1# GoReleaser config — builds cross-platform binaries and GitHub Release
2# artifacts for zot.
3#
4# Triggered by pushing a tag like `v0.1.0`. The release workflow runs
5# `goreleaser release --clean`, which compiles every target, packs
6# them into `.tar.gz` (Unix) / `.zip` (Windows) archives, generates a
7# checksum file, and uploads everything to a GitHub Release.
8
9version: 2
10
11project_name: zot
12
13before:
14 hooks:
15 - go mod tidy
16
17builds:
18 - id: zot
19 main: ./cmd/zot
20 binary: zot
21 env:
22 - CGO_ENABLED=0
23 goos: [linux, darwin, windows]
24 goarch: [amd64, arm64]
25 # Windows/arm64 is shipped by Go but rarely used — skip to keep the
26 # release artifact list tidy.
27 ignore:
28 - goos: windows
29 goarch: arm64
30 flags:
31 - -trimpath
32 ldflags:
33 - -s -w
34 - -X main.version={{.Version}}
35 - -X main.commit={{.Commit}}
36 - -X main.date={{.Date}}
37
38archives:
39 - id: zot
40 # Human-friendly name: zot_0.1.0_darwin_arm64.tar.gz
41 name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
42 files:
43 - LICENSE
44 - README.md
45 format_overrides:
46 - goos: windows
47 format: zip
48
49checksum:
50 name_template: "checksums.txt"
51 algorithm: sha256
52
53snapshot:
54 # Used by `goreleaser release --snapshot`; lets contributors build
55 # a local release without pushing a tag.
56 version_template: "{{ incpatch .Version }}-next"
57
58changelog:
59 sort: asc
60 use: github
61 filters:
62 exclude:
63 - "^docs:"
64 - "^chore:"
65 - "^ci:"
66 - "^test:"
67 groups:
68 - title: features
69 regexp: "^.*feat[(\\w)]*:+.*$"
70 order: 0
71 - title: fixes
72 regexp: "^.*fix[(\\w)]*:+.*$"
73 order: 1
74 - title: other
75 order: 999
76
77release:
78 github:
79 owner: patriceckhart
80 name: zot
81 draft: false
82 prerelease: auto
83 # Auto-generated release notes include the changelog groups above plus
84 # an install snippet so the release page itself is a landing page.
85 header: |
86 ## zot {{ .Tag }}
87
88 one-liner install:
89
90 ```bash
91 curl -fsSL https://raw.githubusercontent.com/patriceckhart/zot/main/install.sh | bash
92 ```
93
94 homebrew:
95
96 ```bash
97 brew install patriceckhart/tap/zot
98 ```
99
100 or download a binary below, `chmod +x`, and drop it on your `$PATH`.
101
102# Optional: publish a Homebrew formula to a tap repo on every release.
103# Requires the tap repo to exist at github.com/patriceckhart/homebrew-tap
104# and a PAT with `repo` scope exported as `HOMEBREW_TAP_TOKEN` in the
105# release workflow. The skip_upload expression disables the step when
106# the token isn't set, so tag pushes before the tap is created don't
107# fail the whole release.
108brews:
109 - repository:
110 owner: patriceckhart
111 name: homebrew-tap
112 token: "{{ .Env.HOMEBREW_TAP_TOKEN }}"
113 name: zot
114 homepage: https://github.com/patriceckhart/zot
115 description: "lightweight coding agent harness — anthropic + openai, four tools, tui"
116 license: MIT
117 install: |
118 bin.install "zot"
119 test: |
120 system "#{bin}/zot", "--help"
121 # Skip the formula upload when HOMEBREW_TAP_TOKEN is empty. Auto
122 # only skips for prereleases/snapshots, which isn't what we want.
123 skip_upload: '{{ if eq .Env.HOMEBREW_TAP_TOKEN "" }}true{{ else }}false{{ end }}'