我的问题:我在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
然后您将获得所需的输出。