【问题标题】:How to setup submodules Azure DevOps如何设置子模块 Azure DevOps
【发布时间】:2019-05-06 02:46:52
【问题描述】:

有人能解释一下 SubModule 在 azure devops 中的工作原理吗

MyDevOps 根文件夹

我有一个名为 MyCore.sln 的解决方案,其中包含 4-5 个项目

我有一个名为 MyMain.sln 的主解决方案,其中包含引用 MyCore.sln 项目的另外 4-5 个项目项目

  • 这一切都在本地编译和工作,但在 azure devops 中构建时失败

  • 进入powershell中的MyMain.sln文件夹,如下执行

  • 执行如下 git submodule add https://myGroup@dev.azure.com/MyGroup/MyProjec/_git/MyCore

  • 我现在可以在我的 Main Repo 中看到一个名为 MyCore 的文件夹,其中包含项目,我开始引用它们
  • 我可以看到 .gitmodules 文件

    但是,当我去构建管道时,它找不到引用的项目(属于 myCore 存储库)

我错过了显而易见的事情吗?

是否有关于如何在 azure devops 中设置子模块的全面说明?

我可以在任何地方想象这个吗?

【问题讨论】:

  • 这取决于它们是什么类型的子模块,就像在您自己的机器上一样,任何用户凭据都可以轻而易举地获得,而在 Azure DevOps 上,一切都需要明确配置(一个示例blog.lextudio.com/… )。

标签: git azure-devops git-submodules azure-pipelines azure-repos


【解决方案1】:

在 Get Sources 步骤的高级部分,您需要启用 Checkout Submodules 选项。

如果您使用的是 YAML 构建,则需要添加:

steps:
- checkout: self
  submodules: true

关于您的后续问题:

我应该把我的解决方案文件放在哪里

理想情况下,您应该有一个解决方案,因为您希望这些项目能够一起构建。有多种解决方案会很尴尬。如果您想共享一个解决方案中的组件,最好将第二个 repo 中的项目发布为 NuGet 包。

【讨论】:

  • 您好,感谢您的快速回复。忘了提,但我做到了,但我的管道仍然失败。
  • 感谢您的回复。我会尝试放一些日志(工作内容不确定)。日志说找不到引用的项目,这导致我提出一个问题。引用子模块的存储库是否应该包含两个存储库中的实际物理项目?还是应该只包含指向子模块 repo 的链接?
  • 取决于解决方案文件。这就是告诉项目系统哪个项目存储在哪里。
  • 每个.*proj文件和*.sln文件都应该存储在一个仓库中,并且只能存储在一个仓库中。
  • 只是为了澄清我有 2 个 repos“MyCore Repo”和“MyMain Repo”(虚构名称)为了清楚起见而简化。我想将“MyCore Repo”作为子模块添加到我的主仓库,这样每个仓库都有自己的解决方案。对你最后的评论有点困惑。对不起 。感谢您有时间解释。
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2020-06-14
  • 1970-01-01
  • 2020-09-15
相关资源
最近更新 更多