Azure devops Azure Devops管道-默认情况下不会更新子模块
在Azure devops管道中,默认情况下不会更新子模块 重现问题 源代码Azure devops Azure Devops管道-默认情况下不会更新子模块,azure-devops,azure-devops-self-hosted-agent,Azure Devops,Azure Devops Self Hosted Agent,在Azure devops管道中,默认情况下不会更新子模块 重现问题 源代码 https://github.com/forvaidya/submodule.git https://github.com/forvaidya/supermodule.git 更新不会发生,除非我有以下步骤在管道中。我希望默认情况下会发生这种情况,或者使用一些全局变量来启用/禁用它,默认值应该是true(刷新子模块) 在私有Git存储库中,上述步骤将不起作用,并且将出现HTTP错误 您可以尝试为管道选中选项签出子模块
https://github.com/forvaidya/submodule.git
https://github.com/forvaidya/supermodule.git
更新不会发生,除非我有以下步骤在管道中。我希望默认情况下会发生这种情况,或者使用一些全局变量来启用/禁用它,默认值应该是true(刷新子模块)
在私有Git存储库中,上述步骤将不起作用,并且将出现HTTP错误
您可以尝试为管道选中选项
签出子模块。请参阅以下步骤:
单击yaml管道编辑页面上的3dots-->触发器
转到Yaml选项卡-->获取源-->检查签出子模块
- script: |
git submodule deinit --all
git submodule init
git submodule update --remote
displayName: 'Refresh Submodule'
然后,当您运行管道时,Azure devops管道将自动更新子模块
如果由于子模块repo是私有的或在不同的组织中,并且无法从azure devop管道访问,上述步骤无法更新子模块。您可以尝试如下配置子模块凭据
1,设置管道秘密变量以保存子模块repo的凭据(例如PAT)
2,然后在脚本任务中的git命令上方添加git config submodule.SubmoduleRepo.url
,以更新子模块
- script: |
git submodule deinit --all
git submodule init
git config submodule.TestRepo.url https://$(PAT)@dev.azure.com/TestOrganization/TestProject/_git/TestRepo
git submodule update --remote
enabled: true
有关更多信息,请参阅
- checkout: self
submodules: true
更新:
您还可以在yaml中启用签出子模块,有关更多信息,请参阅
- checkout: self
submodules: true
您的子模块跟踪的是分支还是提交()?您可以共享您的.gitmodules文件吗?它在github中。在实际测试中,它保存在azure devops中[submodule“submodule”]path=submodule url=Yes它正在工作:)我已经在azure代理和托管在笔记本电脑上的代理上对它进行了测试。现在我将在生产环境中测试它。这个签出子模块可以在yml文件中转换,或者隐藏在服务器内部。它也可以在yaml中配置。使用-checkout
设置子模块:true
。按照您的建议设置submoules标志后,请查看我的管道是否正常工作。然而,我并没有在yml文件中进行相应的更改。有没有办法告诉您,UI页面上的yml文件设置签出子模块选项不能反映在yaml文件上。如果要在yaml文件中启用签出子模块。您应该在管道中添加-checkout
步骤,请参阅上面的更新。您好@forvaidya您是否签出了上面的更新,您能接受上面的答案吗?因为它起作用了。