配置 bitbucket-pipeline.yml 以在运行管道时使用存储库中的 DockerFile 来构建映像

lau*_*ons 6 bitbucket docker bitbucket-pipelines

我是在 bitbucket 上创建管道以在合并后自动构建特定分支的新手。该项目是用C++编写的,具有以下结构:

PROJECT FOLDER
    - .devcontainer/
        - devcontainer.json
    - bin/
    - doc/
    - lib/
    - src/
        - CMakeLists.txt
        - ...
    - CMakeLists.txt
    - clean.sh
    - compile.sh
    - configure.sh
    - DockerFile
    - bitbucket-pipelines.yml
Run Code Online (Sandbox Code Playgroud)

我们创建了一个 DockerFile,其中包含构建项目所需的所有设置。有什么方法可以将 bitbucket-pipeline.yml 上的 docker 映像从存储库引用到 DockerFile 吗?

我已经能够将 docker 映像上传到我的 docker hub 上,并通过定义以下内容将其与我的凭据一起使用:

image:
  name: <dockerhubname>/<dockername>
  username: $DOCKER_HUB_USERNAME
  password: $DOCKER_HUB_PASSWORD
  email: $DOCKER_HUB_EMAIL
Run Code Online (Sandbox Code Playgroud)

但我不确定如何执行此操作,bitbucket 从存储库中获取 DockerFile 并使用它来构建映像,如果这样做,构建时间将会增加。

提前致谢!

seb*_*313 2

如果您想在管道过程中构建映像,则需要执行与在计算机中构建映像相同的步骤:

  1. 树立您的形象docker build -t $APP_NAME .
  2. 将其推送到您的存储库(例如 docker hub)docker push $APP_NAME:$VERSION

你可以这样做:

steps:
  - step: &build
    name: Build Docker Image
    services:
      - docker
    script:
      - docker build -t $APP_NAME .
      - docker push $APP_NAME:$VERSION
Run Code Online (Sandbox Code Playgroud)

认为管道中的每一步都在 Docker 容器中运行,这允许您做任何您想做的事情。docker 服务允许您使用开箱即用的 docker 客户端。然后推送后,您可以在另一步骤中使用该图像。您只需为该步骤指定图像即可。