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

GitLab CI运行gulp后保存artifacts时my-build目录为空如何解决

问题原因排查

你的配置存在三个核心错误,共同导致artifacts为空:

  • 执行路径错误:你在script中创建my-build目录后直接cd进入该目录执行后续命令,但你的gulpfile.js、package.json、app/scss源文件全部存放在仓库根目录,cd后process.cwd()变为my-build,gulp既找不到配置文件,也找不到scss源文件,也无法加载项目依赖,相当于执行了空任务,自然不会生成任何产物。
  • 依赖安装错误:你在my-build目录执行npm i,无法读取根目录的package.json,项目依赖的gulp-sass等包没有正确安装,任务实际未正常执行(未抛出阻断流水线的错误导致你误以为执行成功)。
  • 路径不匹配:就算gulp任务正常执行,你的配置中编译产物输出路径为根目录下的public/stylesheets,但artifacts仅配置抓取my-build目录,生成的产物也不会被归档。
修复方案

方法1:调整CI执行逻辑(无需修改gulpfile)

直接使用如下修正后的.gitlab-ci.yml即可:

stages:
  - build
  - deploy
build-job:
  stage: build
  image: node:12.22.6-alpine
  variables:
    TZ: "Europe/Stockholm"
  script:
    - echo "Compiling the code..."
    # 根目录安装依赖
    - npm i
    - npm i -g gulp
    # 根目录执行gulp任务,可正常读取所有源文件和配置
    - gulp buildStyles
    # 创建my-build并将产物移入
    - mkdir -p my-build
    - cp -r public/* my-build/
    # 可选添加调试命令:ls -la my-build,方便后续排查路径问题
    - echo "Compile complete."  
  artifacts:
    expire_in: 2 days
    paths: 
      - my-build
  allow_failure: false

deploy-job:
  stage: deploy
  script:
    - echo "Deploying application..."
    - echo "Application successfully deployed."

方法2:修改gulp输出路径(可选)

如果不想在CI中执行复制操作,可以直接修改gulpfile.js中的输出路径:

// 仅需调整css.dest配置即可
var css = {
  src: process.cwd() + '/app/scss/style.scss',
  dest: process.cwd() +'/my-build/public/stylesheets'
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:24:03