问题:在CI构建期间通过脚本从远程更新子模块
在CI构建脚本期间,我希望将子模块更新为最新版本。我知道VSTS中的构建过程负责检出子模块,但是无论在存储库中有什么子模块,它们都是在哈希引用中检出的。我想将程序更新为最新代码。
我使用的方法如下所述。
•我在构建管道中创建了一个命令行任务,并添加了如下脚本。
git -c http.https://bitbucket.org.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" submodule update --init --force --recursive --remote –merge
•我还检查了“允许脚本访问构建定义中的OAuth选项并在上面的命令中传递$(System.AccessToken)
变量”。
似乎是命令行脚本导致了该问题并显示了以下错误消息:
无法读取https://bitbucket.org的用户名:终端提示已禁用。
构建代理能够执行其他git命令,例如下拉源代码,检出子模块等。子模块可通过https访问。
•如何获得对命令行任务的授权?
•还有其他方法允许Git Sub模块提取最新提交吗?
答案 0 :(得分:0)
我无法使用Bitbucket复制它,但是我从命令行任务针对Azure DevOps Services Git Repo运行它的方式是:
git config --unset-all http.{organization}@dev.azure.com.extraheader
git -c http.https://{organization}@dev.azure.com.extraheader="AUTHORIZATION: bearer $SYSTEM_ACCESSTOKEN" submodule update --init --force --recursive --remote
将工作目录设置为$(Build.SourcesDirectory),并选中“允许脚本访问OAuth令牌”。
我的示例.gitmodules文件看起来像这样(我显然有多个子模块)
[submodule {submodule}]
path = {submodule}
url = https://{organization}@dev.azure.com/{organization}/{project}/_git/{submodule}
branch = {branch}
我不确定是否有帮助,但是可以在我的情况下使用。