【发布时间】:2019-10-10 02:33:53
【问题描述】:
上周,我们的团队决定将所有单独的 .NET 项目转移到一个解决方案中。因为我们已经在为每个项目使用带有单独构建管道的 Azure DevOps,所以我们研究了仅在特定项目发生更改时才触发构建的可能性。这是为了防止构建代理在每次提交时重建整个解决方案。
因为我们的源存储库是本地托管的 Git 存储库,所以我们没有使用路径过滤器的优点,因此我们求助于使用 Powershell 任务来确定是否应该跳过所有即将执行的任务,使用自定义条件(在this所以问题)。
现在,在每次提交时,都会触发所有构建,但是如果它们应该继续构建并且(更重要的是)它们是否应该在最后发布构建工件,则构建会自行解决。下面是这样一个跳过构建的示例:
但是,每次这样的构建“成功”时,都会创建一个新的工件,即使已跳过发布工件任务。问题是我们所有的发布管道都是在构建管道创建工件时触发的。因此,每次如上所示跳过构建时,发布管道都会触发并尝试部署工件。但它失败了,因为它用于部署的工件并不真正存在(看起来它是空的,并且构建管道实际上并没有在摘要选项卡上提及工件),因此对工件的任何操作在发布中都会失败管道。
我们的发布管道设置为在源类型build artifact触发,对应的构建管道,默认版本参数设置为latest。
怎么可能,即使发布工件任务被跳过,发布管道仍会触发并尝试部署一个空工件?
【问题讨论】:
标签: azure-devops continuous-integration build-pipeline