夜间计划的 yaml 管道运行,即使手动运行后没有任何更改

问题描述 投票:0回答:1

我们有一个每晚运行的管道来构建我们的应用程序,按照如下时间表进行设置:

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
  always: false

这一切都工作正常,并且仅在实际发生任何更改时才构建。这是我们的 SQA 团队第二天拾取的构建,一切都很好。

当它是紧急构建时,问题就出现了,我们手动触发构建,以便可以在同一天进行测试。尽管分支没有发生任何变化,但当晚管道仍然再次运行。这给 SQA 带来了一些混乱,也造成了一些资源浪费。这是一个新版本,与之前测试过的版本没有任何变化。没有与第二次运行相关的工作项,因此它似乎应该能够知道是否实际上有任何更改。

如果自上次运行以来实际上没有任何更改,如何将其更改为不运行?

azure-devops azure-pipelines
1个回答
0
投票

这里的关键词是预定

always: boolean # whether to always run the pipeline or only if there have been source code changes since the last successful scheduled run. The default is false.

我会考虑深入研究为什么你需要“更紧急的构建”。是紧急功能发布还是错误修复 - 然后使用分支策略/管道过滤器来支持该原因。

或者,您可以编写一个脚本来在 HEAD 和 HEAD~1 之间进行 git diff

git diff --name-only HEAD HEAD~1
if [ $? -eq 0 ]
then
  echo "##vso[task.setvariable variable=runJob]true"
else
  echo "##vso[task.setvariable variable=runJob]false"
fi

然后添加一个

condition: eq(variables.runJob, 'true')

但请不要这样做。它丑陋且脆弱,正在破坏您的管道。

© www.soinside.com 2019 - 2024. All rights reserved.