You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gitlab CI Runner中通过az cli登录Azure部署Web应用?

GitLab CI 环境部署Azure Web App的无高权限登录方案

问题核心

你已在GitLab CI流程中生成可直接运行的Node.js Web应用ZIP包,本地使用az webapp deploy可正常完成部署,但GitLab Runner无Azure登录态,且账号存在权限限制(无AD访问权限、无应用注册权限),无法使用常规的托管标识、服务主体自动创建方案。

已排除的无效方案

  • Publish Profile在线获取:需要Azure登录态,无法在CI环境独立完成
  • 自定义角色绑定托管标识:需要AD操作权限
  • 系统分配托管标识直接认证:无对应访问密钥,无法直接用于CLI登录
  • 手动生成JWT令牌认证:需要应用注册功能权限

可行落地方案

方案一:预存发布凭据直接部署(最适配你的权限场景,无需执行az login)

该方案不需要在CI流程中完成Azure账号登录,仅需一次本地操作即可永久使用,完全适配你现有ZIP包直接部署的需求:

  1. 本地登录Azure门户,进入目标App Service的管理页面
  2. 点击顶部菜单栏的「获取发布配置文件」按钮,下载后缀为.PublishSettings的XML配置文件到本地
  3. 打开GitLab对应项目的设置页面,进入「CI/CD」-「变量」板块,新增一个私密变量:
    • 变量键:AZURE_PUBLISH_PROFILE
    • 变量值:打开本地下载的.PublishSettings文件,复制全部文本内容粘贴为变量值
    • 勾选「Protected」「Masked」选项,防止凭据在日志中泄露
  4. 在CI部署脚本中直接调用部署命令,传入预存的发布凭据即可,不需要提前执行az login:
deploy_to_azure:
  stage: deploy
  dependencies:
    - build # 替换为你生成ZIP包的上游任务名
  script:
    - az webapp deploy --name 你的Web应用名称 --resource-group 你的资源组名称 --src-path 编译生成的zip包路径 --publish-profile $AZURE_PUBLISH_PROFILE

方案二:服务主体登录(需要本地账号有资源级服务主体创建权限)

如果你必须在CI流程中显式执行az login,且本地账号有权限为目标Web App创建资源级服务主体,可以按以下步骤配置:

  1. 本地已登录Azure CLI的环境下,执行以下命令创建仅拥有目标Web App部署权限的服务主体:
az ad sp create-for-rbac --name "gitlab-ci-deploy-demo" --role contributor --scopes /subscriptions/你的订阅ID/resourceGroups/你的资源组名称/providers/Microsoft.Web/sites/你的Web应用名称 --sdk-auth
  1. 命令执行完成后会输出一段JSON格式的认证凭据,复制整段JSON内容
  2. 进入GitLab项目CI/CD变量配置页,新增私密变量AZURE_CREDENTIALS,值为刚才复制的整段JSON内容,同样勾选保护、掩码选项
  3. 在CI脚本中先执行登录,再运行部署命令:
deploy_to_azure:
  stage: deploy
  dependencies:
    - build
  script:
    # 解析变量完成az登录
    - az login --service-principal -u $(echo $AZURE_CREDENTIALS | jq -r .clientId) -p $(echo $AZURE_CREDENTIALS | jq -r .clientSecret) --tenant $(echo $AZURE_CREDENTIALS | jq -r .tenantId)
    # 执行部署
    - az webapp deploy --name 你的Web应用名称 --resource-group 你的资源组名称 --src-path 编译生成的zip包路径

注意:该方案创建的服务主体仅对单个目标Web App有部署权限,不会产生越权风险;如果执行创建服务主体的命令时提示权限不足,直接使用方案一即可。

内容的提问来源于stack exchange,提问作者Sam Imberman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 10:15:37