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

Bitbucket Pipeline跨步骤传递Docker镜像tar包报错:文件不存在

问题描述

在Bitbucket Pipeline中已配置所有变量,成功构建Docker镜像并保存为.tar文件,但在后续步骤尝试将该tar包上传到指定位置时,出现错误提示“File Application.tar doesn't exist”。请问如何将构建生成的Docker镜像tar包复制到新位置?

现有Pipeline配置

preview:
      - step:
          name: Build Docker image for preview branch and save as .tar
          caches:
            - docker
          size: 2x #2x memory flag
          services:
            - docker
          script:
            - echo "Building Docker image for preview branch..."
            - docker build -f ./src/API/Dockerfile -t $BITBUCKET_REPO_SLUG .
            - docker save -o $BITBUCKET_REPO_SLUG.tar $BITBUCKET_REPO_SLUG
      - step:
          name: Upload Docker image as artifact
          script:
            - pipe: atlassian/bitbucket-upload-file:0.7.1
              variables:
                BITBUCKET_USERNAME: $BITBUCKET_USERNAME
                BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
                FILENAME: "$BITBUCKET_REPO_SLUG.tar"
                DIRECTORY: "downloads"

报错信息

Status: Downloaded newer image for bitbucketpipelines/bitbucket-upload-file:0.7.1
INFO: Executing the pipe...
✖ File Application.tar doesn't exist.
问题原因

Bitbucket Pipeline的每个step运行在独立容器中,默认不共享文件系统。第一个step生成的$BITBUCKET_REPO_SLUG.tar仅存在于自身容器内,后续step无法直接访问,因此触发文件不存在的报错。

解决方案

在第一个step中添加artifacts配置,将生成的tar包标记为工件,让Bitbucket自动把文件传递到后续step中。

修改后的完整Pipeline配置

preview:
      - step:
          name: Build Docker image for preview branch and save as .tar
          caches:
            - docker
          size: 2x #2x memory flag
          services:
            - docker
          script:
            - echo "Building Docker image for preview branch..."
            - docker build -f ./src/API/Dockerfile -t $BITBUCKET_REPO_SLUG .
            - docker save -o $BITBUCKET_REPO_SLUG.tar $BITBUCKET_REPO_SLUG
          # 新增artifacts配置,指定需要传递的文件
          artifacts:
            - $BITBUCKET_REPO_SLUG.tar
      - step:
          name: Upload Docker image as artifact
          script:
            - pipe: atlassian/bitbucket-upload-file:0.7.1
              variables:
                BITBUCKET_USERNAME: $BITBUCKET_USERNAME
                BITBUCKET_APP_PASSWORD: $BITBUCKET_APP_PASSWORD
                FILENAME: "$BITBUCKET_REPO_SLUG.tar"
                DIRECTORY: "downloads"
补充说明
  • artifacts支持通配符,如需传递多个tar包可写- *.tar
  • 确保artifacts路径与文件生成路径一致,当前文件在工作目录生成,直接写文件名即可;若文件在子目录,需填写完整路径(如- ./build/*.tar)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:10:08