从Azure发布管道进行Git推送

时间:2019-04-30 15:18:12

标签: git azure-devops

在自托管构建服务器的Azure Devops发布管道中,我想通过powershell脚本进行git push。

它可以在构建管道中工作,但是从发布管道中我会遇到认证错误。 “允许脚本访问OAuth令牌”已激活,并且构建机器具有贡献权限(如我所说,它可以在构建管道中使用)。

这是我在devops protal中看到的错误:

git : remote: 001f# service=git-receive-pack
At C:\Builds\A1\_work\r1\a\Source\Scripts\CreateTagFromPipeline.ps1:11 char:1
+ git push
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (remote: 001f# service=git-receive-pack:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

PowerShell exited with code '1'.

如果我通过远程桌面登录到计算机并手动推动,则会遇到一些更好的错误:

$ git push
remote: 001f# service=git-receive-pack
remote: 0000000000aaTF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\58bb64d7-d065-4522-94e2-a153b9fdadd6', scope 'repository'.
remote: TF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\58bb64d7-d065-4522-94e2-a153b9fdadd6', scope 'repository'
fatal: unable to access 'https://our-correct-repo-address-on-dev.azure.com': The requested URL returned error: 403

同样,它在构建管道中有效,但在发布管道中无效。

2 个答案:

答案 0 :(得分:1)

Azure DevOps Pipelines中可能涉及不同的帐户。在组织级别上,您具有“ Project Collection Build Service(YourOrg)”,在项目级别上,您具有“ YourProject Build Service(YourOrg)”。

其中哪些用于构建取决于管道选项“构建作业授权范围”是设置为“项目集合”还是“当前项目”。当前似乎没有用于发布管道的相应选项,该选项默认为Project Collection Build Service。

我猜想“ Build \ 58bb64d7-d065-4522-94e2-a153b9fdadd6”是您的项目集合构建服务,但是您只授予了对项目构建服务的贡献权限,并且正在构建管道上使用范围“当前项目”

答案 1 :(得分:0)

构建管道是否也在自托管的构建服务器上运行?

  

转到构建管道->变量->检查system.collectionId。

是58bb64d7-d065-4522-94e2-a153b9fdadd6吗?

如果这不是您的构建管道中的集合ID,则表示您的发行管道中的身份58bb64d7-d065-4522-94e2-a153b9fdadd6没有创建分支的权限。