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

Spring Boot项目build文件夹未推送到GitLab致CI/CD构建失败

问题:GitLab CI构建报错chmod: cannot access 'build': No such file or directory,本地build文件夹未推送到仓库

原因分析

  1. .gitignore规则导致build文件夹被忽略
    你的.gitignore中明确配置了build/,这会让Git忽略根目录下的整个build文件夹,所以执行git add .时不会将build文件夹纳入版本控制,自然无法推送到GitLab。不过这其实是合理的——构建产物(比如build文件夹)不应该被提交到代码仓库,属于版本控制的最佳实践。

  2. CI脚本存在语法错误
    你在gitlab-ci.yml的script里写了chmod +x ./gradlew build,这条命令的逻辑是给./gradlew添加执行权限,同时把build当作第二个参数传给chmod。但此时CI环境中还没有执行构建,build文件/文件夹根本不存在,所以chmod会报错找不到目标。

解决方法

1. 保留.gitignore的正确配置(无需修改)

继续忽略build文件夹,构建产物应该由CI流水线在运行时生成,而不是从仓库拉取。

2. 修复GitLab CI的构建脚本

修改gitlab-ci.yml中build-job的script部分,拆分错误的命令,先给gradlew加权限,再执行构建:

script:
  - echo "Compiling the code..."
  - chmod +x ./gradlew
  - ./gradlew build
  - echo "Compile complete."

3. 移除不必要的Docker安装步骤(可选)

当前build-job是用Gradle编译Java代码,不需要Docker环境,所以可以删除before_script里的Docker安装命令,以及services中的docker:dind,简化流水线配置:

build-job:
  stage: build
  image: gradle:jdk17
  script:
    - echo "Compiling the code..."
    - chmod +x ./gradlew
    - ./gradlew build
    - echo "Compile complete."
  artifacts:
    paths:
      - ./build/libs/

这样调整后,CI流水线会先给Gradle wrapper脚本加执行权限,然后执行构建生成build文件夹,最后将build/libs/下的产物作为artifacts保存,后续的test/deploy阶段就可以正常使用这些产物了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:23:06