是否有办法在按计划触发的Azure DevOps构建管道(YAML)中传递参数?例如,如果您想每晚构建发布版本,但每周还要构建调试版本怎么办?
似乎不应该必须复制整个构建管道到SomeBuild-Debug中,以使具有configuration = debug作为默认值的构建能够按计划进行。
是否有办法在按计划触发的Azure DevOps构建管道(YAML)中传递参数?例如,如果您想每晚构建发布版本,但每周还要构建调试版本怎么办?
似乎不应该必须复制整个构建管道到SomeBuild-Debug中,以使具有configuration = debug作为默认值的构建能够按计划进行。
可以检测到构建是通过计划触发的。根据这些信息,您可以设置某些变量或触发某些进程。
Azure DevOps管道为您提供访问一些预定义的变量。特别是, Build.Reason
:
variables:
${{ if eq( variables['Build.Reason'], 'Schedule' ) }}:
myCustomVariable: 'Weekly debug'
- task: CmdLine@2
condition: eq( variables['Build.Reason'], 'Schedule' ))
displayName: 'My scheduled script'
inputs:
script: echo "I was launched during a scheduled build"
致谢:本答案受到Kevin Lu-MSFT'sanswer在Setting parameter value dynamically for automatic pipelines上的启发。
您可以使用 REST API 使用外部服务(ansible,自动化任务等)安排 Azure DevOps 构建。在 REST API 调用中,您可以指定输入参数。这样,您将需要使用外部服务而不是 .yml 文件的 schedule
来安排构建流水线的触发。
触发构建流水线的示例。您应该替换 ** 之间的字符。
POST https://dev.azure.com/**GeralexGR**/**test-project**/_apis/pipelines/**11**/runs?&api-version=6.1-preview.1
正文部分
请记住,您还需要使用PAT进行身份验证,以使用Azure Devops的REST API。