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

标签 azure azure-pipelines 7zip

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

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

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

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

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

最佳答案

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

  • 保持相同版本/兼容
  • 继续通过代理发货

构建代理的团队试图使代理保持在可接受的范围内。它还附带 Azure DevOps Server DVD 镜像,其中的每一位都很重要。过去工具已被删除。

PowerShell

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

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

zip :

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 还内置了对归档的支持 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 将会更加可靠。您也可以直接在服务器上安装该工具。

关于Azure管道,自托管代理,我可以使用脚本中的zip实用程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64819561/

相关文章:

azure - 使用 MQTT 将真实设备连接到 Azure IoT Central

azure - 无法使用 Microsoft.Azure.Management.ResourceManager.Fluent 命名空间中的 ResourceManagementClient 类发现 Azure 资源

azure-devops - Linux VM 上的 Azure DevOps Pipeline PostSharp 失败

azure - 如何将环境特定值传递给Azure管道?

hex - 7zip 压缩存档文件的 CRC 数据

powershell - 从 powershell 脚本调用可执行文件(带参数)

Azure AD B2C 自定义策略 : Add hyperlink to custom attribute ClaimType

sonarqube - SonarQube 和 Checkmarx CxSAST & CxSCA 有什么区别?

cmd - 通过cmd命令解压文件(7-zip)

来自 Azure SDK 的 Azure IoT deviceId 验证