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

如何修复GitHub Action部署Node.js到Azure App Service虚拟目录的工作流?

修复GitHub Action部署Node.js到Azure App Service虚拟目录的问题

我需要将Node.js应用部署到Azure App Service的虚拟目录,但编写的GitHub Actions工作流(api.yml)无法正常运行,以下是修复方案:

问题根源

从报错信息来看,核心问题是:

  • app-name参数错误地包含了虚拟目录路径(raymultiapp1/api),Azure无法识别带路径的应用名称
  • 部署包路径配置依赖未定义的环境变量,导致找不到要部署的文件

修复步骤

1. 修正应用名称参数

app-name只能填Azure App Service的主应用名称(即raymultiapp1),虚拟目录不能直接追加在应用名称后,需要单独配置。

2. 调整部署包路径

如果你的构建产物存放在本地项目的api目录下,直接将package参数设为./api即可。如果构建产物在其他目录(比如dist),则对应修改路径。

3. 添加虚拟目录配置

使用azure/webapps-deploy动作的virtual-application参数,指定要部署到的虚拟路径(/api),这样部署内容会自动映射到raymultiapp1/api。

也可以提前在Azure门户配置:进入目标App Service → 配置 → 路径映射 → 添加虚拟应用程序,设置虚拟路径为/api,物理路径为site\wwwroot\api。

4. 完整修复后的工作流代码

# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions

name: Build and deploy Node.js app to Azure Web App - raymultiapp1

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Node.js version
        uses: actions/setup-node@v3
        with:
          node-version: '18.x'

      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
      
      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v3
        with:
          name: node-app
          path: .

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    
    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v3
        with:
          name: node-app
      
      - name: 'Deploy to Azure Web App'
        uses: azure/webapps-deploy@v2
        id: deploy-to-webapp
        with:
          app-name: raymultiapp1
          slot-name: 'production'
          package: ./api
          virtual-application: '/api'
          publish-profile: ${{ secrets.AzureAppService_PublishProfile_bf436910e72f4781a297e902cafb1234 }}

额外检查项

  • 确认Azure门户的虚拟目录物理路径和部署包的路径一致
  • 验证项目构建后,目标目录(比如api)下确实存在可部署的文件
  • 确保GitHub Secrets中的发布配置文件权限正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:57:42