0

下面概述的过程被简化以演示我面临的问题。

过程:

在此处输入图像描述

  • 在工件暂存目录 ($.Build.ArtifactStagingDirectory) 中创建“解决方案”文件夹。

  • 安装所需工具

  • 将 .zip 包从 Dynamics 365 源系统导出到工件目录 ($.Build.ArtifactStagingDirectory\Solutions) 中的“解决方案”文件夹

  • 发布工件 ($.Build.ArtifactStagingDirectory)

  • 将工件提交到 Git 存储库

管道首次运行时的行为

  • 观察到正确的文件夹结构。

在此处输入图像描述

第二次运行管道时的行为

  • 根文件夹的复制

在此处输入图像描述

第三次运行管道的行为

  • 找到并更新了第二级解决方案文件夹。
  • 它只是复制根文件夹的管道的第二次运行。从这里开始,它将在重复的第二级文件夹中查找并更新文件。

在此处输入图像描述

手动清理

  • 我可以删除顶级解决方案文件夹的内容,以给我这个结构——看起来更干净。尽管如此,这并不理想,因为有一个没有内容的不必要的解决方案文件夹。

在此处输入图像描述

为什么该文件夹在管道的第二次运行时重复,并且无论如何要阻止它?

4

1 回答 1

1

为什么该文件夹在管道的第二次运行时重复,并且无论如何要阻止它?

您遇到的行为与Commit to Git taskAzure Devops Service 扩展有关:Backup data during build or release

我重现了同样的问题,发现如果您的文件放在一个文件夹 ( Solutions) 中,就会发生这种奇怪的行为。如果我们的文件位于 的根目录中Path,则可以很好地覆盖具有相同名称的旧文件。

要回答您的原始问题:

1.原因why the folder is duplicated on the second run与任务本身的设计有关,而不是Azure Devops Service。

2.阻止这种情况的唯一方法是将您的xx.zip 直接放在路径中,($.Build.ArtifactStagingDirectory)而不是创建Solutions文件夹。此外,您可以尝试在此处打开问题以联系此扩展程序的作者。我猜如果作者得到您的反馈,他会考虑修改扩展。

此外:

虽然使用 git 相关的任务很容易做一些 git 动作,但我建议你也可以考虑使用 CMD/PS 任务来使用 git 命令来做 commit/push/... 你可以在网上找到很多主题,这里是其中之一我的相关问题

希望能帮助到你 :)

于 2020-04-13T02:48:21.510 回答