【问题标题】:Azure DevOps / Trigger pipeline which provide dependency artifact on manual runAzure DevOps / Trigger 管道,提供手动运行的依赖项
【发布时间】:2020-06-12 12:54:10
【问题描述】:

我是 azure devops 的新手,从 teamcity 迁移过来。我用的是经典编辑器,不是 yaml(对不起)

假设我们有公共库的管道:CommonLib

我们有构建一套工具的管道(它们都依赖于 CommonLib):ToolsSuite 在此管道开始时,我们从 CommonLib 下载工件。

CommonLib 更新不频繁的东西,如果我们只在它发生更改时构建它,我们可以节省一些时间。

在 TeamCity 中,我可以设置直接依赖关系,因此当我手动触发 ToolsSuite 时,它可以查看 CommonLib 是否已更改,并在需要时重建。通过这种方式,我确信会从CommonLib 获得最新的工件。

我希望在 Azure 管道中具有相同的功能,并且我可以在 ToolsSuite 管道上设置触发器,以便 构建完成CommonLib 构建完成时触发。但这并不能确保在手动启动ToolsSuite 期间,CommonLib 将由触发器构建,因此我们可能会获得不是最新的工件。为了解决这个问题 - 我们可以设置 CommonLib 在有新的推送提交时开始构建。如果没有这个触发器,我们很可能会在没有任何通知的情况下获得旧工件(除非构建工具会失败)。

我只想 100% 确定 ToolsSuite 将从 CommonLib 获得最新消息。从这一点来看,目前在 azure 中的方法看起来并不安全。如果CommonLib 上的触发器会被某人意外更改,我们可能会遇到ToolsSuite 的糟糕情况,请使用旧工件。

我是否正确理解了 azure 管道的逻辑? 我是否应该将CommonLib 的构建作为ToolsSuite 的第一个代理工作并且只有一个管道用于它?

谢谢。

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    Azure Pipeline 中无法按需触发另一个管道,以防它有未构建的更改。

    Azure Pipelines 的方式是按照您的描述进行操作:

    • CommonLib 配置 CI
    • ToolSuite 的管道中为CommonLib 配置管道完成触发器。

    除了权限之外,没有其他方法可以在 CommonLib 上强制执行 CI 触发器。这在 YAML 中更容易保护,因为您可以设置拉取请求策略以要求审查对 YAML 文件的更改。

    下载管道工件和下载构建工件任务具有分支和标签过滤器选项。

    您可以在构建完成触发器中添加一个分支过滤器:

    【讨论】:

    • 谢谢,所以如果我想为实验分支添加相同的管道并且我克隆了ToolsSuite,它将使用触发器复制到CommonLib 用于其他分支,我最终得到了混合分支构建?分支可以是参数吗?
    猜你喜欢
    • 2021-02-26
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多