Azure DevOps构建:定期构建的参数

9

是否有办法在按计划触发的Azure DevOps构建管道(YAML)中传递参数?例如,如果您想每晚构建发布版本,但每周还要构建调试版本怎么办?

似乎不应该必须复制整个构建管道到SomeBuild-Debug中,以使具有configuration = debug作为默认值的构建能够按计划进行。


我也在寻找一种方法来实现这个,但看起来似乎没有办法不使用脚本或类似Azure Logic Apps的东西来完成。我在这里创建了一个功能请求:https://developercommunity.visualstudio.com/idea/1204205/allow-setting-parameters-for-scheduled-builds.html - Steve Glick
你能不能使用模板管道来完成这个任务呢?模板管道将包含所有的管道阶段、作业和步骤,然后你可以创建两个扩展模板管道的管道,只提供参数来定义不同的默认值。 - whatever
3个回答

8

可以检测到构建是通过计划触发的。根据这些信息,您可以设置某些变量或触发某些进程。

Azure DevOps管道为您提供访问一些预定义的变量。特别是, Build.Reason

触发构建的事件。
- Manual:用户手动排队构建。 - IndividualCI:由 Git 推送或 TFVC 提交触发的持续集成 (CI)。 - BatchedCI:由 Git 推送或 TFVC 提交触发的持续集成 (CI),并且选择了批量更改。 - Schedule:计划触发器。 - ValidateShelveset:用户手动排队特定 TFVC shelveset 的构建。 - CheckInShelveset:门控提交触发器。 - PullRequest:构建是由需要构建的 Git 分支策略触发的。 - ResourceTrigger:构建是由资源触发器触发的,或者是由另一个构建触发的。
基于此变量,可以定义自定义变量。
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'sanswerSetting parameter value dynamically for automatic pipelines上的启发。


3
我最近发现了这个问题,我认为有解决方法。如果您可以访问Azure门户网站,您可以创建一个在时间表上触发并且可以启动“排队新构建”的Azure逻辑应用程序。它允许使用参数的json字典: enter image description here 这允许使用不同的参数启动构建。

不幸的是,我在一个本地服务器上。我想我可以在Windows中使用计划任务来完成同样的工作,但我想知道它是否可能(或计划)作为官方功能。 - Anders Forsgren
我不确定你是否可以使用Windows计划任务启动构建。如果你找到了一种方法,请告诉我,那可能会很有趣。据我所知,这不是官方功能。 - GetShifting
我还没有尝试过,但我认为我可以安排任何东西,例如PowerShell片段或我的自定义程序来触发构建。例如:https://stackoverflow.com/a/55474158/678410 - Anders Forsgren
看起来确实很有前途。 - GetShifting

1

您可以使用 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

正文部分

enter image description here

请记住,您还需要使用PAT进行身份验证,以使用Azure Devops的REST API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接