Azure 管道,自托管代理,我可以使用脚本中的 zip 实用程序吗

Azure pipelines, Self-hosted agent, can I use a zip utility from scripts

我正在使用 Windows 防火墙后面的自托管代理处理 Azure 管道,在创建工件后,我想压缩目标文件夹中存在的当前版本并将压缩文件存储在共享文件夹,以防我们需要回滚或比较。

我不想为此使用管道中的预定义任务,因为需要隐藏计算机名称和文件夹。

我创建了一个运行 7-zip 实用程序的 PowerShell 脚本,但我必须将它安装在服务器上并提供完整路径,而我相信代理上存在一些 zip 实用程序。

我们是否可以像这样引用提供的工具,它是否有变量,或者我应该简单地将它安装在代理服务器上?

还有其他推荐的方法吗? 谢谢。

不能保证当前代理附带的任何工具将:

  • 保持不变version/compatible
  • 继续代理发货

构建代理的团队试图使代理尽可能苗条。它还附带 Azure DevOps Server DVD 映像,其中每一位都很重要。过去已删除工具。

PowerShell

根据您需要的功能,从版本 5 开始 PowerShell also has built-in archive supportcompress-archive。这已经有一段时间了,不需要您在服务器上安装任何东西。

在足够旧的 PowerShell 版本上,您可以直接使用 .NET 框架:

邮编:

PS C:\> Add-Type -A 'System.IO.Compression.FileSystem';
[IO.Compression.ZipFile]::CreateFromDirectory('C:\folder', 'C:\output.zip')

解压:

PS C:\> Add-Type -A 'System.IO.Compression.FileSystem';
[IO.Compression.ZipFile]::ExtractToDirectory('C:\input.zip', 'C:\output')

Windows

Windows 还内置了对 compress/expand 归档的支持。

您还可以创建一个 vhdx 虚拟驱动器,安装它并复制文件。 There are a number of options to turn on deduplication and a couple of other fancy features.

windows 的最新版本也带有 tar

备用工具

短期:您可以依赖代理的外部工具文件夹中的工具。

长期:工具安装程序任务(允许每个管道使用不同的版本)或 choco installwinget install 会更可靠。您也可以直接在服务器上安装该工具。