自托管的Azure代理-如何配置管道以共享同一构建文件夹

时间:2020-06-10 15:49:09

标签: azure azure-devops azure-devops-self-hosted-agent

我们在本地服务器上有一个自托管的构建代理。

我们通常有一个大型的代码库,并且过去使用TFS2013构建代理遵循此机制:

  • 每天签到到c:\ work \ tfs \(大约需要5分钟)
  • 每晚将运行一个批处理文件,该批处理文件使用相同的源(它们是CI构建中的“最新”文件)对这些文件夹进行相同的构建,并构建安装程序。将文件复制到网络位置,然后向团队发送电子邮件,详细说明构建成功/失败的过程。 (大约需要40分钟)

关键在于,对于每晚进行的构建,无需获取最新资源,所需的磁盘空间不会增加太多。仅取决于安装程序的大小。

为了使用Azure Devops复制此文件,我创建了两个管道。 使用经典编辑器中的MSBuild任务完成CI的一条管道-效果很好 经典编辑器中的另一个管道可以运行我们现有的powershell脚本,该管道计划在晚上9点运行-效果很好

但是,即使我的代理人不支持并行构建,发生的情况还是: CI管道的文件夹为c:\ work \ 1 \ 每晚构建文件夹为c:\ work \ 2 \

这使我们所需的磁盘空间增加了一倍(10gb至20gb) 它们是相同的代码文件,只是生成方式不同。

我一直在努力寻找一种对代理说“请对所有管道使用相同的sources文件夹”的方法

这是什么设置,因为我们必须向服务提供商支付额外的GB存储空间。

还是我需要将我的经典管道更改为Yaml并以某种方式有条件地分支该构建,以便它知道已在计划中并执行其他操作? 或者也许停止使用管道进行计划的构建,并像以前一样在Windows中使用任务计划程序?

(我确实尝试寻找相同的问题-我敢肯定我不是唯一的一个)。

2 个答案:

答案 0 :(得分:1)

有“ workingDirectory”指令可用于在管道中运行脚本。此链接包含有关此内容的详细信息-https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/command-line?view=azure-devops&tabs=yaml

答案 1 :(得分:0)

构建代理中代表特定管道的工作文件夹c:\work\1\c:\work\2\ ... c:\work\6\中的数字'1''2'...'6'。

Agent.BuildDirectory

代理上的本地路径,其中给定版本的所有文件夹 创建管道。该变量的值与 Pipeline.Workspace。例如:/ home / vsts / work / 1

如果有两个管道,则还将有两个对应的工作文件夹。这是一种例外行为。我们无法将管道配置为共享相同的构建文件夹。这是设计使然。

如果您需要使用更少的磁盘空间来节省成本,请避免停止使用管道进行计划的构建,并像以前一样在Windows中使用任务计划程序是一种更好的方法。