关于 Golang 多平台打包发布这件事..

2022-07-25 01:39:13 +08:00
 LeslieLeung

迫于尝试给一个 Go 项目贡献打包跨平台 Docker 镜像花了两个小时没搞通,于是把整个过程捋了一遍,写了一个演示如何使用 GitHub Actions 将一个 Golang 项目打包成多平台的二进制文件并发布到 GitHub Releases 和 DockerHub 的例子。

不得不说,Go 跨平台编译这个能力实在是太强了。

LeslieLeung/go-multiplatform-docker

欢迎 star 。

3184 次点击
所在节点    Go 编程语言
9 条回复
ewBuyVmLZMZE
2022-07-25 03:16:55 +08:00
没这么麻烦吧,gorelease 不是分分钟就解决了。
Trim21
2022-07-25 03:32:44 +08:00
用 GitHub Actions 的话直接开一堆平台的虚拟机,不是连交叉编译都不需要了吗...
yulon
2022-07-25 07:49:11 +08:00
就薅吧就薅吧
onlyice
2022-07-25 10:20:13 +08:00
可以看看 gox
twistedmeadows
2022-07-25 12:57:41 +08:00
蛮有用的介绍。刚玩了玩,不知道是我的项目有什么特殊之处还是?…… binary release 那个部分的写法在我的仓库上权限不足(最后一步发布到 release 失败)

自己研究了一下之后在 yml 里面补上了赋予 secrets.GITHUB_TOKEN 所需权限的设置:

permissions:
contents: write

然后就能发布成功了
twistedmeadows
2022-07-25 13:01:33 +08:00
代码缩进被吞了……总之就这两行应该很好看懂……
anviod
2022-07-25 13:59:26 +08:00
@syhily 比如同时支持 arm v5 v7 和 arm 64 还用了 CGO 有没有合适的方案
LeslieLeung
2022-07-25 22:50:04 +08:00
twistedmeadows
2022-07-26 00:17:42 +08:00
@LeslieLeung 哦对就是这个,我也想改这个设置来着,但是 github 今天有 bug ,保存设置的时候显示数据类型不匹配 save 失败(无论怎么选,前端调接口传的 0 和 1 ,后端要求输入是 true 和 false )

然后我研究了下,用上面的方法能成功。
btw ,直接改设置会赋予 job 对仓库内所有功能的 write 权限,像上面那样写可以确保只给必要的最小权限,官方文档里更推荐后者。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX