在 Bamboo 中设置 Docker 构建步骤

Set up Docker Build Step in Bamboo

我目前对在 Atlassian Bamboo 中设置 docker 构建步骤感到绝望。

对于初学者,我只想创建一个构建配置,运行将 hello-world 图像作为融合证明。到目前为止,我失败了。

我尝试按照 https://confluence.atlassian.com/bamboo0609/using-bamboo/jobs-and-tasks/configuring-tasks/configuring-the-docker-task-in-bamboo 上的步骤进行操作,但无济于事。

我的设置是这样的: 我们在 Ubuntu 服务器上安装了 Bamboo。我还在该服务器上安装了 Docker 并将 bamboo 用户添加到 docker 用户组并重新启动服务器以确保权限更改生效。此时,当我直接在服务器上 运行 时 docker run hello-world 工作。我还可以确认这是 Bamboo 运行 所在的服务器,因为每当我重新启动我安装 Docker 的服务器时,Bamboo 就会离线。

然后,我给服务器添加了docker能力(代理是默认代理,所以它继承了服务器的这个能力)。作为 docker 路径,我尝试了各种方法,其中 none 有效(也就是,以下错误对每个错误都保持不变):

现在,对于 运行ner,我尝试了两种不同的方法。

首先,我尝试使用具有以下设置的 Docker 运行ner: 命令: 运行一个Docker容器 Docker 图片: 你好世界

此returns以下错误信息:

┊
Error occurred while running Task 'Hello World Docker Test(5)' of type com.atlassian.bamboo.plugins.bamboo-docker-plugin:task.docker.cli.com.atlassian.bamboo.task.TaskException: Failed to execute task
┊
Caused by: com.atlassian.bamboo.docker.DockerException: Error running Docker run command
┊
Caused by: com.atlassian.utils.process.ProcessException: Error executing /snap/docker run --volume /var/atlassian/application-data/bamboo/xml-data/build-dir/CAM-DOC-JOB1:/data --workdir /data --rm hello-world
┊

第二个只是 运行 一个 shell 运行ner 命令 docker run hello-world,它返回了以下错误:

docker: not found

说到这里,我觉得自己没思路了。由于某种原因,所有内容都指向 Bamboo,但在服务器上找不到 Docker,尽管我可以清楚地确认它在那里。我尝试了各种不同的方法来告诉 Bamboo 在哪里可以找到 Docker,但是其中 none 有效。

很明显我做错了什么,但我不知道是什么。或者也许问题出在完全不同的方向上?无论如何,如果能就此问题分享任何见解,我将不胜感激。

好的,我找到了导致这种奇怪行为的原因。

问题是我使用 sudo snap install docker 安装 Docker,显然通过 snap 安装 docker 会导致 Bamboo 出现问题。

所以我使用这些简单的步骤让它工作:

  1. [服务器] 使用 sudo snap remove docker
  2. 卸载快照 Docker
  3. [服务器] 已使用 sudo apt install docker.io
  4. 重新安装 Docker
  5. [Bamboo] 将服务器功能中 Docker 的路径更改为 /usr/bin/docker

之后,hello-world 镜像构建成功,并将预期的输出打印到日志中。