【问题标题】:CD Yaml build is triggered for branch in filter, but builds default branch过滤器中的分支触发 CD Yaml 构建,但构建默认分支
【发布时间】:2021-11-18 16:16:03
【问题描述】:

我有 3 个 Yaml 管道:

  • CI1 应该建立在对 services/* 分支的任何提交之上
  • CI2 应该建立在对 services-release/* 分支的任何提交上
  • 应该部署 CI2 创建的工件的 CD

CD 设置如下:

YAML 设置

触发器设置

如您所见,我尝试了不同格式的分支到分支过滤器。即使我添加了非通配符过滤器,我仍然会看到以下行为:

  • CD 管道在 CI2 之后触发,由提交到 services-release/* 分支(这是正确的)触发,但它从分支发布最新构建,在“手动和计划构建的默认分支”下拉列表中指定 - 这是在我的情况下发展。

我应该改变什么来部署 CI2 build 从 services-release/* 分支生成的工件?

【问题讨论】:

    标签: azure-devops yaml


    【解决方案1】:

    从图片来看,您使用的是 yaml 管道,但使用的是经典管道触发器。虽然这适用于触发管道,但您可能需要考虑在 yaml 文件中为 C1 和 C2 管道实现触发器。

    https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#ci-triggers

    对于基于 yaml 的 CD 管道,为了使管道在 CI2 完成时触发并从触发运行下载工件(而不是从默认管道中下载最新的工件),您应该参考 CI2-pipeline作为资源:

    https://docs.microsoft.com/en-us/azure/devops/pipelines/process/pipeline-triggers?view=azure-devops

    比如:

    resources:
      pipelines:
      - pipeline: ci2_pipeline #this is used to reference this resource in CD pipeline
        source: CI2 #Rename this to match your build pipeline name
        trigger:
          branches:
          - services-release/*
    

    对于工件,您要确保使用管道工件而​​不是经典构建工件,并使用 CD 管道 (https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/download-pipeline-artifact?view=azure-devops) 中的下载管道工件 - 任务。所以像:

    steps:
    - download: none # Disable downloading default artifacts
    - task: DownloadPipelineArtifact@2
      inputs:
        buildType: "specific"
        project: "$(resources.pipeline.ci2_pipeline.projectID)"
        definition: "$(resources.pipeline.ci2_pipeline.pipelineID)"
        preferTriggeringPipeline: true
            buildVersionToDownload: "latestFromBranch"
        branchName: "$(Build.SourceBranch)"
            targetPath: "$(Pipeline.Workspace)"
    

    【讨论】:

    • 您好 JukkaK,谢谢您的回答。我确实有 dowloadPipelineArtifact@2 步骤,但有些属性不同。我已尝试根据您的评论对其进行修改,现在必须出现以下错误 Line: 10, Col: 35, Idx: 301) - (Line: 10, Col: 35, Idx: 301): Mapping values are not allowed in这个上下文。 ![管道截图] (ibb.co/RbwVmPj)
    • 这是 yaml 格式的错误,所以要么缩进有问题,要么 yaml 不遵循 yaml 架构 (docs.microsoft.com/en-us/azure/devops/pipelines/…)。我尝试复制相同的 yaml 并且它可以工作,所以我想知道问题是否可能出在您引用管道资源的步骤上,而不是在屏幕截图区域中。
    猜你喜欢
    • 2015-12-14
    • 2019-07-28
    • 2020-08-24
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多