Pez*_*lio 12 azure azure-devops azure-pipelines
我在从 Azure DevOps 中的另一个管道触发管道时遇到问题。我有一个 CI 管道,我想在 CI 通过主分支时触发一个部署管道。这在技术上似乎是可行的,但文档不清楚。
我看到以下内容:
# this is being defined in app-ci pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
- releases/*
- master
Run Code Online (Sandbox Code Playgroud)
但不清楚 a) 这是否进入触发管道(在我的情况下为 CI 管道)或触发管道(在我的情况下为部署管道)。
也不清楚 thepipeline和source指的是什么,以及我如何找出这些变量?它们都是管道的名称吗?我尝试了各种不同的排列,但似乎没有任何效果。
rsy*_*rsy 16
编辑
写完我的答案后,Microsoft 提出了另一种解决方案来解决这个问题,即通过经典管道使用构建完成触发器。他们的解决方案可以在这里找到。
如果您不从触发管道发布工件,则不会触发触发管道。
此外,使用这些类型的触发器有很大的限制。有必要defaultBranch for manual and scheduled builds将depends管道中的更改为工作分支。否则它不会在source管道执行结束时启动。因此,假设您在feature分支上工作,并且defaultBranch设置为feature. 你提交你的代码,一切都会按预期运行:source管道启动,最后,depends管道将被触发。都好!但是当您将合并到 时master,如果您不更改defaultBranch,depends则不会在source管道末尾触发管道。我defaultBranch在答案的末尾解释了如何更改。
我设法在一个简约的项目上启动并运行它。在这里,你可以有代码和了这里Azure上的DevOps项目。我将尝试指导您了解我是如何做到的,并回答您在帖子中提出的问题。
我将触发管道称为depends管道,将触发管道称为source管道。
在source管道上,除了发布工件外,无需执行任何操作。如果您不从source管道发布工件,它将无法工作。您可以在下面找到我用于我的虚拟source管道的代码。我希望它为master分支触发,最后我想确保发布一个工件。
trigger:
branches:
include: # branch names which will trigger a build
- master
pr: none
steps:
# required to cause pipeline triggering downstream
- task: CopyFiles@2
inputs:
contents: $(System.DefaultWorkingDirectory)/**/*.yml
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: $(Build.ArtifactStagingDirectory)
artifactName: dummy-$(Build.BuildId)
Run Code Online (Sandbox Code Playgroud)
在depends管道上(代码如下),我必须禁用CI和PR触发,否则当我提交到这个 repo 时,这个管道会被CI触发器触发,然后在source管道执行结束时触发。这是由我的代码的前两行完成的。然后我想那个叫管道source(这是source在下面的YAML属性),命名为项目内Pipelining(project财产在YAML)将触发电流(depends)管道时,该更新master分支。
trigger: none
pr: none
resources:
pipelines:
- pipeline: source
project: Pipelining
source: source
trigger:
branches:
include:
- master
steps:
- checkout: none
- script: echo 'triggered depends'
Run Code Online (Sandbox Code Playgroud)
是否有意义?Azure DevOps 上的项目名称property与 YAMLdepends管道代码中的匹配非常重要。对我来说是Pipelining
以及source属性,再次在 YAMLdepends管道代码中。
default分支为了更改defaultBranch,由于上述问题,您应该编辑管道(在本例中为depends管道),然后在右上角的三个点上选择Triggers。然后选择YAML选项卡,您将进入下图所示的屏幕,您可以在其中设置工作分支。
| 归档时间: |
|
| 查看次数: |
9533 次 |
| 最近记录: |