V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
LeslieLeung
V2EX  ›  Go 编程语言

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

  •  
  •   LeslieLeung · 2022-07-25 01:39:13 +08:00 · 3184 次点击
    这是一个创建于 851 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    LeslieLeung/go-multiplatform-docker

    欢迎 star 。

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

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

    permissions:
    contents: write

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

    然后我研究了下,用上面的方法能成功。
    btw ,直接改设置会赋予 job 对仓库内所有功能的 write 权限,像上面那样写可以确保只给必要的最小权限,官方文档里更推荐后者。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2947 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.