【问题标题】:Team city artifact dependency get last build artifact not latestTeamcity 工件依赖获取最新的构建工件不是最新的
【发布时间】:2017-04-28 09:02:23
【问题描述】:

我们正在使用 Teamcity 来构建和部署我们的 Web 应用程序。我们使用 MSBuild 构建应用程序并使用 MSDeploy 进行部署。我们想使用两种不同的构建配置,一种用于构建,另一种用于部署。

现在我们遇到的问题是在 teamcity 中,当我们使用 Artifact Dependency 时,如何部署在构建配置中最后构建的构建包,而不是最后一个最新的变更集构建。如果在较晚的变更集之后部署较旧的变更集构建,则 teamcity 似乎不会在工件依赖项上采用较旧的变更集。

提前感谢您的帮助。

萨拉特

【问题讨论】:

    标签: dependencies teamcity artifact


    【解决方案1】:

    Artefact Dependency 的默认值为Build from same chain

    您可以将 Build 配置的 Artefact Dependency 设置为 Use last successful build

    【讨论】:

    • 在 Teamcity 9.5 中没有任何最后一次成功的构建选项。文档中指定的最后一个成功构建是针对最后一个最新的变更集成功构建。如果我在此之后对一个或两个较旧的变更集执行构建,teamcity 总是会忽略它。
    【解决方案2】:

    如果是“历史”版本,则 UI 选项不提供下载最后一个版本的方法。您可以使用REST API 下载构建脚本中的文件,因为这样可以灵活选择构建。例如request .../app/rest/builds/buildType(id:)/artifacts/content/ 应该从上次构建中获取文件,即使它是历史文件。

    但是,当您想要部署构建时,依赖构建顺序似乎是一种过于脆弱的方法。这样,如果在部署构建在队列中时触发并完成,您可能会意外部署错误的构建。

    为确保将部署特定的构建,请在待部署的构建上调用 Actions/Promote 来运行部署构建:这样实际的工件依赖条件将被强制到特定的构建。任何你可以部署任何构建,包括不是最新的。

    还可以考虑使用 TeamCity recommended approach 并配置构建之间的 Snapshot 依赖项,以便在构建的 Dependencies 选项卡和 Build Chains 项目/构建配置选项卡上获得可视化。

    【讨论】:

    • 谢谢 Yaegor,很抱歉没有早点回来。作为临时设置,我们对登台和实时环境使用通用结帐。您的解决方案似乎很有希望,我现在无法尝试。当我有时间时,我会尝试你的方法。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多