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

如何加快Github Actions中npm run test-compiled的执行速度?

缩短GitHub Actions测试工作流耗时的可行方案

1. 修复并行作业依赖问题,实现多服务并行测试

你之前并行作业失败,大概率是没在每个作业里正确配置Node环境和缓存依赖。可以这么调整:

  • 每个并行作业开头用actions/setup-node指定Node版本,同时启用依赖缓存:
    jobs:
      test-service:
        runs-on: ubuntu-latest
        strategy:
          matrix:
            service: [service-a, service-b, service-c] # 替换成你的实际服务列表
        steps:
          - uses: actions/checkout@v4
          - name: Setup Node.js
            uses: actions/setup-node@v4
            with:
              node-version: 20 # 换成你的项目Node版本
              cache: 'npm' # 自动缓存node_modules
          - name: Install dependencies
            run: npm ci # 用ci比install更快,依赖版本更稳定
          - name: Run tests for ${{ matrix.service }}
            run: npm run test-compiled -- --service ${{ matrix.service }} # 假设测试命令支持指定单个服务
    
  • 如果各服务有独立依赖目录,直接进入对应目录执行安装:cd ./services/${{ matrix.service }} && npm ci

2. 优化依赖与编译产物缓存

  • 除了默认的node_modules缓存,还可以缓存test-compiled生成的编译产物,避免重复编译:
    - name: Cache compiled test files
      uses: actions/cache@v3
      with:
        path: ./path/to/compiled-tests # 替换成你的编译产物实际路径
        key: ${{ runner.os }}-compiled-tests-${{ hashFiles('**/*.ts', '**/*.js') }} # 源码变更时自动更新缓存
    
  • 全程用npm ci代替npm install,它会严格按照package-lock.json安装,速度更快且依赖版本一致。

3. 优化测试执行本身

  • 拆分测试套件并行跑:用Jest的--maxWorkers参数,根据虚拟机核心数设置(GitHub Actions虚拟机一般有2-4核),比如:
    npm run test-compiled -- --maxWorkers=50%
    
  • 跳过不必要的测试:通过环境变量或配置文件,排除CI环境不需要的本地调试类测试。
  • 增量测试:只运行变更代码对应的测试用例,比如用jest --onlyChanged(依赖Git),或者结合PR事件,只检测变更文件关联的测试。

4. 优化工作流基础环境

  • 选更快的虚拟机:优先用ubuntu-latest(比Windows/macOS快很多),如果需要更强资源,可开启GitHub的large runner。
  • 砍掉冗余步骤:移除工作流里不需要的检查、打包、预部署等步骤,只保留测试相关操作。
  • 预构建依赖镜像:如果项目依赖复杂,提前构建包含Node环境和所有依赖的Docker镜像,工作流直接拉取镜像,跳过依赖安装步骤。

5. 串行作业下的临时优化(若暂时无法并行)

  • 并行安装依赖:如果多个服务共享根目录依赖,先装根目录依赖,再并行装各服务私有依赖:
    npm ci && (cd service-a && npm ci) & (cd service-b && npm ci) & wait
    
  • 复用共享编译产物:先完成所有服务的共享编译步骤,再依次执行每个服务的测试,避免重复编译公共代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:01:20