培养人们
我正在将构建管道输出推送到Azure Artefacts-完整堆栈.net应用程序的通用包。该应用程序成功构建并在$(Build.ArtifactStagingDirectory)
想要将所有这些构建输出发布到UniversalPackages,并让发布管道从那里接管它。
我检查了以下事情:
1。。权限-项目集合生成服务-贡献者角色。
2。。任务配置已在“ UniversalPackages”下方确认
- task: UniversalPackages@0
inputs:
command: 'publish'
publishDirectory: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
feedsToUsePublish: 'internal'
vstsFeedPublish: '123456fg-test-1234-1234-31161a66dc4d/b92b3313-ab41-4044-test-e94146618efb'
vstsFeedPackagePublish: 'Text here-Services-Package'
versionOption: 'minor'
packagePublishDescription: 'Contains some text here)'
verbosity: 'Trace'
很抱歉出现YAML缩进问题,
下面是管道日志
2020-04-04T02:36:03.9835393Z Publishing package: test, version: 0.0.1 using feed id: 76a3991f-e6fc-767b-a0dc-90e38c54e558, project: 7813b7e3-bbf1-4355-9263-31161a66dc4d
2020-04-04T02:36:04.0147395Z [command]D:\ABCAgent\_work\_tool\artifacttool\0.2.151\x64\ArtifactTool.exe universal publish --feed 76a3991f-e6fc-767b-a0dc-90e38c54e558 --service https://dev.azure.com/QWERTY/ --package-name test --package-version 0.0.1 --path D:\AzureAgentBuild\_work\1\a --patvar UNIVERSAL_PUBLISH_PAT --verbosity None --description "" --project 7813b7e3-bbf1-4355-9263-31161a66dc4d
2020-04-04T02:36:09.2875733Z {"@t":"2020-04-04T02:36:08.7883701Z","@m":"[GetDedupManifestArtifactClientAsync] Try 1/5, non-retryable exception caught. Throwing. Details:\r\nNo LastRequestResponse on exception VssServiceResponseException: Forbidden","@i":"b2d31574","@l":"Warning","@x":"Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Forbidden\r\n
答案 0 :(得分:1)
Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: 禁止
此许可权错误可以转换为403错误代码,这意味着该帐户没有足够的操作许可权才能将程序包发布到通用程序包。
您说您已经分配了具有“贡献者”角色的“项目集合构建服务”。但是,这并非适用于所有情况。它仅在构建管道使用“项目集合构建服务”帐户(集合级别服务帐户)时可用。还有另一种情况,管道可能会使用项目级服务帐户。
您可以使用我在此answer中共享的方法。选中this,以获得其他类似的问题和解释。
方法1 :
请转到Feed settings
=> Permissions
,添加您的项目级别的构建服务帐户并为其分配角色Contributor
。其帐户名应为{Project Name} Build Service ({Org Name})
。
重新运行管道以查看其是否可以成功运行。
方法2 :
转到项目设置=>设置,并确保已禁用Limit job authorization scope to current project
:
仅禁用,管道使用的服务帐户是集合级别的一个。目前,您的原始权限配置现在可用。
答案 1 :(得分:0)
在获得管道构建服务许可后,发现根本原因是代理阻止了通用包,并出现了禁止的错误。
我们刚刚从本地自托管生成代理中删除了代理,并使用Azure Express Route路由通信。这个简单的更改解决了这个问题。