【问题标题】:Combining artifacts in TeamCity在 TeamCity 中组合工件
【发布时间】:2015-04-22 15:13:09
【问题描述】:

到目前为止,我已经浏览了很多这样的讨论,但都没有成功。

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

【问题讨论】:

  • 我想要类似的东西,除了使用构建脚本生成具有我想要的结构的目录之外找不到好的解决方案。祝你好运
  • 看起来越来越像解决方案了,迈克。谢谢。很高兴知道这不仅仅是我。 ;)

标签: teamcity


【解决方案1】:

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

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

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

【讨论】:

  • 超级相关的提示。我的用例就是这样;我确认这在 TeamCity 9.X 中有效。
  • 子文件夹可以这样创建:+:*/*.css => report.zip!/css/
【解决方案2】:

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

##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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这很遗憾,但并非完全出乎意料。谢谢,耶戈尔!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多