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错误 您可以尝试为管道选中选项签出子模块

在Azure devops管道中,默认情况下不会更新子模块

重现问题

源代码

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您是否签出了上面的更新,您能接受上面的答案吗?因为它起作用了。