在过去的6个月中,我一直使用Azure DevOps中的管道进行发布,但是今天我收到以下错误:
2019-09-25T14:24:38.4296875Z ##[section]Starting: Azure App Service Deploy: AS-ServiciosNegocio-API-UAT
2019-09-25T14:24:38.4419797Z ==============================================================================
2019-09-25T14:24:38.4419900Z Task : Azure App Service deploy
2019-09-25T14:24:38.4419986Z Description : Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby
2019-09-25T14:24:38.4420053Z Version : 3.4.31
2019-09-25T14:24:38.4420117Z Author : Microsoft Corporation
2019-09-25T14:24:38.4420182Z Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-deployment
2019-09-25T14:24:38.4420291Z ==============================================================================
2019-09-25T14:24:39.1630446Z Got connection details for Azure App Service:'AS-ServiciosNegocio-API-UAT'
2019-09-25T14:24:39.3091141Z ##[error]Error: Failed to get resource ID for resource type 'Microsoft.Web/Sites' and resource name 'AS-ServiciosNegocio-API-UAT'. Error: Could not fetch access token for Azure. Verify if the Service Principal used is valid and not expired.
2019-09-25T14:24:39.3140156Z ##[section]Finishing: Azure App Service Deploy: AS-ServiciosNegocio-API-UAT
答案 0 :(得分:10)
如果您现有的服务连接是“使用服务主体(自动)的Azure资源管理器”类型(非手动),则有一种简单但不明显的方式来更新令牌。
按照其他答案中的说明转到Azure Devops中的服务连接的设置页。点击编辑,然后保存,而不进行任何其他更改。假设您拥有正确的权限,它将自动获得一个新令牌。
(从this forum comment中找出来。)
答案 1 :(得分:7)
尽管解决问题的方法并不完全相同(因为devops可能再次发生了很大变化),但来自Venura的答案是我问题的根本原因,并且由于此信息,我得以解决。
我必须采取的步骤:
问题解决了,确认是否已解决,我刚刚触发了一个新版本,终于通过了。
答案 2 :(得分:2)
如果您看到错误消息:“验证所使用的服务主体是否有效且未过期”
尽管我希望有更多信息,但仅基于上述情况,可能的情况是用于服务连接的密钥已过期。
访问您的Azure DevOps组织。并打开相关的项目,然后单击“项目 设置”在屏幕的左下方。
在Azure DevOps中单击服务连接上的编辑,然后单击 链接>>“要使用现有服务主体进行更新,请使用完整 服务连接对话框的版本。”
复制“服务主体客户端ID”
现在在Azure门户中,在Azure Active Directory上单击Clic,然后单击“应用程序注册”以使用“客户端ID”搜索您的应用程序
转到“证书和秘密”,然后检查您的客户端证书是否已过期。
如果证书已过期,请生成一个新证书并复制密钥。
返回到Azure DevOps“服务连接”,在Azure DevOps中单击服务连接上的编辑,然后单击链接>>“要使用现有服务主体进行更新,请使用完整版本的服务连接对话框”。
使用复制的值更新服务主体密钥,验证连接,然后单击“确定”。
这应该可以解决您的问题
答案 3 :(得分:2)
我遵循JamesD的回答,但是当我到达步骤13时,我无处可放置生成的服务原理密钥。因此,我回到第一个方框,并以另一种方式进行处理。我没有尝试重用已经过期的现有服务连接,而是创建了一个新的服务连接,然后更改了发布管道以使用该新服务连接,并且一切正常。
这是我的步骤:
现在对管道的任何其他阶段或任何其他失败的发布管道重复
答案 4 :(得分:2)