【问题标题】:How to manage multiple repositories in a build inside TeamCity?如何在 TeamCity 内部的构建中管理多个存储库?
【发布时间】:2019-07-31 17:59:50
【问题描述】:

我被分配在我公司的一个项目中实施 CI/CD 流程(使用 TeamCity)。

重点是项目分布在不同的存储库中(一个用于框架,一个用于基础应用程序,两个用于项目特定问题)

如果我现在要组装这个项目,我应该首先克隆框架,然后克隆其他存储库并手动将它们移动到正确的文件夹中。

“最终形式”的项目具有类似于以下的文件夹结构:

BigProject/
├── Framework (Repository)/
│   ├── bin/
│   ├── obj/
│   ├── Application/
│        ├── BaseApplication (Repository)/
│            ├── Foo/
│            ├── Bar/
│            ├── Project-Specific-1 (Respository)/
│            ├── Project-Specific-2 (Respository)/

在 TeamCity 中,我为四个存储库设置了所有 VCS Roots,并编辑了 Checkout Rules 以使其正常运行。

例如,我将 BaseApplication 的 Checkout Rule 设置为如下所示:

+:.=>./Framework/Application/

据我了解,此命令应将 BaseApplication 存储库的所有内容复制到目录 ./Framework/Application/ 。

问题是当我运行构建时出现以下错误:

stderr: The 'https: //me@myvcs.com/xx/xx/BaseApplication.git' repository has a submodule in the 'xx' commit to the 'Project-Specific-1' path, but has not .gitmodules configuration in the root directory
exit code: 1

我不明白为什么会发生此错误。我在设置结帐规则时出错了吗? TeamCity 是否在进行必要的检查之前尝试构建项目?有人对我如何完成这项工作有任何建议吗?

注意,我不能为这个项目配置 .gitmodules,因为我认为 .gitmodules 应该在框架存储库中,并且该框架在其他项目中使用。

提前致谢!

【问题讨论】:

    标签: git continuous-integration teamcity devops continuous-delivery


    【解决方案1】:

    您正在尝试签出另一个存储库结构中的存储库。 Git 本身在抱怨这一点,而不是 TeamCity。您可以更改一般目录结构,使应用程序不再位于框架内。

    BigProject/
    ├── Framework (Repository)/
    │   ├── bin/
    │   ├── obj/
    ├── BaseApplication (Repository)/
    │   ├── Foo/
    │   ├── Bar/
    ├── Project-Specific-1 (Respository)/
    ├── Project-Specific-2 (Respository)/
    

    【讨论】:

    • 您也可以提供.gitmodules (reference)。但是我得到了您建议的路线并将其并排分成多个存储库。
    猜你喜欢
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多