如何让TeamCity压缩zip文件

时间:2016-01-29 10:34:33

标签: zip teamcity

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

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

我想也许我可以创建一个包含拉链,我可以装饰一个版本号,如下所示:ContainingZip.1.2.3.4.zip!Files.zip 所以Files.zip被压缩成另一个拉链! (疯狂)。

但我无法通过TeamCity及其工具路径来解决这个问题?

我觉得应该工作的是: / ** / => Files.Zip => ContainingZip.1.2.3.4.zip!Files.zip 但这只是制作Files.Zip

将其分为两个步骤,并不是这样: / ** / => Files.Zip Files.Zip => ContainingZip.1.2.3.4.zip 这不起作用,因为当完成工件存在检查时,Files.zip不存在。

任何人都知道如何做到这一点? (或者我是否必须在构建步骤中预先压缩?)

感谢。

2 个答案:

答案 0 :(得分:0)

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

/**/. => Files.%VersionNumber%.Zip

然后你会得到所需的输出。

答案 1 :(得分:0)

答案: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>