gpt4 book ai didi

azure-devops - 仅当最后一次提交包含关键字时才执行阶段

转载 作者:行者123 更新时间:2023-12-04 04:46:55 24 4
gpt4 key购买 nike

在 yml 文件中,我有一个阶段(名为 RELEASE),仅当触发提交包含 cetain 关键字时才需要执行,我的管道由提交触发。

预定义变量 Build.SourceVersionMessage 仅在任务级别可用,我今天使用它来单独跳过 RELEASE 阶段的每个任务,但我正在搜索一次跳过所有阶段。

知道如何在不使用 bash 导出或数据库插入的情况下正确执行此操作吗?

谢谢

最佳答案

有一些解决方法可以实现这一点。1、第一种解决方法需要您添加一个脚本任务以在上一阶段输出一个值为 Build.SourceVersionMessage 的变量。并在Release阶段添加dependencycondition。你可以引用下面的例子:

stages: 
- stage: Publish
displayName: 'Publish stage'
jobs:
- job: jobA
pool: Default
...
- script: echo "##vso[task.setvariable variable=commitMessage;isOutput=true]$(Build.SourceVersionMessage)"
      name: setvarStep
       
- stage: Release
    dependsOn: Publish
    condition: contains(dependencies.<Previous stage name>.outputs['<name of the job which execute the task.setvariable >.setvarStep.commitMessage'], 'keyword')
    jobs:
- job:
....

2。实现此目的的另一种解决方法是添加一个带有 powershell 任务的另一个阶段,该任务评估 Build.SourceVersionMessage 的值。然后在这个阶段的Release阶段添加一个依赖和条件。

在下面的示例中,GetSourceMessage 阶段有一个包含单个 powershell 任务的作业,如果 Build.SourceVersionMessage 不包含“关键字”,该任务将会失败。而Release阶段依赖于GetSourceMessage阶段,只有在GetSourceMessage阶段成功的情况下才会执行。

...
- stage: GetSourceMessage
jobs:
- job: jobofstage2
steps:
- powershell: |
if('$(Build.SourceVersionMessage)' -inotmatch "key")
{
exit 1
}

- stage: Release
dependsOn: GetSourceMessage
condition: succeeded()
jobs:
...

关于azure-devops - 仅当最后一次提交包含关键字时才执行阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58625420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com