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

如何在Azure DevOps脚本中部署Nx单仓下的静态Web应用?

在Azure DevOps流水线中动态部署Nx单仓库的多个Azure静态Web应用

因为你的应用列表仅在运行时可用,无法使用编译期的循环任务,所以可以通过Azure CLI内置的静态Web应用部署命令或swa CLI在脚本内完成动态部署,两种方案都能在流水线环境中正常运行:

方案一:使用Azure CLI原生命令(无需额外安装工具)

Azure CLI的az staticwebapp deploy命令可直接完成部署,适配你已有的脚本逻辑,只需在获取部署令牌后添加部署步骤:

修改后的完整脚本:

- task: AzureCLI@2
  displayName: '动态部署Nx应用到静态Web应用'
  inputs:
    azureSubscription: ${{ parameters.ArmConnection }}
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      # Ubuntu代理默认自带jq,若缺失可添加apt install jq -y
      for app in $apps; do
         configPath="apps/$app/deployment-configs.json"
         if [ -f "$configPath" ]; then
            appName=$(jq -r '.appName' "$configPath")
            # 获取部署令牌并去除返回的双引号
            deploymentToken=$(az staticwebapp secrets list --name "$appName" --query "properties.apiKey" | sed 's/"//g')
            # 执行部署,指定应用构建产物路径
            az staticwebapp deploy \
              --name "$appName" \
              --api-key "$deploymentToken" \
              --app-location "dist/apps/$app"
         fi
      done

关键说明:

  • --app-location:指定Nx构建后的产物目录,对应你的dist/apps/$app路径
  • sed 's/"//g':去除Azure CLI返回令牌时附带的双引号,避免部署时令牌无效

方案二:使用swa CLI(更灵活的部署选项)

swa CLI并非仅适用于本地环境,可在流水线中临时安装后使用,适合需要更复杂部署配置的场景:

修改后的完整脚本:

- task: AzureCLI@2
  displayName: '用swa CLI动态部署Nx应用'
  inputs:
    azureSubscription: ${{ parameters.ArmConnection }}
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      # 全局安装swa CLI
      npm install -g @azure/static-web-apps-cli
      # 确保jq已安装
      for app in $apps; do
         configPath="apps/$app/deployment-configs.json"
         if [ -f "$configPath" ]; then
            appName=$(jq -r '.appName' "$configPath")
            deploymentToken=$(az staticwebapp secrets list --name "$appName" --query "properties.apiKey" | sed 's/"//g')
            # 使用swa CLI部署
            swa deploy "dist/apps/$app" \
              --app-name "$appName" \
              --api-key "$deploymentToken"
         fi
      done

关键说明:

  • 若流水线代理未预装Node.js,需先添加NodeTool@0任务安装合适的Node版本
  • swa CLI支持更多参数(如--env指定环境、--config指定自定义配置文件),可根据需求扩展

内容的提问来源于stack exchange,提问作者Andrea Costanzo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:30:11