首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VSTS构建: Git子模块自动化

VSTS构建: Git子模块自动化
EN

Stack Overflow用户
提问于 2017-08-22 22:33:07
回答 4查看 2.7K关注 0票数 4

我们从TFS切换到GIT。每次启动新的构建时,我们都会尝试更新子模块。

我们遵循这个指南:https://www.visualstudio.com/en-us/docs/build/scripts/git-commands#enable

我们在49行有一个错误。

我们认为实际上我们需要进行身份验证。但我们不确定。我们使用: git pull,它可以工作,但是当我们这样做的时候:git子模块foreach git pull foreach master。我们收到消息“进入”,但什么也没发生。

是不是有人已经有这个问题了?你是怎么解决这个问题的?

EN

回答 4

Stack Overflow用户

发布于 2018-05-15 03:51:21

这是一个身份验证问题。您需要将OAuth令牌放入每个子模块存储库。

确保已启用build definition设置,以允许脚本访问OAuth令牌。正如文档所述,这会将令牌填充到一个名为System.AccessToken的变量中。它还将令牌填充到一个git配置设置中,当您在启用该设置后运行该设置时,您将在get source步骤结束时看到该设置。这就是git向VSTS进行身份验证的方式。您需要为每个代码库构建一个config语句,并且需要cd进入该子模块才能在该代码库中发出它。

下面是我使用的Powershell脚本:

代码语言:javascript
复制
$mods = (git submodule status) | % { ($_.Trim() -split " ")[1] }
$baserepo = ($env:BUILD_REPOSITORY_URI).TrimEnd($env:BUILD_REPOSITORY_NAME)
foreach($mod in $mods)
{
cd $mod
$cmd = 'git config http.' + $baserepo + $mod + '.extraheader "AUTHORIZATION: bearer ' + $env:System_AccessToken + '"'
write $cmd
iex $cmd
cd ..
}

然后运行cmd或powershell步骤:

代码语言:javascript
复制
git submodule update --remote

最后,您应该在使用完令牌之后清理它,这样OAuth就不会挂在构建代理上的.git/config文件中:

代码语言:javascript
复制
$mods = (git submodule status) | % { ($_.Trim() -split " ")[1] }
$baserepo = ($env:BUILD_REPOSITORY_URI).TrimEnd($env:BUILD_REPOSITORY_NAME)
foreach($mod in $mods)
{
cd $mod
$cmd = 'git config --unset-all http.'+ $baserepo + $mod + '.extraheader'
write $cmd
iex $cmd
cd ..
}
票数 2
EN

Stack Overflow用户

发布于 2017-08-23 17:49:10

这似乎是由于VSTS构建使用git命令对子模块进行处理的方式造成的。

我发布了VSTS build hang up when execute git commands related to git submoudle,你可以跟进这个问题。

顺便说一句,对于OAuth,您可以在.gitmodules中添加凭证。

票数 1
EN

Stack Overflow用户

发布于 2018-07-29 22:46:42

我刚刚在谷歌上找到了这个问答:你可以使用相对路径,例如:

代码语言:javascript
复制
origin  ssh://USERNAME@vs-ssh.visualstudio.com:22/PROJECT/_ssh/REPO (fetch)

.gitmodules可以包含:

代码语言:javascript
复制
[submodule "SUBMODULE"]
    path = SUBMODULE
    url = ../SUBMODULE

Source

祝您有愉快的一天:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45820526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档