Azure devops 根据计划将不同的参数值传递给Azure DevOps管道
我有一个长期运行的DevOps管道,每天早上都会建立一个复杂的环境 它有一个参数;我们称之为“版本” 我需要安排管道每天早上自动运行三次,版本值为1、2和3 通过触发器查看,调度触发器和管道触发器似乎都不允许传递参数值 有办法吗? 重要的是,它们彼此独立运行。每次执行需要30到60分钟。因此,在循环中一个接一个地运行它们不是一个选项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
这就是我的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。您似乎建议在循环中运行作业步骤。我不知道为什么我需要一个模板。但是,与此无关,循环会将总运行时间延长得太多。因此,这不是我的选择。