我正在防火墙后面使用 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 install
或 winget install
将会更加可靠。您也可以直接在服务器上安装该工具。
关于Azure管道,自托管代理,我可以使用脚本中的zip实用程序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64819561/