2012-02-23 46 views
6

我已经通过了相当多的,但没有成功,这些讨论的这么远远的看着。结合文物在TeamCity的

我们的构建过程(上TeamCity的6.5.5)产生两个文件夹,A和B.

我们目前正在压缩和解部署(工件路径文件夹B中。\ B => B-%build.number%。压缩)。然而,它已经决定将文件夹中应包括在B的拉链也就是说,继建立一个档案,B-2.0.0.zip应该是这样的:

B-2.0.0.zip 
    file 1 
    ... 
    file n 
    A.zip 
     file a1 
     ... 
     file an 

要做到这一点,我已经添加工件路径\ A => \ B \ A.zip B用现有拉链规则之前,所以我们的伪影的路径如下所示:。

.\A => .\B\A.zip 
.\B => .\B-%build.number%.zip 

然而,虽然A.zip产生(I可以在构建后的文件夹B中看到它),它不会添加到存档B.zip中。我查看了构建输出,并且按照预期的顺序创建了工件。

坦率地说,我很为难。任何见解都会得到真正的赞赏。我可能会修改构建脚本来完成这一任务,但我宁愿不要,如果可能的话。

在此先感谢。

编辑(12年2月24日): 在进一步的研究,这似乎是我跑了一个问题,与A.zip正在创建一个临时文件,并移动到位创建的所有工件后。

所以,我试图重新排序我的神器路径如下:

.\B => .\B-%build.number%.zip 
.\A => .\B-%build.number%.zip\A.zip 

我认为这将插入A.zip到B.zip。它不是嵌套存档,而是创建一个名为A.zip的文件夹。我只是看着TeamCity的限制不能嵌套档案?

+0

我想要类似的东西,找不到一个好的解决方案,除了使用构建脚本来生成一个目录结构我想。祝你好运 – 2012-02-24 14:29:25

+0

它看起来越来越像解决方案,迈克。谢谢。很高兴知道这不仅仅是我。;) – TimW 2012-02-24 15:22:44

回答

2

你说得对,TeamCity不支持复杂的工件包装方案。 要走的路是确实要添加一个构建步骤来准备要作为工件发布的文件。

+0

这是一个耻辱,但并不完全出乎意料。谢谢,Yaegor! – TimW 2012-02-27 14:12:17

2

一个选项可能是在构建完成之前使用Teamcity服务消息来创建第一个存档。

##teamcity[publishArtifacts '.\A => .\B\A.Zip'] 

然后让球队的城市还给构建神器在构建配置神器包装步:

喜欢的东西:

%env.TEAMCITY_DATA_PATH%\system\artifacts\%env.TEAMCITY_PROJECT_NAME%\%env.TEAMCITY_BUILDCONF_NAME%\%env.BUILD_NUMBER%\B\A.zip => .\B-%build.number%.zip 
.\B => .\B-%build.number%.zip 
7

至少有9版本,现在可以通过在“工件路径”字段中执行类似操作将多个文件添加到同一个zip文件中:

.\A => myArchive.zip 
.\B => myArchive.zip 

不知道,如果子文件夹/子档案可以在飞行中创建...

+2

超级相关的提示。我的用例就是这个;我确认这在TeamCity 9.X中有效。 – Form 2015-07-27 20:27:41

+1

子文件夹可以这样创建:+:*/*。css => report.zip!/ css / – iFred 2017-10-23 14:12:38