如何在 Azure Pipeline 中设置或注入环境变量的任意文件列表

How to set or inject an arbitrary file list of environment variables in an Azure Pipeline

我正在将一些 Jenkins 构建移植到 Azure Pipelines。其中一个端口集涉及一个任意的不断变化的环境变量列表。在 Jenkins 中,我只是 运行 一个注入脚本 运行 在代码库源代码中的列表文件中,构建在任何脚本或构建步骤需要它们时引用这些变量。一些变量是硬编码的,而其他变量引用构建本身的环境变量。

我查看了 Define variables 文档,但它要么没有显示完成此操作的方法,要么我不知何故错过了它。除了求助于 Setx 之类的东西之外,我该怎么做呢?我无法知道哪个构建将使用哪些变量,因此对它们进行硬编码毫无意义。唯一不变的是,我知道要查找名为 env-vars.txt.

的根级文件

您可以使用日志记录命令来使用 job-scope 个变量:https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash.

然后在您的步骤中使用它们:Environment variables

System and user-defined variables also get injected as environment variables for your platform. When variables are turned into environment variables, variable names become uppercase, and periods turn into underscores. For example, the variable name any.variable becomes the variable name $ANY_VARIABLE.

示例:

  • 步骤 1

     - powershell: |
         Write-Host "##vso[task.setvariable variable=my.var1]var value 1"
         Write-Host "##vso[task.setvariable variable=my.var2]var value 2"
         Write-Host "##vso[task.setvariable variable=my.var3]var value 3"
         Write-Host "##vso[task.setvariable variable=my.var4]var value 4"
       displayName: 'Set vars'
    

'

  • 步骤 2

    - powershell: |
        Write-Host "Var1:" $Env:MY_VAR1
        Write-Host "Var2:" $Env:MY_VAR2
        Write-Host "Var3:" $Env:MY_VAR3
        Write-Host "Var4:" $Env:MY_VAR4
      displayName: 'Read vars'
    

第 2 步的结果

The only constant is, I know to look for a root-level file called env-vars.txt

假设这只是 key:value 对的列表,您可以这样阅读它们。

如果您不想修改文件的格式,您可以按照@shamrai-aleksander 的回答解析它并以这种方式设置变量。

variables:
- template: env-vars.yml

env-vars.yml

variables:
somevariable:value

VS Marketplace 上有一个 Azure Pipelines 构建任务模块可以执行此操作,称为 Json to Variable,作者是 Jeff Przylucki。我可以请求 repo 的开发人员将他们的 env-vars.txt 更新为 JSON 或 运行 现有工具,以将 Key=Value 对转换为 JSONs.

Task that will read a JSON file present on your build agent, from a build or a release, and will Generate Build/Release Variables to be used in other steps.

Json 到变量:https://marketplace.visualstudio.com/items?itemName=OneLuckiDev.json2variable