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

如何通过GitHub Workflows在Azure Web App服务器端解压部署归档包

解决方案:直接部署Zip包到Azure Web App,由服务器端自动解压

Azure Web App的部署机制支持直接上传Zip包并在服务器端自动解压,完全不需要在GitHub Actions的部署步骤中先解压文件。你只需要修改deploy阶段的配置,直接将Zip包作为部署源即可,这样能大幅减少文件传输的数量和耗时。

修改后的完整Workflow配置

# 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

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

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

      - name: build client
        env: 
          VITE_API_URL: "https://mysite.azurewebsites.net"
        run: |
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: build server
        run: |
          cd server
          npm install
          cd ..

      - name: Zip artifact for deployment
        run: zip release.zip ./* -r

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        with:
          name: node-app
          path: release.zip

  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@v2
        with:
          name: node-app

      # 移除解压步骤,直接部署Zip包
      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'myapp'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
          package: ./release.zip # 直接指定Zip包路径

关键修改点说明

  • 删掉了部署阶段的unzip artifact for deployment步骤,不再需要在GitHub Runner上解压文件
  • 将azure/webapps-deploy@v2的package参数从.改为./release.zip,直接传入压缩包路径

这样部署时,GitHub Actions只会把一个Zip文件传输到Azure,Azure Web App会自动在服务器端完成解压操作,彻底解决大量小文件传输耗时的问题。

额外优化建议

如果想进一步压缩Zip包大小,减少传输时间,可以在打包时排除不必要的文件:

  • 在Zip artifact for deployment步骤中添加排除规则:
zip release.zip ./* -r -x "node_modules/*" "server/node_modules/*" ".git/*" ".github/*"

注意:如果你的应用依赖这些目录里的文件(比如server的node_modules是运行时必需的),则不要排除对应的目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:57:25