Azure DevOps Pipeline - 我可以根据一天中的时间运行不同的任务吗?

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

我的仓库中有两个 python 文件。使用天蓝色管道,我希望 file1 在一天中的一个特定时间运行,并且希望 file2 在其余时间的顶部运行。

我目前在 azure_pipeline.yml 文件中定义了一项作业,其中一项任务正在运行 file1。如何根据上述条件调整作业或任务以运行任一文件?

python azure-devops yaml azure-pipelines jobs
3个回答
0
投票

如何根据上述条件调整作业或任务来运行任一文件?

您可以使用计划触发器和

system.pipelinestarttime
变量来设置条件或 if 表达式。

system.pipelinestarttime变量的格式:

2022-06-30 03:13:20+00:00

这是一个例子:

schedules:
- cron: "   1 * * * *"
  displayName: Daily midnight build
  branches:
    include:
    - main
  always: true

pool:
  vmImage: ubuntu-latest

steps:
- ${{ if and(eq(variables['Build.Reason'], 'Schedule'), contains(variables['system.pipelinestarttime'], 'time for example: 3:14')) }}:
  - task: file 1

- ${{ else }}:
  - task: file 2

有关更详细的信息,您可以参考此文档:计划触发器表达式

更新:

您可以通过两个单独的管道来使用这些文件。

这是一个例子:

YAML 1:

schedules:
- cron: "   * 1 * * *"
  displayName: specific hour
  branches:
    include:
    - main
  always: true

pool:
  vmImage: ubuntu-latest

steps:
  - task: file 1

YAML 2

schedules:
- cron: "   1 * * * *"
  displayName: Other hours
  branches:
    include:
    - main
  always: true

pool:
  vmImage: ubuntu-latest

steps:
  - task: file 2

创建Pipelines时,可以选择YAML文件来创建Pipeline。


0
投票

根据我的评论,您可以使用其他 cron 设置创建第二个管道,这非常简单:

您可以在一个存储库中创建任意数量的 DevOps 构建管道。

如果您执行创建 Buid Pipeline 的常规步骤,Azure Devops 将创建一个新的 azure-pipelines-*.yml 文件(第一个文件名是 azure-pipelines.yml)

默认文件名是 azure-pipelines.yml,但如果您愿意,也可以稍后重命名该文件:


0
投票

您可以在管道中定义两个计划并为它们指定不同的 DisplayName,然后将条件添加到您的作业或任务中

condition: eq(variables['Build.CronSchedule.DisplayName'], 'Schedule1')

查看更多信息: https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/schedules-cron?view=azure-pipelines

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