在TeamCity中组合工件

在TeamCity中组合工件,teamcity,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 ...

我已经看过很多这样的讨论,但到目前为止都没有成功

我们的构建过程(在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 => .\B-%build.number%.zip
为了实现这一点,我在B的现有zip规则之前添加了工件路径。\A=>。\B\A.zip,因此我们的工件路径如下所示:

B-2.0.0.zip
    file 1
    ...
    file n
    A.zip
        file a1
        ...
        file an
.\A => .\B\A.zip
.\B => .\B-%build.number%.zip
但是,虽然生成了A.zip(我可以在构建之后的文件夹B中看到),但它并没有添加到归档文件B.zip中。我查看了构建输出,并按照预期的顺序创建了工件

坦白说,我被难倒了。任何洞察都将得到充分和真诚的赞赏。我可能会修改构建脚本来实现这一点,但如果可能的话,我宁愿不要

提前谢谢

编辑(2012年2月24日): 在进一步的研究中,我似乎遇到了一个问题:A.zip被创建为一个临时文件,并在所有工件被创建后被移动到位

因此,我尝试按如下方式重新排列我的工件路径:

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

我以为这会将A.zip插入B.zip。它不创建嵌套存档,而是创建一个名为a.zip的文件夹。我只是在看TeamCity无法嵌套归档的限制吗

没错,TeamCity不支持工件的复杂打包方案。
方法确实是添加一个构建步骤来准备要作为工件发布的文件。

一个选项可能是在构建完成之前使用Teamcity Service mesage创建第一个存档

##teamcity[publishArtifacts '.\A => .\B\A.Zip']
然后让team city在构建配置中的工件打包步骤中返回构建工件:

比如:

%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

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


但不确定是否可以动态创建子文件夹/子存档…

我想要类似的东西,除了使用构建脚本生成具有我想要的结构的目录外,找不到其他好的解决方案。很好luckIt看起来越来越像解决方案了Mike。谢谢很高兴知道不只是我一个人这很遗憾,但并非完全出乎意料。谢谢你,亚戈尔!超级相关提示。我的用例就是这样;我确认这在TeamCity 9.X中有效。子文件夹可以通过以下方式创建:+:*/*.css=>report.zip/css/