首页 文章

在TeamCity中组合工件

提问于
浏览
6

到目前为止,我已经查看了相当多的这些讨论,但没有成功 .

我们的构建过程(在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

为了实现这一点,我在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无法嵌套档案的限制吗?

3 回答

  • 2

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

  • 7

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

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

    但不确定,如果可以动态创建子文件夹/子档案...

  • 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
    

相关问题