Azure devops 过滤VST构建人工制品,用于基于“at”的发布;触发“;分支
上下文: 我在同一个Azure DevOps Git repo中有两个YAML构建定义。YAML文件位于不同的文件夹Azure devops 过滤VST构建人工制品,用于基于“at”的发布;触发“;分支,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,上下文: 我在同一个Azure DevOps Git repo中有两个YAML构建定义。YAML文件位于不同的文件夹component1和component2,构建触发器根据路径进行过滤。以下是YAML文件: 文件夹组件1中的第一个文件: name: 1.0$(Rev:.rr) trigger: branches: include: - master - release/* paths: include:
component1
和component2
,构建触发器根据路径进行过滤。以下是YAML文件:
文件夹组件1
中的第一个文件:
name: 1.0$(Rev:.rr)
trigger:
branches:
include:
- master
- release/*
paths:
include:
- component1
resources:
- repo: self
steps:
- task: CopyFiles@2
displayName: My Copy Step
inputs:
SourceFolder: 'component1'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: Publish Artifacts
文件夹component2
中的第二个文件:
name: 1.0$(Rev:.rr)
trigger:
branches:
include:
- master
- release/*
paths:
include:
- component2
resources:
- repo: self
steps:
- task: CopyFiles@2
displayName: My Copy Step
inputs:
SourceFolder: 'component2'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: Publish Artifacts
我还有一个由这两个工件触发的发布管道,并部署这两个工件中最新的一个
我的目标:
我想要实现的是,当发布自动创建时,我想要过滤工件,以便发布使用源自“触发”分支的最新工件
如果我把它放在一个序列中,它会是这样的:
master
分支的component1
中更改了一个文件component1
构建定义启动,并基于master
分支创建工件master
分支的最新版本release
分支的component2
中更改了一个文件component2
构建定义启动,并基于release
分支创建工件发布
分支的最新版本。对于这两个工件,不是前一个序列的最新版本$(Release.Artifacts.{Artifact alias}.SourceBranchName)
变量作为“Default version”字段,但这不会触发发布
我的目标可行吗?如果是,怎么做?为什么不为每个分支使用单独的生成定义?这限制了选择从哪个分支生成的动态特性。它的刚性和高维护性。我不感兴趣。你想在这里取得什么成果?从你的抽象描述中无法确定你所做工作的价值。这种方法似乎有点复杂,需要先检查构建的源代码,然后才能轻松确定其组成部分。在我目前的情况下,有很多历史限制。尽管如此,如果我试图详细阐述;把它想象成一个微型服务回购(肮脏的字眼,我知道!)。系统由这些组件组成,每个组件都有一个作为构建管道结果的工件。在git提交级别上,这些组件应该可以很好地协同工作,但它们在工件级别上存在差异,因为我们希望分别构建每个组件;如果只更改了一个组件,我们不想构建所有组件。这是否更清楚?我会考虑使用Azure DevOps Artefacts作为组件的构建输出,然后从中包含您的项目。但这对我来说仍然没有100%的意义:)