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

Azure Node.js Web App推送到GitHub时Node.js 12 Actions弃用警告问题

问题描述

我最近在Azure中创建了一个Node.js Web应用,关联GitHub仓库时,Azure自动在仓库里生成了.github/workflows/main_myAppName.yml的工作流文件,用来实现git push后自动部署到Azure。

推送代码后,在GitHub Actions运行页面看到警告:

build
Node.js 12 actions are deprecated. 请更新以下使用Node.js 16的action:actions/checkout@v2, actions/setup-node@v1, actions/upload-artifact@v2

我没创建过这个工作流文件,也不了解它的用法,有两个疑问:

  • Azure会不会自动修改这个工作流文件来符合GitHub的要求?
  • 还是得我自己持续关注规则变更,手动学习修复?

另外还有两个小问题:

  • 我用的是Azure免费应用服务层,构建部署耗时超30分钟,是不是因为免费层的原因?
  • 收到“artifact里超过10000个文件”的警告,但我的应用根本没这么多文件,而且node_modules已经在.gitignore里了,这是怎么回事?

补充:
附上自动生成的工作流文件内容:

# 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 - myAppNameHere

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: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v2
        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@v2
        with:
          name: node-app

      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'myAppNameHere'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_SOME-LONG-CODE-HERE }}
          package: .

我完全不懂工作流,要是得自己改的话,能不能给具体的修改指导?


解答

关于Azure是否自动更新工作流文件

Azure不会自动修改已生成的工作流文件。这个文件一旦创建就属于你的GitHub仓库,Azure不会主动干预更新。后续GitHub Actions的规则变更,需要你自己手动维护这个文件。

手动更新工作流文件的具体步骤

你只需要把警告里提到的几个action版本升级到支持Node.js 16+的版本就行,这些修改不会改变原有部署逻辑,只是升级依赖版本,不会搞砸现有配置。

修改后的完整工作流文件:

# 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 - myAppNameHere

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # 升级到v4版本,支持Node.js 20
      - uses: actions/checkout@v4

      - name: Set up Node.js version
        # 升级到v4版本,支持Node.js 16+
        uses: actions/setup-node@v4
        with:
          node-version: '18.x'

      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
          npm run test --if-present

      - name: Upload artifact for deployment job
        # 升级到v4版本,支持Node.js 20
        uses: actions/upload-artifact@v4
        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
        # 同步升级到v4版本,保持兼容性
        uses: actions/download-artifact@v4
        with:
          name: node-app

      - name: 'Deploy to Azure Web App'
        id: deploy-to-webapp
        # 升级到v4版本,支持Node.js 20,更稳定
        uses: azure/webapps-deploy@v4
        with:
          app-name: 'myAppNameHere'
          slot-name: 'Production'
          publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_SOME-LONG-CODE-HERE }}
          package: .

修改说明:

  • actions/checkout@v2 → actions/checkout@v4:v4版本基于Node.js 20,完全符合GitHub要求
  • actions/setup-node@v1 → actions/setup-node@v4:v4版本支持Node.js 16+,功能更完善
  • actions/upload-artifact@v2 → actions/upload-artifact@v4:v4版本基于Node.js 20
  • actions/download-artifact@v2 → actions/download-artifact@v4:和upload保持版本一致,避免兼容性问题
  • azure/webapps-deploy@v2 → azure/webapps-deploy@v4:v4版本支持Node.js 20,稳定性更好

额外问题解答

  1. 免费层部署耗时久:是的,Azure免费应用服务层的CPU、内存配额有限,还会出现实例休眠的情况,所以构建部署速度会很慢。换成标准层后,资源配额提升,速度会大幅加快。
  2. artifact文件数超10000:你当前的工作流是把整个项目目录(path: .)作为artifact上传,虽然node_modules在.gitignore里,但npm install是在GitHub Actions的运行环境中执行的,node_modules会被安装到运行环境里,然后被一起打包上传。

解决办法是修改upload-artifact的path,只上传部署需要的文件:

  • 如果是React/Vue等单页应用,只上传build或dist目录:path: build
  • 如果是Node.js后端应用,只上传源码、package.json等必要文件,比如:
    - name: Upload artifact for deployment job
      uses: actions/upload-artifact@v4
      with:
        name: node-app
        path: |
          src/
          package.json
          package-lock.json
          # 其他你需要部署的文件/目录
    

也可以创建.artifactignore文件,用法和.gitignore类似,用来排除不需要上传的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:00:53