到目前为止,我已经查看过相当多的讨论但没有成功。
我们的构建过程(在TeamCity 6.5.5上)生成两个文件夹,A和B.
我们目前正在压缩文件夹B进行部署(工件路径。\ B => B-%build.number%.zip)。但是,已确定文件夹A应作为存档包含在B的zip中。也就是说,在构建之后,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的现有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无法嵌套档案的限制吗?
答案 0 :(得分:7)
至少在版本9中,现在可以通过在“工件路径”字段中执行类似操作,将多个文件添加到同一个zip文件中:
.\A => myArchive.zip
.\B => myArchive.zip
不确定,如果可以动态创建子文件夹/子档案......
答案 1 :(得分:2)
您是对的,TeamCity不支持工件的复杂打包方案。 要做的就是添加一个构建步骤来准备要作为工件发布的文件。
答案 2 :(得分:2)
一个选项可能是使用Teamcity Service消息在构建完成之前创建第一个存档。
##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