如何让团队城市压缩压缩 zip 文件



我的问题:我在TeamCity上构建了一个zip文件:文件.zip它包含大量文件,zip文件是文件的良好容器。

可悲的是,由于遗留原因,zip 文件的标题中没有版本号。我希望它有一个版本号。像这样:文件.1.2.3.4.zip

我想也许我可以创建一个包含zip,我可以用版本号装饰,就像这样:ContainingZip.1.2.3.4.zip!文件.zip因此,文件.zip被压缩到另一个zip中!(疯狂)。

但是我无法弄清楚如何通过团队城市和它的工件路径来做到这一点?

我觉得应该起作用的是:/**/.=> 文件.zip => 包含 Zip.1.2.3.4.zip!文件.zip但这只是使Files.Zip成为Files.Zip

将其分为两个步骤,效果不佳:/**/.=> 文件.zipFiles.Zip => ContainingZip.1.2.3.4.zip这也不起作用,因为文件.zip在完成工件存在检查时不存在。

有人知道如何做到这一点吗?(还是我必须在构建步骤中预压缩?

谢谢。

答:TeamCity不会让你在工件窗口中双重压缩。您必须使用构建步骤。

你可以做什么...

通过PowerShell构建步骤,如果你有PowerShell 5+,则可以使用Compress-Archive。或者这里有很好的信息 http://stackoverflow.com/questions/1153126/how-to-create-a-zip-archive-with-powershell 旧的PowerShell版本。

通过 Ant 构建步骤:

<?xml version="1.0" encoding="UTF-8"?>
<project name="zipper" default="zip" basedir=".">
<property name="project-name" value="Files.zip" />
<property name="folder-to-zip" value="./FolderToZip/" />
<target name="zip">
<delete file="${project-name}" />
<zip destfile="${project-name}" basedir="${folder-to-zip}" excludes="${project-name}" />
</target>
</project>

您可以在工件路径中使用参数引用,因此,如果您定义一个名为 VersionNumber 的配置参数,例如,包含版本号值

并使用
/**/. => Files.%VersionNumber%.Zip

然后您将获得所需的输出。

最新更新