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

Bitbucket Pipeline执行Gradle构建后Docker找不到zip文件求助

第一步:确认Gradle配置变量同步到流水线

你的build.gradle中使用了ZipFilename和ZipPath两个自定义变量,本地一般是在gradle.properties或者本地环境变量中配置,Bitbucket流水线默认不会继承你本地的变量配置:

  • 进入Bitbucket仓库后台,找到「Repository settings」→「Repository variables」,新增两个变量,值和你本地使用的完全一致:
    • ZipFilename:一般配置为zip-file.zip,和Dockerfile中COPY的文件名保持一致
    • ZipPath:配置为src/main/build,和Dockerfile中COPY的源路径保持一致

第二步:校验zip文件实际生成情况

在流水线./gradlew zip命令后新增一行打印命令,确认文件是否真的生成、路径是否正确:

./gradlew zip --info # 加--info可以输出Gradle任务执行的详细日志,方便排查执行失败问题
ls -la ${ZipPath} # 打印目标目录下的文件,确认zip文件是否存在、权限是否正常

如果日志中没有对应zip文件,优先检查Gradle任务执行是否报错、变量配置是否正确。

第三步:修正Docker构建上下文与COPY路径配置

这是最常见的报错原因:

  1. Dockerfile中COPY的源路径是相对docker build命令执行时的工作目录的相对路径,你当前写的/src/main/build/zip-file.zip开头带斜杠,会被识别为容器构建环境的绝对路径,永远找不到文件,修改为相对路径即可:
FROM centos:7
COPY src/main/build/zip-file.zip /tmp/zip-file.zip # 去掉开头的斜杠
  1. 如果你把Gradle构建和Docker构建拆成了两个不同的Pipeline Step,必须在Gradle的Step中配置artifacts共享生成的zip文件,Bitbucket Pipeline默认每个Step的工作空间是独立的,后续Step默认拿不到前序Step生成的文件,参考配置:
pipelines:
  default:
    - step:
        name: Gradle构建生成zip
        image: gradle:7-jdk11 # 替换为你实际使用的Gradle环境镜像
        script:
          - ./gradlew zip
        artifacts:
          - src/main/build/*.zip # 声明该路径下的zip为共享制品,后续Step可直接读取
    - step:
        name: 构建Docker镜像
        image: docker:latest
        services:
          - docker
        script:
          - docker build -t 你的镜像名称 .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:06:00