使用Go run code.Go执行Go程序是最佳实践吗?
我有一个CI/CD管道,需要跨平台,并与几个不同的虚拟机监控程序一起工作。为了不必更改Windows和Linux的构建任务,我想Go将是一种编写代码一次并在任何地方运行的好方法。然而,在给定Go创建可执行文件的情况下,一个难题出现了——我的CI/CD平台无法在构建时引入exe或二进制文件,从而通过Go“正常”运行构建步骤。我想我可以在项目中提交Go代码并使用:使用Go run code.Go执行Go程序是最佳实践吗?,go,azure-devops,continuous-integration,Go,Azure Devops,Continuous Integration,我有一个CI/CD管道,需要跨平台,并与几个不同的虚拟机监控程序一起工作。为了不必更改Windows和Linux的构建任务,我想Go将是一种编写代码一次并在任何地方运行的好方法。然而,在给定Go创建可执行文件的情况下,一个难题出现了——我的CI/CD平台无法在构建时引入exe或二进制文件,从而通过Go“正常”运行构建步骤。我想我可以在项目中提交Go代码并使用: go run build_step.go 对于每个构建任务,但我想知道这是否是一个可接受的实践/用例。我知道它会起作用,只是想知道是否
go run build_step.go
对于每个构建任务,但我想知道这是否是一个可接受的实践/用例。我知道它会起作用,只是想知道是否有更好的方法来做到这一点。我正在使用Azure DevOps管道来实现它的价值 您可以使用交叉构建。例如: GOOS=windows GOARCH=386 go构建-o build.exe build\u step.go 或
GOOS=linux GOARCH=arm go build-o build build\u step.go是一个玩具,例如。如果您可以执行
go-run
,您也可以执行go-build
或go-install
。那么您对这个用例的建议是将go-build和go-install链接在一起吗?go-install
已经运行了go-build
。如果要将二进制文件安装到$GOPATH/bin
,请使用go install
。如果您希望它输出到其他任何地方,请使用go build
。如果您想要一个跨平台的CI/CD,考虑在YAML中使用它如何?就像matrix一样,它可以使用不同的作业副本运行不同的平台。这不需要您更改windows或linux的构建,只需同时配置它们。