前言#
个人一直从事着前端开发,突然有一天想要熟悉一个后端开发语言。说干就干,刚好看到了 golang 那就用起来吧。
项目开发是没有问题了,但是发行的时候发现一个个手动上传可执行文件也太麻烦了,正好 github aciton 也有免费额度那就用上吧。
关于 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 里面的 token 才可以上传文件到 release 内。
- 仓库添加 tag 并且推送到 github。
git tag v0.0.1 && git push --tag
- 到此为止已经可以使用了,之后只需要等待看下 release 内的文件了。