.goreleaser.yaml

  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