BeTrfo

BeTrfo

love

在 Github Action 使用 goreleaser 发行 go 项目

前言#

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

关于 goreleaser#

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

配置 Github Action#

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

  1. 在仓库添加一个 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 内。
image
image

  1. 仓库添加 tag 并且推送到 github。
git tag v0.0.1 && git push --tag
  1. 到此为止已经可以使用了,之后只需要等待看下 release 内的文件了。
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。