【发布时间】:2021-05-25 00:29:33
【问题描述】:
我正在尝试使用我最初从桌面进行部署时创建的服务主体凭据,从 Azure DevOps 构建管道向我的 Azure 免费层帐户部署无服务器框架提供的简单 NodeJS hello-world 功能。我使用了多个构建代理和任务组合,包括 Windows 和 Ubuntu 代理以及 Bash、命令行、Azure Powershell 和 Azure CLI 任务,并使用 DevOps 提供了指向服务主体凭据的链接。我确保将它们添加为管道变量,以便它们包含在任务的环境变量中,并且我已经确认它们在任务运行时就在那里。我还确保已安装 Azure CLI 并使用订阅集登录。无论我调整什么设置/权限或尝试新配置,当任务成功运行到无服务器框架尝试部署时,它总是试图让我使用浏览器来验证我的帐户。这显然违背了 CI/CD 管道的目的,即使我确实使用浏览器进行身份验证,该过程也只是挂在那里。
示例代码和部署可以在我的桌面上运行,所以我知道凭据可以正常工作。我相信我已经在构建管道中模拟了我在桌面上执行的每个步骤,但是当我的桌面在没有浏览器身份验证的情况下部署时,构建总是会请求它。有没有人有这种方式的经验并且知道我缺少什么步骤/配置?
要查看示例代码和流程,请查看here 或运行以下步骤:
无服务器创建 -t azure-nodejs -p testApp
cd .\testApp\
在 serverless.yml 中更改节点运行时和区域(不支持 nodejs12.x,美国西部没有免费层)
无服务器部署
这是我用来在我的桌面上运行它的链接:link
编辑:这是通过上述步骤创建的默认 serverless.yml:
service: azure-serverless-helloworld
provider:
name: azure
region: East US
runtime: nodejs8.10
environment:
VARIABLE_FOO: 'foo'
plugins:
- serverless-azure-functions
package:
exclude:
- local.settings.json
- .vscode/**
- index.html
functions:
hello:
handler: src/handlers/hello.sayHello
events:
- http: true
x-azure-settings:
methods:
- GET
authLevel: anonymous
goodbye:
handler: src/handlers/goodbye.sayGoodbye
events:
- http: true
x-azure-settings:
methods:
- GET
authLevel: anonymous
【问题讨论】:
标签: azure azure-devops azure-functions azure-pipelines serverless-framework