From 42c2e8ac05c346aea1c26a3619a189da95ab5fde Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Thu, 5 Mar 2026 22:43:40 +0000 Subject: [PATCH] ci: add goreleaser config and release workflow --- .github/workflows/release.yml | 30 +++++++++++ .goreleaser.yaml | 97 +++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 .goreleaser.yaml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a55fabd --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Release + +on: + push: + tags: + - "v*" + +permissions: + contents: write + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + + - uses: goreleaser/goreleaser-action@v6 + with: + distribution: goreleaser-pro + version: "~> v2" + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..ede839c --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,97 @@ +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj + +version: 2 + +before: + hooks: + - go mod tidy + +snapshot: + name_template: "{{ incpatch .Version }}-next" + +builds: + - main: ./cmd/snack/ + id: snack + binary: snack + goos: + - linux + - darwin + - freebsd + - openbsd + goarch: + - amd64 + - arm64 + - arm + ldflags: + - -X main.version={{.Version}} + +universal_binaries: + - id: snack-universal + ids: + - snack + name_template: "snack-{{.Version}}-darwin-universal" + replace: true + +archives: + - formats: tar.gz + allow_different_binary_count: true + ids: + - snack + - snack-universal + name_template: "snack-{{.Version}}-{{.Os}}-{{.Arch}}" + +nfpms: + - id: snack + package_name: snack + builds: [snack] + formats: [apk, deb, rpm] + bindir: /usr/bin + description: "A unified CLI for system package managers" + maintainer: Tai Groot + license: 0BSD + homepage: https://github.com/gogrlx/snack + vendor: Adatomic, Inc. + +release: + github: + owner: gogrlx + name: snack + ids: + - snack + - snack-universal + draft: true + prerelease: auto + +changelog: + use: github + sort: asc + abbrev: -1 + filters: + exclude: + - "^docs:" + - "^test:" + - "^ci:" + - "^chore:" + - "^style:" + groups: + - title: "Breaking Changes" + regexp: "^.*!:+.*$" + order: 0 + - title: "Features" + regexp: "^.*feat[(\\w)]*:+.*$" + order: 1 + - title: "Bug Fixes" + regexp: "^.*fix[(\\w)]*:+.*$" + order: 2 + - title: "Performance" + regexp: "^.*perf[(\\w)]*:+.*$" + order: 3 + - title: "Refactor" + regexp: "^.*refactor[(\\w)]*:+.*$" + order: 4 + - title: "Build" + regexp: "^.*build[(\\w)]*:+.*$" + order: 5 + - title: Others + order: 999