为什么我在从 TFS 发布到 Azure 时得到 CouldnotfetchaccesstokenforAzureStatusCode
Why am I getting CouldnotfetchacccesstokenforAzureStatusCode when releasing to Azure from TFS
我想知道在从 TFS (visualstudio.com) 部署(发布工作流)到 Azure 时,我是否是唯一一个获得此 CouldnotfetchaccesstokenforAzureStatusCode 的人。甚至 google 也没有线索。
发布工作流配置文件是在 Azure 中设置的,所以我猜订阅和服务名称没问题。毕竟它设法转移了工件。它在停止工作之前已经工作了一个星期。它由 git 推送后成功的托管构建触发。无需手动工作。
##[section]Finishing: Download Artifacts
##[section]Starting: Deploy Azure App Service
==============================================================================
Task : Azure App Service Deploy
Description : Update Azure App Service using Web Deploy / Kudu REST APIs
Version : 2.1.10
Author : Microsoft Corporation
Help : [More Information](https://aka.ms/azurermwebdeployreadme)
==============================================================================
d19c95a6-ebscrabbeldabbeld9c3eb0cfeb exists true
##[warning]Can\'t find loc string for key: CouldnotfetchacccesstokenforAzureStatusCode
##[error]CouldnotfetchacccesstokenforAzureStatusCode 400 Bad Request
##[section]Finishing: Deploy Azure App Service
##[section]Finishing: Release
我检查了 "Publish using Web Deploy" 和 "Take App Offline" 以及控制选项 "Enabled"。 App Service 是第 2 版。有什么想法吗?
编辑:尝试了第 3 版(预览版),我得到了一个不同的(但可能是相同的)错误:
##[error]Could not fetch acccess token for Azure. Status Code: 400 (Bad Request)
我重新创建了 juunas 提到的服务连接,并且成功了。您将在 TFS 的 "Services" 下找到它。那么它背后的魔力是什么:
- 它将服务连接绑定到您的 Azure AD(租户 ID)
- 它在 azure AD 中创建一个应用程序并在
发布过程
- 它将服务连接绑定到您的订阅 ID
- 它创建一个可以持续 1 或 2 天的主密钥(如密码)
年。我原来的服务中正是缺少这个价值。你
可以创建自己的主体密钥或让 TFS 自动创建一个
你.
感谢 Juunas 的提示!
此错误的另一个可能原因 -
我发现使用新的 "Build Editor"(仍在预览中)会出现此问题。
TL;DR 解决方案是在解决下面描述的错误之前,不要对订阅相关参数使用 "process linked parameters" 功能。
在这种情况下,如果使用 "process linked parameters" 功能并且在 "process" 级别指定要使用的订阅,则会发生以下情况:
- 代理将导出进程级别的环境变量
ENDPOINT_AUTH_*
,指向服务端点的错误 "id"。不清楚为什么会发生这种情况 - 我倾向于将 VSTS 的初始作业消息归咎于代理代码 here 之后。
- 任务运行器会导出那些错误命名的变量供任务使用(在保险库中)- 相关代码部分是 here
- 特定的 Azure 部署任务会查找具有正确 ID 的环境变量,但会得到空结果,因为它们从未被导出。
- 身份验证将因此失败。
在构建排队期间将 "debug" 标志设置为 'true' 将在跟踪中显示上述内容。
刚刚通过取消链接部署步骤中的所有链接项目解决了这个问题。所以 'Azure Subscription' 和 'App Service name',即使它们看起来设置正确...这对我有用。
我不必重新创建服务连接。我只需要更新它就可以再次发布。
- 在 Azure DevOps 中打开项目
- 单击概览页面中项目名称右侧的铅笔,转到项目设置
- 单击管道下的服务连接
- 选择 azure 服务连接
- 点击更新服务连接
我想知道在从 TFS (visualstudio.com) 部署(发布工作流)到 Azure 时,我是否是唯一一个获得此 CouldnotfetchaccesstokenforAzureStatusCode 的人。甚至 google 也没有线索。
发布工作流配置文件是在 Azure 中设置的,所以我猜订阅和服务名称没问题。毕竟它设法转移了工件。它在停止工作之前已经工作了一个星期。它由 git 推送后成功的托管构建触发。无需手动工作。
##[section]Finishing: Download Artifacts
##[section]Starting: Deploy Azure App Service
==============================================================================
Task : Azure App Service Deploy
Description : Update Azure App Service using Web Deploy / Kudu REST APIs
Version : 2.1.10
Author : Microsoft Corporation
Help : [More Information](https://aka.ms/azurermwebdeployreadme)
==============================================================================
d19c95a6-ebscrabbeldabbeld9c3eb0cfeb exists true
##[warning]Can\'t find loc string for key: CouldnotfetchacccesstokenforAzureStatusCode
##[error]CouldnotfetchacccesstokenforAzureStatusCode 400 Bad Request
##[section]Finishing: Deploy Azure App Service
##[section]Finishing: Release
我检查了 "Publish using Web Deploy" 和 "Take App Offline" 以及控制选项 "Enabled"。 App Service 是第 2 版。有什么想法吗?
编辑:尝试了第 3 版(预览版),我得到了一个不同的(但可能是相同的)错误:
##[error]Could not fetch acccess token for Azure. Status Code: 400 (Bad Request)
我重新创建了 juunas 提到的服务连接,并且成功了。您将在 TFS 的 "Services" 下找到它。那么它背后的魔力是什么:
- 它将服务连接绑定到您的 Azure AD(租户 ID)
- 它在 azure AD 中创建一个应用程序并在 发布过程
- 它将服务连接绑定到您的订阅 ID
- 它创建一个可以持续 1 或 2 天的主密钥(如密码) 年。我原来的服务中正是缺少这个价值。你 可以创建自己的主体密钥或让 TFS 自动创建一个 你.
感谢 Juunas 的提示!
此错误的另一个可能原因 -
我发现使用新的 "Build Editor"(仍在预览中)会出现此问题。
TL;DR 解决方案是在解决下面描述的错误之前,不要对订阅相关参数使用 "process linked parameters" 功能。
在这种情况下,如果使用 "process linked parameters" 功能并且在 "process" 级别指定要使用的订阅,则会发生以下情况:
- 代理将导出进程级别的环境变量
ENDPOINT_AUTH_*
,指向服务端点的错误 "id"。不清楚为什么会发生这种情况 - 我倾向于将 VSTS 的初始作业消息归咎于代理代码 here 之后。 - 任务运行器会导出那些错误命名的变量供任务使用(在保险库中)- 相关代码部分是 here
- 特定的 Azure 部署任务会查找具有正确 ID 的环境变量,但会得到空结果,因为它们从未被导出。
- 身份验证将因此失败。
在构建排队期间将 "debug" 标志设置为 'true' 将在跟踪中显示上述内容。
刚刚通过取消链接部署步骤中的所有链接项目解决了这个问题。所以 'Azure Subscription' 和 'App Service name',即使它们看起来设置正确...这对我有用。
我不必重新创建服务连接。我只需要更新它就可以再次发布。
- 在 Azure DevOps 中打开项目
- 单击概览页面中项目名称右侧的铅笔,转到项目设置
- 单击管道下的服务连接
- 选择 azure 服务连接
- 点击更新服务连接