在TeamCity中组合工件

时间:2012-02-23 17:06:34

标签: teamcity

到目前为止,我已经查看过相当多的讨论但没有成功。

我们的构建过程(在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无法嵌套档案的限制吗?

3 个答案:

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