Azure Devops 管道 - 默认情况下不更新子模块
Azure Devops pipelines - submodules not get updated by default
在 Azure devops 管道中,默认情况下不会更新子模块。
重现问题。
源代码
https://github.com/forvaidya/submodule.git
https://github.com/forvaidya/supermodule.git
更新不会发生,除非我在管道中有以下步骤。我希望默认情况下会发生这种情况,或者某些全局变量会启用/禁用它,默认情况下应该是 true (Refresh submodules)
- script: |
git submodule deinit --all
git submodule init
git submodule update --remote
displayName: 'Refresh Submodule'
在私有 Git 存储库中,上述步骤将不起作用,并且会出现 HTTP 错误
您可以尝试检查管道的选项 Checkout submodules
。请参阅以下步骤:
在您的 yaml 管道编辑页面上单击 3dots --> Triggers。
转到 Yaml 选项卡-->获取源代码--> 检查签出子模块
然后当您 运行 您的管道时,Azure devops 管道将自动更新子模块。
如果由于子模块回购是私有的或在不同的组织中并且无法从您的 azure devop 管道访问的原因,上述步骤无法更新子模块。您可以尝试像下面这样配置子模块凭据。
1,设置一个管道秘密变量来保存子模块回购的凭证(eg.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
有关详细信息,请参阅 this thread。
更新:
您还可以在 yaml 中启用 checkout 子模块,请参阅 here 了解更多信息。
- checkout: self
submodules: true
在 Azure devops 管道中,默认情况下不会更新子模块。
重现问题。
源代码
https://github.com/forvaidya/submodule.git
https://github.com/forvaidya/supermodule.git
更新不会发生,除非我在管道中有以下步骤。我希望默认情况下会发生这种情况,或者某些全局变量会启用/禁用它,默认情况下应该是 true (Refresh submodules)
- script: |
git submodule deinit --all
git submodule init
git submodule update --remote
displayName: 'Refresh Submodule'
在私有 Git 存储库中,上述步骤将不起作用,并且会出现 HTTP 错误
您可以尝试检查管道的选项 Checkout submodules
。请参阅以下步骤:
在您的 yaml 管道编辑页面上单击 3dots --> Triggers。
转到 Yaml 选项卡-->获取源代码--> 检查签出子模块
然后当您 运行 您的管道时,Azure devops 管道将自动更新子模块。
如果由于子模块回购是私有的或在不同的组织中并且无法从您的 azure devop 管道访问的原因,上述步骤无法更新子模块。您可以尝试像下面这样配置子模块凭据。
1,设置一个管道秘密变量来保存子模块回购的凭证(eg.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
有关详细信息,请参阅 this thread。
更新:
您还可以在 yaml 中启用 checkout 子模块,请参阅 here 了解更多信息。
- checkout: self
submodules: true