logo
2
10
WeChat Login

GitHub actions中的不同系统之间的构建该如何解决#11

Resolved
created 2025-08-11
Edit

CNB现在的单Linux系统用来构建项目的二进制软件有点吃力了,无法支持其他的系统架构,我现有的项目基本都是需要构建linux、Windows、macOS的,但是CNB无法构建,后续会这么做

added labels
有效问题
Developer

只是构建二进制的话,除了依赖换环境这个思路外,还可以看一下所使用的编程语言本身是否支持跨平台构建
比如 golang,可以通过如下的方式来构建出对应平台的二进制文件。

releases:
	@echo "Building for multiple platforms..."
	@mkdir -p dist
	@GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o dist/git-cnb_linux_amd64
	@GOOS=linux GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o dist/git-cnb_linux_arm64
	@GOOS=windows GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o dist/git-cnb_windows_amd64.exe
	@GOOS=windows GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o dist/git-cnb_windows_arm64.exe
	@GOOS=darwin GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o dist/git-cnb_darwin_amd64
	@GOOS=darwin GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o dist/git-cnb_darwin_arm64

完整流程可以参考 (git-cnb)[https://cnb.cool/looc/git-cnb] 项目,自定构建多平台的二进制文件后上传到 release 附件,通过提供一件安装二进制命令的工具。

added labels
擂主团已回答
Developer

如果编程语言不支持,还有两条路可以走

  • 我们的企业版是支持自定义构建机的。https://docs.cnb.cool/zh/enterprise.html
  • 或者把 CNB 作为触发器,通过 SSH 插件或 webhook 的能力,将构建消息发送到 Mac 和 Windows 中,然他们独自去构建
Resolved ISSUE
Assignee
(段超)
Label
擂主团已回答
有效问题
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant