azure-devops - 在 Azure Devop 中触发 YAML 管道

标签 azure-devops azure-pipelines azure-pipelines-release-pipeline

我是 Azure Devops 中 YAML 构建管道的新手,我正在尝试围绕触发器功能进行思考。困扰我的是我想在不同的分支上使用不同的触发器,但我想使用相同的管道。

可以说我想要

  • 建立在 master 分支上的所有 checkin 上,这应该部署到服务器
  • 每天晚上我都想构建并将开发分支部署到另一台服务器

  • 我很困惑,因为 yaml 文件也被检入了 Git。我读到,如果你有预定的触发器,你也不能有 CI 触发器。

    我需要有两个 .yml 文件吗?一个定义每个?重复所有步骤似乎不酷

    或者我应该在每个分支中拥有相同文件的不同版本?这不会在某个时候合并吗?

    额外问题:如果您在 Developemt 分支上推送构建管道并在 master 上触发会怎样? (呃,我头晕了)

    最佳答案

    Do I need to have two .yml files? One defining each? Seems not cool to repeat all the steps



    经过一段时间的研究,我个人建议你最好用两个.yml具有不同构建管道的文件。

    直销 问题是关于master的代码分支和development分支不是实时同步的。当两个分支上的代码不同时,构建的结果也不同。如果它们在同一个管道中,我们需要手动 检查构建失败时错误来自哪个分支。这是一件痛苦的事情。

    另一个 问题是我们可以定义 CI triggerScheduled trigger在一个 yaml 文件中,例如:
    trigger: 
     branches:
        include:
          - master
    
    
    schedules:
    - cron: "* 10 * * *"
      always: true
      displayName: Daily midnight build (UTC 22:00)
      branches:
        include:
         - Development
    

    为此,我们需要在 Development 上设置此 yaml分支。如果我们更改 master 分支中的任何代码,它将触发此管道。 然而 ,它只在 Development 上构建代码分公司,它不包括 master 中更改的代码.所以这个 CI 触发器将毫无意义。

    should I have different version of the same file in each branch? Won´t this get merged at some point?



    个人建议你最好使用不同名称的不同yaml文件。就像你说的,同样的文件在后面的分支合并中容易出现不必要的风险。

    My bonus question was more like: Are you suppose to keep different version of your build pipeline in different branches? I mean if i want to build develop branch each time i push to develop can this trigger be defined in the master branch version of the yaml file?



    答案是肯定的。您可以使用 中的简单语法设置 CI 触发器。大师 yaml 文件的分支版本:
    trigger: 
     branches:
        include:
          - master
          - Development
    

    使用此设置,每次推送到 develop 分支时都会触发在 yaml 文件的 master 分支版本中定义的构建。

    注意:对于您的额外问题,如果我们在 CI 触发器上面设置,管道将由于 dev 上的持续提交而触发构建。分支。有时我们只是修改了一个readme文件,我们不希望这样的修改触发不必要的构建,解决此类问题的最好方法是使用 PR trigger .

    希望这可以帮助。

    关于azure-devops - 在 Azure Devop 中触发 YAML 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541723/

    相关文章:

    azure - AzCopy(devops 管道)未被识别为 cmdlet、函数、脚本文件或可操作程序的名称

    tfs - 如何在Team Build 2015中配置多个项目

    xcode - 我的 pod 安装缺少什么? Xcode 构建失败 Azure Devops 管道

    azure - 无法使用 CI/CD 在 ADF v2 中部署 TumblingWindowTrigger

    azure - 通过shell或ansible在azure上创建vm实例?

    azure - 调试 ARM 部署脚本的技术

    python - 使用 Python 获取 Azure DevOps 项目工作项时进行身份验证

    azure-devops - Azure DevOps yaml 管道 : how to know which branch is being checked out?

    powershell - 在 VSTS 版本定义中的 Azure CLI 中使用服务主体

    linux - 使用 dotnet 的带有托管 Linux 预览版的 Nuget 包的 VSTS 发布管理