【Azure Developer】Github Action部署资源(ARM模板)到Azure中国区时,遇见登录问题的解决办法
问题描述
在参考文档“使用 GitHub Actions 部署 ARM 模板”一文中,由于是在中国区Azure上操作,所以生产的部署凭证为中国区凭证。当创建工作流时,在登录到Azure这一步骤中,模板中使用指令为“ - uses: azure/login@v1”在执行时,遇见了登录到global的错误。
错误消息为:Error: Az CLI Login failed.
问题解决
从错误消息就可以发现,这是因为默认情况下,Github Action中设定的指令“- uses: azure/login@v1”是登录到Global,所以我们需要修改登录参数,让它指向中国区。
第一次尝试解决时,因不懂得 - uses的命令所以使用的时az指令 “- uses: az cloud set --name AzureChinaCloud” 发现这时完全错误的。
第二次尝试解决时,知道了可以为 - uses添加parameter参数,所以自己乱定义了参数:“parameters: environment=AzureChinaCloud”。结果依旧错误。
第三次尝试解决时,认真读了命令的错误提示,并查看了with中参数设置。使用“environment: AzureChinaCloud”,成功解决问题。
修改次数 | .yml文件修改内容(黄色高亮部分) | 错误/成功消息
|
第一次添加内容 |
# Log into Azure |
The workflow is not valid. .github/workflows/deployStorageAccount.yml (Line: 12, Col: 13): Expected format {org}/{repo}[/path]@ref. Actual 'az cloud set --name AzureChinaCloud' Input string was not in a correct format. |
第二次修改内容 | # Log into Azure - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} parameters: environment=AzureChinaCloud |
Warning: Unexpected input(s) 'parameters', valid inputs are ['creds', 'enable-AzPSSession', 'environment', 'allow-no-subscriptions'] Run azure/login@v1 wit 56c h: creds: *** parameters: environment=AzureChinaCloud enable-AzPSSession: false environment: azurecloud allow-no-subscriptions: false /usr/bin/az cloud set -n azurecloud Done setting cloud: "azurecloud" Error: Az CLI Login failed. Please check the credentials. For more information refer https://aka.ms/create-secrets-for-GitHub-workflows Error: Error: Error: The process '/usr/bin/az' failed with exit code 1 |
第三次修改内容 | # Log into Azure - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} environment: AzureChinaCloud |
Run azure/login@v1 with: creds: *** environment: AzureChinaCloud enable-AzPSSession: false allow-no-subscriptions: false /usr/bin/az cloud set -n azurechinacloud WARNING: Switched active cloud to 'AzureChinaCloud'. WARNING: Use 'az login' to log in to this cloud. WARNING: Use 'az account set' to set the active subscription. Done setting cloud: "azurechinacloud" Login successful. |
所以正确的解决办法就是添加environment参数。所以当使用部署一个存储账号作为入门测试,在中国区Azure能够正常使用的yaml文件内容为:
on: [push] name: Azure ARM jobs: build-and-deploy: runs-on: ubuntu-latest steps: # Checkout code - uses: actions/checkout@main # Log into Azure - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} environment: AzureChinaCloud # Deploy ARM template - name: Run ARM deploy uses: azure/arm-deploy@v1 with: subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} resourceGroupName: ${{ secrets.AZURE_RG }} template: ./azuredeploy.json parameters: storageAccountType=Standard_LRS # output containerName variable from template - run: echo ${{ steps.deploy.outputs.containerName }}
参考资料
使用 GitHub Actions 部署 ARM 模板:https://docs.azure.cn/zh-cn/azure-resource-manager/templates/deploy-github-actions
- 使用ARM模板在Azure中国大规模部署DC/OS集群
- 【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
- 在部署HEXO时出现ERROR Deployer not found : github的问题解决办法
- github的win7版本无法登录问题解决办法
- 关于Azure HDInsight资源调用的问题及解决办法
- 项目部署到阿里云登录页面图形验证码乱码问题的解决办法
- 使用ARM模板在Azure中国大规模部署DCOS集群
- struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)
- xwindows不能登录问题解决办法
- myeclipse,Tomcat中部署多个工程的时候出现内存溢出的问题的解决办法
- struts2中form提交到action中的中文参数乱码问题解决办法
- struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)
- yourphp 遇见问题及解决办法
- MVC几种找不到资源的问题解决办法
- Discuz!NT 3.5.2 关于不能在64位系统部署问题彻底解决办法
- struts2出现No result defined for action。。。。。问题的解决办法
- “Visual Studio 2008 + IE8下,为MFC工程对话框资源添加类时发生错误”问题的解决办法
- Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) CRM 登录出现会话超时的解决办法
- 使用 facebook pop 遇见的问题及解决办法
- struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法