在 Azure DevOps 中的不同项目之间共享变量

Lea*_*ira 5 azure-devops azure-pipelines-yaml

希望你们一切都好!

我需要问一个关于azure devops的问题,我已经阅读了文档,但是我没有找到解决这些疑问的方法

我有 X、Y 和 Z 项目,并在 X 项目中在管道 >> Libray中创建一组称为常规的变量,我希望与 Y 和 Z 管道共享,在配置该组时我启用了选项“允许访问所有管道”。

在 Y 和 Z 管道的 YAML 中,我进行了以下配置:**变量:

  • 组:一般**

运行管道时,他返回一个授权请求,甚至单击授权,根据下面的打印:

打印授权错误

There was a resource authorization issue: 
"An error occurred while loading the YAML build pipeline.  
 Variable group was not found or is not authorized for use.  
 For authorization details, refer to https://aka.ms/yamlauthz."
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法在不同用途的管道之间共享变量,如果有的话,您能给我发送一些可以帮助我配置这个的文档吗?

Edw*_*SFT 5

在我这边进行测试,我可以重现此问题,设置“允许访问所有管道”选项将使当前项目中的任何管道(而不是跨项目)可以访问变量组。这应该是一个已知的限制,是反馈​​票。您可以投票并关注此票。您还可以在此处创建新的建议票\xc2\xa0 。产品组将定期审查这些票证,并考虑将其作为路线图。

\n

此外,作为解决方法,您可以尝试将这些共享变量添加到Azure Key Vault中,然后使用Azure Key Vault 任务从保管库中获取全部或部分机密的最新值,并将它们设置为可以使用的变量。用于管道的后续任务。有关详细信息,请参阅:在 Azure Pipelines 中使用 Azure Key Vault 机密

\n


pau*_*sm4 0

此链接很好地概述了在 Azure DevOps 管道中使用变量:

https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables

在最常见的情况下,您设置变量并在 YAML 文件中使用它们。

在 YAML 文件中,您可以在各种范围内设置变量:

  • 在根级别,使其可供管道中的所有作业使用。
  • 在阶段级别,使其仅适用于特定阶段。
  • 在工作级别,使其仅适用于特定工作。

问:听起来您想YAML 管道根之间共享变量,对吗?您当前正在尝试使用变量组来完成此任务,对吗?

另一个解决方案是让您的管道从“共享文件”中读取。例如:

有没有办法从 Azure DevOps YAML 读取文件?

...您可以使用任何您喜欢的脚本语言来解析文件并“吐出”您需要的任何内容作为构建变量并稍后使用它。这就是我一直在做的事情:

- script: echo "##vso[task.setvariable variable=dp]$(cat $(Build.Repository.LocalPath)/deployment/dp)"
- script: az group delete -n $(dp)-k8s -y --no-wait
Run Code Online (Sandbox Code Playgroud)

换句话说:

  • 使用您想要“导出”的变量创建一个文件。它可以是任何脚本格式:Powershell、bash等。

  • 修改管道以读取文件并在运行时“导入”变量定义。

  • 有很多方法可以做到这一点。上面的 SO 链接只是一个示例。