有没有办法在 Azure DevOps Pipelines YAML 中参数化/动态设置变量组名称?

2024-04-18

我有一个嵌套的 Azure DevOps YAML 管道:

---
name: Some Release Pipeline

trigger: none

variables:
  - group: "DEV VARIABLE GROUP" # This is the environment variable library

stages:
  - stage: Stage1
    displayName: "Stage 1"
    dependsOn: []
    jobs:
      - template: /pipelines/pipeline_templates/sometemplate.yml

我想做的是在任何环境中重用这个发布管道。理想情况下,我会设置一个管道变量“组名称”,然后将其分配给该组。像这样的东西:

---
name: Some Release Pipeline

trigger: none

variables:
 - group: "$(group-name)" # This is the environment variable library

stages:
 - stage: Stage1
    displayName: "Stage 1"
    dependsOn: []
    jobs:
      - template: /pipelines/pipeline_templates/sometemplate.yml

然而,这似乎不起作用。无奈之下,我尝试了多种方法:

  • Using ${{ group-name }}
  • 我尝试使用以下方法将组名称作为参数传递:
    jobs:
      - template: /pipelines/pipeline_templates/sometemplate.yml
        parameters:
          variablegroup: $(group-name)

然后将其设置在作业中的 sometemplate.yml 中。例如:

jobs:
  - job: Job1
    variables:
      - group: ${{ parameters.variablegroup }}

然而,这也不起作用。

  • 我尝试过使用插入 https://learn.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#insertion ({{ insert }})按照建议here https://github.com/microsoft/azure-pipelines-yaml/issues/340。但是,要么我不知道如何正确使用插入,要么这不起作用,因为我总是遇到某种形式的验证错误。

根据this https://stackoverflow.com/questions/59173157/pass-a-variable-group-name-using-rest-api-azure-devops, and this https://stackoverflow.com/questions/52372291/azure-devops-vsts-link-variable-group-through-yaml, and this https://stackoverflow.com/questions/56224798/can-group-name-variable-be-dynamic-in-azure-pipelines, and this https://github.com/MicrosoftDocs/vsts-docs/issues/3702看来不可能。

我想知道是否有人找到了解决方案(除了调用 DevOps REST API 的非常混乱的解决方法之外)?


您将组名称作为参数传递给模板的直觉是正确的。我能够让这个工作:

模板文件传递变量组.yml

parameters:
- name: deploymentVariableLibraries
  type: object
  default:
    dev: ''
    qa: ''
    prod: ''

jobs:
- job: TestDev
  variables:
    - group: ${{parameters.deploymentVariableLibraries.dev}}
  steps:
    - script: echo "$(whichEnvironment)"
- job: TestQa
  variables:
    - group: ${{parameters.deploymentVariableLibraries.qa}}
  steps:
    - script: echo "$(whichEnvironment)"
- job: TestProd
  variables:
    - group: ${{parameters.deploymentVariableLibraries.prod}}
  steps:
    - script: echo "$(whichEnvironment)"

Pipeline

trigger: none

resources:
  repositories:
    - repository: templates
      type: git
      name: c4ePipelineExamples-Templates

jobs:
- template: passing-variable-groups.yml@templates
  parameters:
    deploymentVariableLibraries:
      dev: 'test-dev'
      qa: 'test-qa'
      prod: 'test-prod'

我每个作业的输出分别是DEV、QA、PROD(每个测试变量库中whichEnvironment的值)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 Azure DevOps Pipelines YAML 中参数化/动态设置变量组名称? 的相关文章

随机推荐

  • 如何将数据绑定到Spring表单中的列表

    我有一个带有支撑物体的弹簧形式 形式是这样的
  • 什么是 .htaccess 文件?

    我是 Zend 框架的初学者 我想了解更多关于 htaccess 文件及其用途 有人可以帮助我吗 我找到了一个这样的例子 htaccess 文件 AuthName Member s Area Name AuthUserFile path t
  • 转换为具体类并调用 Java 中的方法

    假设我们有一个名为A和一些子类 B C D ETC 大多数子类都有这个方法do 但基类没有 班级AA提供了一个方法叫做getObject 这将创建一个类型的对象B or C or D等 但将对象作为类型返回A 如何将返回的对象转换为具体类型
  • 如何使用salsa20计数器随机数?

    我不确定我是否做对了 消息计数器可以用作 代替随机数 我的意思是这样的消息 标头 2 字节 计数器 8字节 正文 n 字节加密 HMAC SHA1 计数器 1 63位 0 可以吗 我知道我不应该两次使用相同的密钥和相同的随机数 当新的连接启
  • 为什么Qt在qobject_cast、事件类型等方面重新实现RTTI?

    为什么 Qt 费心去重新实现相当于自定义 RTTI 系统和他们自己的系统 dynamic cast in the QObject层次结构 在QEvent etc 首先 Qt 中只有少数类层次结构实际上需要 RTTI 当您生成嵌入式代码时 您
  • 直接在Scipy稀疏矩阵上使用Intel mkl库以更少的内存计算A点A.T

    我想打电话mkl mkl scsrmultcsr https software intel com en us node 468640来自蟒蛇 目标是计算稀疏矩阵 C压缩稀疏行 http docs scipy org doc scipy 0
  • numpy.float64 不可迭代

    我正在尝试打印一个使用 numpy 数组和列表中的多个参数的函数 但我不断收到错误 numpy float 64 对象不可迭代 我在论坛上查看了关于这个主题的几个问题 并尝试了不同的答案 但似乎都不起作用 或者我可能做错了什么 我仍然是 p
  • Laravel查看路径错误

    当我更新视图文件时 我从旧路径获取视图文件 我有一个指向 IP vps 的域 我在其中安装了 laravel 让我们称之为 123 com 当我访问该域时 我会得到旧的视图路径 即我从中复制 Laravel 安装的文件夹的路径 该文件夹名为
  • 指定不同访问器中静态局部变量的构造/销毁顺序

    我遇到了崩溃cxa finalize运行一个程序 这是一个程序 而不是其中的库 ac test exe Assertion failed AcLock cpp 54 AcLock libc abi dylib terminate calle
  • 面试 - 查找数组中的幅度极点

    幅度极点 数组中左侧元素小于或等于它且右侧元素大于或等于它的元素 输入示例 3 1 4 5 9 7 6 11 期望的输出 4 5 11 我在面试中被问到这个问题 我必须返回元素的索引 并且只返回第一个满足条件的元素 My logic 取两个
  • 在 C# 中使用布尔标志来停止线程运行是否安全

    我主要关心的是布尔标志 在没有任何同步的情况下使用它是否安全 我在几个地方读到它是原子的 包括文档 class MyTask private ManualResetEvent startSignal private CountDownLat
  • 在存在 PDF iframe 的情况下选择文本后,文本输入开始向后输入

    预期的行为是什么 用户应该始终以正确的方向输入 即使他们以这种方式进行文本选择 什么地方出了错 如果我通过从右向左拖动鼠标并以 PDF iframe 结尾来选择输入 文本区域的文本 那么如果我开始键入 字符会向后插入 视频示例 https
  • 异步 servlet 不异步运行

    我有一个 servlet 它接受请求并写入长响应 响应位于使用 Thread sleep 1000 模拟长时间运行操作的循环中 我试图在这里设置一个异步请求 如代码所示 但它不起作用 当我向 servlet 调用多个请求时 它们都是连续执行
  • 在 pandas 中的列元素旁边添加数值

    这是我问的问题的进一步部分here https stackoverflow com questions 51574485 match keywords in pandas column with another list of elemen
  • 使用 HTML 输入类型文件从网络摄像头捕获摄像机录制视频

    在我的公司 我的任务是建立一个网站 用户可以在其中录制视频 这将被发送到服务器 一些事情将被完成 用户最终会收到一封电子邮件 嵌入该视频的微型网站的链接 经过一番研究 我得出的结论是 至少目前这是不可能的 在 iPad 上使用 getUse
  • typescript 参数可以注释为 const 吗?

    如果我不希望函数作用域内的参数值发生变化 有什么方法可以用 Typescript 对其进行注释吗 我试过了 function walk const fileName string string 但这不起作用 现在没有办法做到 也可能做不到
  • 应用程序崩溃后套接字仍在侦听

    我在 Windows 2008x64 上使用我的 C 应用程序之一时遇到问题 同一应用程序在 Windows 2003x64 上运行得很好 崩溃后 甚至有时在定期关闭 重新启动周期后 使用端口 82 上的套接字时会出现问题 它需要接收命令
  • 计算字符串中的常见字符 Python

    该代码的输出仍然是 4 但是 输出应该是 3 存在集合交集 因为我相信这是答案的关键 答案是 4 而不是 3 的原因来自于 s1 中与 s2 匹配的 2 个 qs 和 1 个 r 的数量 s2 qsrqq s1 qqtrr counts1
  • 未选择值的 DropDownList

    我在编辑页面内使用 DropDownListFor 辅助方法 但没有运气让它选择我指定的值 我注意到一个类似的问题 https stackoverflow com questions 1916462 dropdownlistfor in e
  • 有没有办法在 Azure DevOps Pipelines YAML 中参数化/动态设置变量组名称?

    我有一个嵌套的 Azure DevOps YAML 管道 name Some Release Pipeline trigger none variables group DEV VARIABLE GROUP This is the envi