Azure devops 根据计划将不同的参数值传递给Azure DevOps管道

Azure devops 根据计划将不同的参数值传递给Azure DevOps管道,azure-devops,Azure Devops,我有一个长期运行的DevOps管道,每天早上都会建立一个复杂的环境 它有一个参数;我们称之为“版本” 我需要安排管道每天早上自动运行三次,版本值为1、2和3 通过触发器查看,调度触发器和管道触发器似乎都不允许传递参数值 有办法吗? 重要的是,它们彼此独立运行。每次执行需要30到60分钟。因此,在循环中一个接一个地运行它们不是一个选项 这就是我的YAML代码当前的样子: trigger: none pr: none schedules: - cron: 0,5,10 12 * * mon,t

我有一个长期运行的DevOps管道,每天早上都会建立一个复杂的环境

它有一个参数;我们称之为“版本”

我需要安排管道每天早上自动运行三次,版本值为1、2和3

通过触发器查看,调度触发器和管道触发器似乎都不允许传递参数值

有办法吗? 重要的是,它们彼此独立运行。每次执行需要30到60分钟。因此,在循环中一个接一个地运行它们不是一个选项


这就是我的YAML代码当前的样子:

trigger: none
pr: none
schedules:
  - cron: 0,5,10 12 * * mon,tue,wed,fri
    displayName: Scheduled most mornings
    branches:
      include:
      - CIBranch
    always: true

parameters:
- name: Version
  type: string
  default: '3'

如果要运行三次相同的构建,只需改变一个参数,就必须考虑将主要步骤移到模板。可能是这样的:

#template.yaml
参数:
-名称:“版本”
类型:对象
默认值:{}
-名称:“服务器”
类型:字符串
默认值:“”
步骤:
-${{参数中的每个版本。版本}}:
-脚本:echo${{parameters.server}}:${{version}
-脚本:echo${{parameters.server}}:${{version}
-脚本:echo${{parameters.server}}:${{version}
-脚本:echo${{parameters.server}}:${{version}
-脚本:echo${{parameters.server}}:${{version}
-脚本:echo${{parameters.server}}:${{version}
生成定义:

触发器:无
公关:没有
时间表:
-克朗:0,5,10 12**周一、周二、周三、周五
displayName:计划的大多数早晨
分支机构:
包括:
-主人
总是:真的
游泳池:
vmImage:“ubuntu最新版本”
步骤:
-模板:template.yaml
参数:
版本:
- "1"
- "2"
- "3"
服务器:someServer
根据计划将不同的参数值传递给Azure DevOps管道

恐怕没有这种现成的方法来实现这一点

作为解决方法,您可以尝试使用Azure DevOps counter为每个计划生成设置
1-3
版本,如:

variables:
  internalVersion: 1
  semanticVersion: $[counter(variables['internalVersion'], 1)]
然后,我们可以创建powershell脚本来确定
计数器
值是否等于
3
,如果是,则调用REST API重置计数器变量值并返回种子


希望这能有所帮助。

我来这里寻找类似的答案。我想运行一个带有参数选项的每周构建

我想稍微修改一下Krzysztof Madej的答案可能对我有用

如果您/我创建模板化参数化生成。然后,您可以编写单独的管道,用所需的参数调用模板化版本

因此,对于您的实例,您将创建3个构建管道,它们调用相同的模板,但每次传入1、2、3

希望这有帮助


Shalarim

虽然传递不同的参数似乎是不可能的,但有一种方法可以实现这一点

在yaml文件中,使用策略部分,如下所示:

pool:
  vmImage: 'vs2017-win2016'

strategy:
  matrix:
    Run1:
      myvar: 12
    Run2:
      myvar: 14
    Run3:
      myvar: 16
这将创建三个“运行”设置
myvar
,作为环境变量


有关详细信息,请参阅。(注意:虽然本文档讨论了容器,但在没有容器的情况下也可以使用。)

每天早上您都想运行这三个版本吗?是的,Krzysztof Madej。每天早上三个都会更新一次,@leo liu-msft@SebastianMeine,我已经提供了一个解决方案,请检查它是否有帮助?Azure DevOps仍然不允许向调度程序触发的作业传递参数?谢谢,@krzysztof madej。您似乎建议在循环中运行作业步骤。我不知道为什么我需要一个模板。但是,与此无关,循环会将总运行时间延长得太多。因此,这不是我的选择。