如何设置子模块 Azure DevOps
Posted
技术标签:
【中文标题】如何设置子模块 Azure DevOps【英文标题】:How to setup submodules 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/… )。 【参考方案1】:在 Get Sources 步骤的高级部分,您需要启用 Checkout Submodules 选项。
如果您使用的是 YAML 构建,则需要添加:
steps:
- checkout: self
submodules: true
关于您的后续问题:
我应该把我的解决方案文件放在哪里
理想情况下,您应该有一个解决方案,因为您希望这些项目能够一起构建。有多种解决方案会很尴尬。如果您想共享一个解决方案中的组件,最好将第二个 repo 中的项目发布为 NuGet 包。
【讨论】:
您好,感谢您的快速回复。忘了提,但我做到了,但我的管道仍然失败。 感谢您的回复。我会尝试放一些日志(工作内容不确定)。日志说找不到引用的项目,这导致我提出一个问题。引用子模块的存储库是否应该包含两个存储库中的实际物理项目?还是应该只包含指向子模块 repo 的链接? 取决于解决方案文件。这就是告诉项目系统哪个项目存储在哪里。 每个.*proj
文件和*.sln
文件都应该存储在一个仓库中,并且只能存储在一个仓库中。
只是为了澄清我有 2 个 repos“MyCore Repo”和“MyMain Repo”(虚构名称)为了清楚起见而简化。我想将“MyCore Repo”作为子模块添加到我的主仓库,这样每个仓库都有自己的解决方案。对你最后的评论有点困惑。对不起 。感谢您有时间解释。以上是关于如何设置子模块 Azure DevOps的主要内容,如果未能解决你的问题,请参考以下文章
simulink子模块封装如何初始化,为啥输入的数据不能传回到模块中?
azure devops vsts 扩展动态上下文菜单,子菜单未正确加载
在 Azure Devops 上运行 SQ 不会扫描所有文件/子文件夹/项目,尤其是 c# 文件
[getPersonalAccessTokenHandler在ES2015模块中使用azure-devops-node-api时不是函数