在TeamCity中合并构件

6
我浏览了不少这类讨论,但迄今为止都没有成功。
我们的构建过程(在TeamCity 6.5.5上)会生成两个文件夹A和B。
目前,我们正在为部署压缩文件夹B(工件路径 .\B => B-%build.number%.zip)。然而,现在决定将文件夹A作为存档包含在B的压缩包中。也就是说,在构建完成后,B-2.0.0.zip应该如下所示:
B-2.0.0.zip
    file 1
    ...
    file n
    A.zip
        file a1
        ...
        file an

为了实现这一目的,我已经在B的现有zip规则之前添加了构件路径.\A => .\B\A.zip,因此我们的构件路径如下所示:
.\A => .\B\A.zip
.\B => .\B-%build.number%.zip

然而,尽管A.zip已生成(我可以在构建后在文件夹B中看到它),但它没有添加到归档文件B.zip中。我查看了构建输出,预期的顺序创建了这些组件。
老实说,我很困惑。如有任何见解,将不胜感激。如果可能的话,我可以修改构建脚本来完成此操作,但最好不要。
提前致谢。
编辑(2/24/12): 经过进一步研究,似乎我遇到了一个问题,即A.zip被创建为临时文件,并在创建所有组件后移动到其位置。
因此,我尝试重新排列我的组件路径,如下所示:
.\B => .\B-%build.number%.zip
.\A => .\B-%build.number%.zip\A.zip

我认为这将会把A.zip插入到B.zip中。但是它没有创建一个嵌套的存档,而是创建了一个名为A.zip的文件夹。我只是在想TeamCity是否有无法嵌套存档的限制?

我想要类似的东西,但除了使用构建脚本生成我想要的目录结构之外,找不到更好的解决方案。祝你好运。 - Mike Two
看起来越来越像解决方案了,Mike。谢谢。很高兴知道不仅是我一个人这样想。 ;) - TimW
3个回答

9

从版本9开始,现在可以通过在“工件路径”字段中执行以下操作将多个文件添加到同一个zip文件中:

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

不确定,是否可以即时创建子文件夹/子存档...

2
超级相关的提示。我的使用情况正是这样;我确认在TeamCity 9.X中可以工作。 - Form
2
子文件夹可以通过以下方式创建:+:* / *。css => report.zip!/ css / - iFred

3

一种选择可能是使用Teamcity服务消息,在构建完成之前创建第一个档案。

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

然后在构建配置中的构件包装步骤中,让TeamCity返回构建产物,类似于:

%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

2

你说得对,TeamCity不支持复杂的打包方案来处理构件。

正确的方法是添加一个构建步骤来准备要发布为构件的文件。


很遗憾,但并不完全出乎意料。谢谢,Yaegor! - TimW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接