在 Github Action 使用 goreleaser 发行 go 项目

前言

个人一直从事着前端开发，突然有一天想要熟悉一个后端开发语言。说干就干，刚好看到了 golang 那就用起来吧。
项目开发是没有问题了，但是发行的时候发现一个个手动上传可执行文件也太麻烦了，正好 github aciton 也有免费额度那就用上吧。

关于 goreleaser

goreleaser 提供了多种发行方式，github action 只是其支持的众多渠道中的一个，当然 goreleaser 也是开源的，项目地址见 goreleaser。

配置 Github Action

goreleaser 集成到 github action 中几乎不需要任何多余的操作，按照一下步骤即可。

在仓库添加一个 github action 的 workflow，文件路径为 .github/workflows/release.yml

Copy
# 定义名称
name: Release
# 推送 tag 的时候触发，匹配 v*
on:
create:
tags:
- v*

jobs:
release:
name: Release on GitHub
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- run: git fetch --force --tags
- uses: actions/setup-go@v4
with:
go-version: stable
- uses: goreleaser/goreleaser-action@v4
with:
distribution: goreleaser
version: latest
args: release --clean
# secrets.GITHUB_TOKEN github action 自带一个一个操作凭据，不需要自己申请，但是有个额外操作看下面。
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

在项目设置内部需要给予 github action 读写包的权限，这样默认 workflow 里面的 token 才可以上传文件到 release 内。

仓库添加 tag 并且推送到 github。

Copy
git tag v0.0.1 && git push --tag

到此为止已经可以使用了，之后只需要等待看下 release 内的文件了。