Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Go run code.Go执行Go程序是最佳实践吗?_Go_Azure Devops_Continuous Integration - Fatal编程技术网

使用Go run code.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 对于每个构建任务,但我想知道这是否是一个可接受的实践/用例。我知道它会起作用,只是想知道是否

我有一个CI/CD管道,需要跨平台,并与几个不同的虚拟机监控程序一起工作。为了不必更改Windows和Linux的构建任务,我想Go将是一种编写代码一次并在任何地方运行的好方法。然而,在给定Go创建可执行文件的情况下,一个难题出现了——我的CI/CD平台无法在构建时引入exe或二进制文件,从而通过Go“正常”运行构建步骤。我想我可以在项目中提交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的构建,只需同时配置它们。