迫于尝试给一个 Go 项目贡献打包跨平台 Docker 镜像花了两个小时没搞通,于是把整个过程捋了一遍,写了一个演示如何使用 GitHub Actions 将一个 Golang 项目打包成多平台的二进制文件并发布到 GitHub Releases 和 DockerHub 的例子。
不得不说,Go 跨平台编译这个能力实在是太强了。
LeslieLeung/go-multiplatform-docker
欢迎 star 。
![]() | 1 ewBuyVmLZMZE 2022-07-25 03:16:55 +08:00 ![]() 没这么麻烦吧,gorelease 不是分分钟就解决了。 |
![]() | 2 Trim21 2022-07-25 03:32:44 +08:00 用 GitHub Actions 的话直接开一堆平台的虚拟机,不是连交叉编译都不需要了吗... |
3 yuon 2022-07-25 07:49:11 +08:00 就薅吧就薅吧 |
![]() | 4 onlyice 2022-07-25 10:20:13 +08:00 可以看看 gox |
5 twistedmeadows 2022-07-25 12:57:41 +08:00 蛮有用的介绍。刚玩了玩,不知道是我的项目有什么特殊之处还是?…… binary release 那个部分的写法在我的仓库上权限不足(最后一步发布到 release 失败) 自己研究了一下之后在 yml 里面补上了赋予 secrets.GITHUB_TOKEN 所需权限的设置: permissions: contents: write 然后就能发布成功了 |
6 twistedmeadows 2022-07-25 13:01:33 +08:00 代码缩进被吞了……总之就这两行应该很好看懂…… |
![]() | 8 LeslieLeung OP |
9 twistedmeadows 2022-07-26 00:17:42 +08:00 via iPhone @LeslieLeung 哦对就是这个,我也想改这个设置来着,但是 github 今天有 bug ,保存设置的时候显示数据类型不匹配 save 失败(无论怎么选,前端调接口传的 0 和 1 ,后端要求输入是 true 和 false ) 然后我研究了下,用上面的方法能成功。 btw ,直接改设置会赋予 job 对仓库内所有功能的 write 权限,像上面那样写可以确保只给必要的最小权限,官方文档里更推荐后者。 |