将Golang环境变量注入Azure Pipeline

vsdwdz23  于 2023-01-21  发布在  Go
关注(0)|答案(1)|浏览(167)

我当前正在将一些生成组件迁移到 *Azure管道 *,并尝试为所有Golang相关进程设置一些环境变量。我希望在管道内执行以下命令:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build [...]

当使用提供的 Golang 集成时,为 Go 相关进程添加参数很容易,但是为所有(或每个)Go 进程设置环境变量似乎是不可能的。GoTool 或默认的 Go 任务似乎都不支持它,并且似乎也不支持执行带有shell执行的 script 任务。
我还尝试向整个管道流程添加一个环境变量来定义所需的标志,但Azure管道本身提供的 Go 任务似乎忽略了这些标志。
是否有办法将这些标志添加到每个(或单个)go进程中,比如我在下面的代码块中是如何做到的(其中的 flags 输入行是我编写的)?

- task: Go@0
  inputs:
    flags: 'CGO_ENABLED=0 GOOS=linux GOARCH=amd64'
    command: 'build'
    arguments: '[...]'
    workingDirectory: '$(System.DefaultWorkingDirectory)'
  displayName: 'Build the application'
xriantvc

xriantvc1#

根据我所能找到的信息和长时间的调试,我最终使用了一种变通方法,即在CmdLine@2任务中运行golang命令。由于GoTool@0设置管道和环境的方式,这是可能的。
因此,下面的代码片段符合我的目的。

steps: 
- task: GoTool@0
  inputs:
    version: '1.19.0'
- task: CmdLine@2
  inputs:
    script: 'CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build'
    workingDirectory: '$(System.DefaultWorkingDirectory)'

相关问题