• 手っ取り早くリポジトリの WorkFlow つかって Go の リリースを実装する為の設定をメモしておく
  • v0.0.1 みたいな形式のタグを打てばリリースされる
  • こんな感じのヤツ img_001.png

1. goreleaser init で .goreleaser.yaml を生成する

デフォルトでこんな感じで生成される

# This is an example .goreleaser.yml file with some sensible defaults.
# Make sure to check the documentation at https://goreleaser.com
before:
  hooks:
    # You may remove this if you don't use go modules.
    - go mod tidy
    # # you may remove this if you don't need go generate
    - go generate ./...
builds:
  - env:
      - CGO_ENABLED=0
    goos:
      - linux
      - windows
      - darwin

archives:
  - format: tar.gz
    # this name template makes the OS and Arch compatible with the results of uname.
    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 }}      
    # use zip for windows archives
    format_overrides:
    - goos: windows
      format: zip
checksum:
  name_template: 'checksums.txt'
snapshot:
  name_template: "{{ incpatch .Version }}-next"
changelog:
  sort: asc
  filters:
    exclude:
      - '^docs:'
      - '^test:'

# The lines beneath this are called `modelines`. See `:help modeline`
# Feel free to remove those if you don't want/use them.
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=cnqoj

2. .github/workflows/release.yml に以下を設定する

name: release
on:
  push:
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+"
jobs:
  goreleaser:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 1
      - name: Setup Go
        uses: actions/setup-go@v4
        # with:
        #   go-version: 1.20
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v4
        with:
          distribution: goreleaser
          version: latest
          args: release --clean
          # workdir:
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

3. Repository の Workflow Permission に書き込み権限をつける

リポジトリ Settings - Actions - General に Workflow permissions 項目がある

secrets.GITHUB_TOKEN からリポジトリシークレットやPersonalAccessTokenの設定が必要そうだが、実際は不要

4. タグを打ってプッシュする