VSO Build与子模块失败

时间:2017-05-17 14:24:06

标签: git tfs

我们正在使用TFS 2015并在尝试构建存储库时收到错误。我们有两个TeamProject,A是我们要构建的主存储库,B是A中引用的子模块。

构建失败,并显示以下消息:

2017-05-17T14:16:37.9148422Z Checked out branch refs/heads/develop for repository A at commit 8bece3e87781f4064c61ff8ce750f6dbd17bca02
2017-05-17T14:16:39.2898443Z ##[error]LibGit2Sharp.LibGit2SharpException: Response status code does not indicate success: 404 (Not Found).
2017-05-17T14:16:39.2898443Z ##[error]   bei LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
2017-05-17T14:16:39.2898443Z ##[error]   bei LibGit2Sharp.Core.Proxy.git_submodule_update(SubmoduleHandle submodule, Boolean init, GitSubmoduleOptions& options)
2017-05-17T14:16:39.2898443Z ##[error]   bei LibGit2Sharp.SubmoduleCollection.Update(String name, SubmoduleUpdateOptions options)
2017-05-17T14:16:39.2898443Z ##[error]   bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.DoUpdateSubmodules(Repository repository, Int32 maxRecursionDepth, Int32 currentRecursionDepth, String username, String password, CancellationToken cancellationToken)
2017-05-17T14:16:39.2898443Z ##[error]   bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.UpdateSubmodules(ITaskEndpoint endpoint, Repository repository, Int32 maxRecursionDepth, CancellationToken cancellationToken)
2017-05-17T14:16:39.2898443Z ##[error]   bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.SyncAndCheckout(Boolean cleanRepository, String sourceBranch, String sourceVersion, Boolean checkoutSubmodules, CancellationToken cancellationToken)
2017-05-17T14:16:39.2898443Z ##[error]   bei Microsoft.TeamFoundation.DistributedTask.Plugin.Build.GitSourceProvider.<>c__DisplayClass3_0.<PrepareRepositoryAsync>b__0()

执行构建的用户有权读取所有需要的存储库,还有什么可能是问题?

.gitmodules of A

[submodule "custom/plugins/B"]
    path = custom/plugins/B
    url = https://tfs/Root/Project/_git/B

触发构建时的日志。

******************************************************************************
Wird gestartet: Quellen abrufen
******************************************************************************
Syncing repository: shopware (Git)
Klonen wird gestartet
ee22f3ff7951b579e57b8d9b65f14d6c382ca25a bis C:\Webteam-Agent\_work\9\s mit Submodulen ausgecheckt
revparsing ee22f3ff7951b579e57b8d9b65f14d6c382ca25a
grabbed ref , obj ee22f3ff7951b579e57b8d9b65f14d6c382ca25a
dereferenced to commit ee22f3ff7951b579e57b8d9b65f14d6c382ca25a
Checked out branch refs/heads/develop for repository shopware at commit ee22f3ff7951b579e57b8d9b65f14d6c382ca25a
LibGit2Sharp.LibGit2SharpException: Response status code does not indicate success: 404 (Not Found).
bei LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
bei LibGit2Sharp.Core.Proxy.git_submodule_update(SubmoduleHandle submodule, Boolean init, GitSubmoduleOptions& options)
bei LibGit2Sharp.SubmoduleCollection.Update(String name, SubmoduleUpdateOptions options)
bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.DoUpdateSubmodules(Repository repository, Int32 maxRecursionDepth, Int32 currentRecursionDepth, String username, String password, CancellationToken cancellationToken)
bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.UpdateSubmodules(ITaskEndpoint endpoint, Repository repository, Int32 maxRecursionDepth, CancellationToken cancellationToken)
bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.SyncAndCheckout(Boolean cleanRepository, String sourceBranch, String sourceVersion, Boolean checkoutSubmodules, CancellationToken cancellationToken)
bei Microsoft.TeamFoundation.DistributedTask.Plugin.Build.GitSourceProvider.<>c__DisplayClass3_0.<PrepareRepositoryAsync>b__0()
Microsoft.TeamFoundation.DistributedTask.Agent.Common.AgentExecutionTerminationException: Fehler beim Vorbereiten des Repositorys mit einer Ausnahme. ---> LibGit2Sharp.LibGit2SharpException: Response status code does not indicate success: 404 (Not Found).
bei LibGit2Sharp.Core.Ensure.HandleError(Int32 result)
bei LibGit2Sharp.Core.Proxy.git_submodule_update(SubmoduleHandle submodule, Boolean init, GitSubmoduleOptions& options)
bei LibGit2Sharp.SubmoduleCollection.Update(String name, SubmoduleUpdateOptions options)
bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.DoUpdateSubmodules(Repository repository, Int32 maxRecursionDepth, Int32 currentRecursionDepth, String username, String password, CancellationToken cancellationToken)
bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.UpdateSubmodules(ITaskEndpoint endpoint, Repository repository, Int32 maxRecursionDepth, CancellationToken cancellationToken)
bei Microsoft.TeamFoundation.DistributedTask.Task.Internal.Core.GitHelper.SyncAndCheckout(Boolean cleanRepository, String sourceBranch, String sourceVersion, Boolean checkoutSubmodules, CancellationToken cancellationToken)
bei Microsoft.TeamFoundation.DistributedTask.Plugin.Build.GitSourceProvider.<>c__DisplayClass3_0.<PrepareRepositoryAsync>b__0()
--- Ende der internen Ausnahmestapelüberwachung ---
bei Microsoft.TeamFoundation.DistributedTask.Plugin.Build.GitSourceProvider.<>c__DisplayClass3_0.<PrepareRepositoryAsync>b__0()
bei System.Threading.Tasks.Task.Execute()
Der Worker Worker-b7f0b104-abc3-4af8-a305-6a3e93d9a72e hat die Ausführung des Auftrags b7f0b104-abc3-4af8-a305-6a3e93d9a72e abgeschlossen.
******************************************************************************
Build wird abgeschlossen
******************************************************************************

3 个答案:

答案 0 :(得分:0)

请尝试添加“项目集合构建服务帐户”并提供此Git存储库的读取和其他权限。

有关详细信息,请参阅此主题:TFS Build Fail when running for TFS-GIT Repository

还要确保在构建代理上安装Visual Studio 2013及更高版本。

<强>更新

我已经重现了您的问题,这个问题是由Url不正确引起的。 请从TFS网站登录TFS,找到团队项目A中的.gitmodules。然后检查Url(url = https://tfs/Root/Project/_git/B)是否正确。确保它可以在构建服务器中连接。

然后在构建定义中,将Clean repository设置为 True 并再次构建。

答案 1 :(得分:0)

我无法找到针对此特定问题的解决方案,因此我升级到最新版本的VSTS代理,并且随之工作。

答案 2 :(得分:0)

我建议在构建目录中安装git bash并运行git submodule update。您将从git bash获得比VSO更多的可搜索错误。

在git bash中尝试的另一件事是转到子模块目录并运行git remote -v它应该显示它使用的URL。如果它与主仓库中的.gitmodules不同步,请运行git submodule sync进行更新。

一旦你弄清楚如何使用git修复它,你可能会更好地将微软的东西用于工作。然后向他们提交错误报告。