前言#
我一直从事前端开发,突然有一天想要熟悉一种后端开发语言。说干就干,刚好看到了 golang,那就用它吧。
项目开发没有问题,但是在发布时发现手动上传可执行文件太麻烦了,正好 github action 也有免费额度,那就用上吧。
关于 goreleaser#
goreleaser 提供了多种发布方式,github action 只是其中一个支持的渠道,当然 goreleaser 也是开源的,项目地址见 goreleaser。
配置 Github Action#
将 goreleaser 集成到 github action 中几乎不需要任何额外的操作,按照以下步骤即可。
- 在仓库中添加一个 github action 的 workflow,文件路径为
.github/workflows/release.yml
# 定义名称
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 中的令牌才能将文件上传到发布中。
- 在仓库中添加标签并推送到 github。
git tag v0.0.1 && git push --tag
- 到此为止,您已经可以使用了,之后只需要等待查看发布中的文件即可。