利用GitHub Actions自动构建go项目的二进制到release

配置

所用 Actions:go-release-action

使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了。

我们在 workflows 目录下添加如下内容:

name: build-go-binary

on:
  release:
    types: [created,published] # 表示在创建新的 Release 时触发

jobs:
  build-go-binary:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        goos: [linux, windows, darwin] # 需要打包的系统
        goarch: [amd64, arm64] # 需要打包的架构
    steps:
      - uses: actions/checkout@v3
      - uses: wangyoucao577/go-release-action@v1.30
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }} # 一个默认的变量,用来实现往 Release 中添加文件
          goos: ${{ matrix.goos }}
          goarch: ${{ matrix.goarch }}
          pre_command: export CGO_ENABLED=0
          project_path: cmd/gateway # 编译目录
          goversion: 1.19 # 可以指定编译使用的 Golang 版本
          binary_name: "fds" # 可以指定二进制文件的名称
#          extra_files: README.md # 需要包含的额外文件

参数说明

问题

403错误

W0710 10:27:32.962685    2898 main.go:58] Upload asset error, will retry in 3s: POST https://uploads.github.com/repos/yann-y/fds/releases/111607799/assets?name=fds-v1.0.0-linux-arm64.tar.gz: 403 Resource not accessible by integration []

项目内setting -> actions -> general -> Workflow permissions