【问题标题】:How Schedule Triggers work in Azure Devops?计划触发器如何在 Azure Devops 中工作?
【发布时间】:2023-03-11 09:25:02
【问题描述】:

对于 AzDO 中的 CI/CD 管道来说非常新。我正在浏览一些官方 Azure Pipeline 文档,我对 Schedule Triggers 有一些疑问。

以下是主分支中的管道片段:

schedules:
- cron: "0 0 * * *"
  displayName: Daily midnight build
  branches:
    include:
    - main
    - releases/*
    exclude:
    - releases/ancient/*
- cron: "0 12 * * 0"
  displayName: Weekly Sunday build
  branches:
    include:
    - releases/*
  always: true

文档说管道将在午夜为分支“main”和“releases”运行,如果自上次成功计划运行以来对这些分支进行了一些更改并在周日构建“releases”分支,而不管对 releases 分支的更改,这似乎是可以理解的。

这意味着我们可以控制其他分支(例如发布)从另一个分支(例如主)中存在的 YAML 文件构建。

同样,文档还指出,对于发布分支中的 YAML 之下

# YAML file in the release branch
schedules:
- cron: "0 0 * * *"
  displayName: Daily midnight build
  branches:
    include:
    - main

管道不会构建“release”分支,因为“分支”部分下缺少分支名称。但是它会构建“main”分支吗,因为它在“分支”部分下被提及?

如果不是,那么主分支中的第一个 YAML 如何使“发布”分支构建? main/default 分支中的 YAML 文件是否有一些特殊功能?

如果是,从发布/非主分支构建“主”分支真的有意义吗?

提前致谢。

【问题讨论】:

    标签: azure-devops yaml azure-pipelines build-triggers


    【解决方案1】:

    如果不是,那么主分支中的第一个 YAML 如何进行“发布” 建立分支机构?主/默认分支中的 YAML 文件是否有一些 特殊能力?

    Azure 管道中有一个默认分支设置(编辑管道 -> 获取源 -> 手动和计划构建的默认分支),它告诉管道要评估哪个分支以进行计划运行。 Yaml 构建使用与经典管道相同的调度,并且在该默认分支中对 yaml 文件的更改会反映在调度程序中。

    或者换句话说,Azure DevOps 中的管道与存储库中的 yaml 文件是分开的。在 repo 中创建 yaml 文件后,您需要在 Azure DevOps 中创建管道,通过新管道 -> 选择 repo -> 现有 Azure Pipelines yaml 文件(或创建新的 yaml 文件)。此步骤创建实际管道,该管道具有存储在 Azure DevOps 数据库中某处的自己的配置。这些配置指向为管道运行评估的 yaml 文件以及文件何时更改。

    如果您手动对管道进行排队,并选择默认分支以外的其他分支,则会评估您选择的分支中的 yaml 文件。此外,在评估分支触发器时,管道会评估分支提交中的 yaml 文件。所以,如果你在主分支中有这个触发器:

    trigger:
     - main
     - feature/*
    

    这在 feature/foo -branch 中:

    trigger:
     - main
    

    对 feature/foo 分支的提交不会触发管道。

    (不确定我是否清楚地回答了这个问题,或者只是增加了一些混乱,但你去吧。Azure Pipelines 中的触发器实现一开始有点混乱。)

    【讨论】:

    • Hmm.. 如果我理解正确,如果我们希望在提交到那些非默认分支时触发管道,我们需要为非默认分支设置构建管道。但是,如果我们在非默认分支的 YAML 中的“触发器”部分下不提及非默认分支名称,则不会触发管道。现在,如果我们假设在一个非默认分支(features/foo)的 YML 中的 trigger 部分下同时提到了“main”和“features/foo”,那么对该分支所做的任何提交都将触发两个 main 的管道和 features/foo 分支,对吗?
    • 您只需要设置一个构建管道,在触发器下添加应该从提交触发的分支。但是,该 yaml 文件应该存在于所有应该被触发的分支中。对于 scedhuled 构建,您应该添加 scedhule-trigger 并将管道设置中的默认分支设置为指向 main-branch。同样,管道 yaml 文件应该存在于 scedhule 应该触发的其他分支中。
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2021-10-02
    • 2020-04-13
    • 1970-01-01
    相关资源
    最近更新 更多