Azure devops 如果没有新版本的构建,如何在Azure VSTS CD管道中跳过发布构建工件

Azure devops 如果没有新版本的构建,如何在Azure VSTS CD管道中跳过发布构建工件,azure-devops,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines Release Pipeline,我们有一个发布定义,它提供了一系列asp.net核心服务和一个Angular应用程序 大多数服务都不经常更新,所以问题是如何将工件版本与已经部署到环境中的版本进行比较,并跳过之前是否部署过最新版本 我们正在开发多个环境。我认为这是不可能的,至少在本机上,您可以计算文件哈希值,如果它们匹配,则不部署。另一种选择是在生成应用程序时使用路径触发器进行筛选。例如,您的目录结构如下所示: root |--app1 |--app2 etc trigger: paths: include:

我们有一个发布定义,它提供了一系列asp.net核心服务和一个Angular应用程序

大多数服务都不经常更新,所以问题是如何将工件版本与已经部署到环境中的版本进行比较,并跳过之前是否部署过最新版本


我们正在开发多个环境。

我认为这是不可能的,至少在本机上,您可以计算文件哈希值,如果它们匹配,则不部署。另一种选择是在生成应用程序时使用路径触发器进行筛选。例如,您的目录结构如下所示:

root
|--app1
|--app2
etc
trigger:
  paths:
    include:
      - app1/*
      - sharedlibs/* (if you have them)
您可以在yaml构建中定义路径过滤器,如下所示:

root
|--app1
|--app2
etc
trigger:
  paths:
    include:
      - app1/*
      - sharedlibs/* (if you have them)

这样,只有当这些目录中的文件发生任何更改时,才会触发生成。您可以添加额外的发布环境,通过PowerShell检查当前工件版本(例如build.SourceVersion,check),如果已经成功发布,则任务失败

对于临时环境,请选择“环境后”选项,然后选择“上一个环境”


另一方面,由于您提到大多数服务不经常更新,您可以使用4c74356b41的建议来筛选构建,只构建并发布您想要的更改

谢谢。生成被处理。每个构建工件都有一个版本。问题是,即使只有一个服务发生了更改,发布版也总是会获取所有工件。想知道是否有办法知道哪个工件版本是从管道发布的。检查发布环境变量,每个工件都应该有一个变量,但对我来说,似乎需要为单独的应用程序提供单独的发布管道,但我们有一个应用程序(Angular SPA),它调用多个服务(可能有一系列调用)。因此,如果任何服务代码发生更改,我们将触发特定于服务的构建和应用程序发布。但该版本将部署所有服务,因为Angular是“主”版本。我知道如何找到工件版本。有没有办法查看当前部署的版本?我可以打一个服务电话获得它的verion,但该应用程序可以在发布时停止,所以它可能无法工作。