【问题标题】:TeamCity switch between different VCS Roots (SVN and GIT) dynamicallyTeamCity 在不同的 VCS 根(SVN 和 GIT)之间动态切换
【发布时间】:2021-10-29 11:48:04
【问题描述】:

我有一个存储在 svn 中的项目,假设镜像在 git 中。

长话短说:svn连接不好,所以我们不在svn中分支,通过“git svn”使用git来同步存储库并在git中创建功能分支。

之前我们在 TeamCity 中有两个构建项目来处理这个问题,但现在我添加了一些依赖于构建工件的部署项目,所以我不想复制它们。

在 TeamCity 中,在构建过程中,我想提示使用哪个 VCS Root。 所以,我添加了两个 VCS Roots,设置连接,设置签出规则并将“VCS 签出模式”设置为“不自动签出文件”。

据我所知,我需要创建一个构建步骤来手动从所选存储库中签出文件。

TeamCity 中有什么东西可以让我重用我已经设置的 VCS Roots(和结帐规则)吗? 我的意思是有任何命令可以通过提供“VCS root ID”来结帐,还是我应该完全自己重新定义所有结帐规则?

【问题讨论】:

    标签: teamcity


    【解决方案1】:

    其中一种方法是使用conditional build steps

    设置两个不同的构建步骤,从每个存储库执行手动签出并根据参数值执行它们。然后,您可以将参数配置为具有“选择”type。或者,您可以将其“显示”值设置为“提示”,以便 TeamCity 始终要求您选择预定义值之一。

    请注意,checkout rules 不会直接影响手动结帐。它们仅在使用 auto-checkout mode 时应用。不过,它们仍会影响附加到 UI 中构建的修订。

    另一种方法是通过在主构建配置前面添加另一个构建配置来设置简单的build chain。链中的第一个构建将执行REST API 调用,该调用将附加到第二个配置的updates the checkout rules on both VCS roots。您可以将 -:. 规则设置为您不想被检出的 VCS 根。为了使事情更简单,您可以将检出规则存储在参数中,并将这些参数分配给 VCS 根的检出规则。这种方法的好处是您将能够在主构建配置中使用自动签出。同样,您可以利用此处的条件构建步骤来定义应执行的 REST API 调用。

    【讨论】:

    • 我是否理解 REST API 允许分别为每个 VCS 根设置结帐模式?因为在 UI 中只有一个结帐模式字段看起来适用于所有附加的 VCS 根。
    • @mt_serg,我的回答有点不准确。我的意思是您可以通过 REST API 调用而不是结帐模式来更新每个 VCS Root 的 结帐规则This article 应该可以帮助您。签出模式确实是只存在于构建配置级别的设置。每个 VCS Root 都有自己的 checkout policy 设置,但这是另一回事。很抱歉让您感到困惑。我会尽快更新答案。
    • 感谢您的全面回答,现在很清楚了。
    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多