每次新的奔步构建运行时启动新的Docker容器,并使用容器运行构建



我是奔步的新手,正在尝试使用奔步和Docker获得以程:

  1. 开发人员将代码提交到 Bitbucket 分支
  2. 构建计划检测更改
  3. 然后,构建计划在安装了 Docker 的专用 AWS 实例上启动 Docker 容器。在 Docker 容器中,还会启动远程代理。我使用 atlassian/bamboo-java-agent:latest docker 容器。
  4. 远程代理向奔步注册
  5. 构建计划的其余部分在容器中运行
  6. 计划完成后删除容器和代理

设置了一个测试构建计划,并在计划中 我的第一个任务是启动一个 Docker 实例,如下所示:

sudo docker run -d --name "${bamboo.buildKey}_${bamboo.buildNumber}" 
   -e HOME=/root/ -e BAMBOO_SERVER=http://x.x.x.x:8085/ 
   -i -t atlassian/bamboo-java-agent:latest

第二个任务是获取源代码并进行部署。 第三个任务是测试,第四个任务是关闭容器。

Bamboo上还有其他在线代理,我的构建计划有时会使用这些代理,而不是我在构建计划中启动的Docker容器。

我有没有办法做到以上几点?

我希望这一切都有意义。我真的是新手,任何帮助将不胜感激。

我们(Atlassian Build Engineering)创建了一组插件,用于在集群 (ECS) 中运行基于 Docker 的代理,该集群 (ECS) 上线,构建单个作业,然后退出。我们最近开源了该解决方案。

有关更多详细信息,请参阅 https://bitbucket.org/atlassian/per-build-container。

首先,您需要确保"主"docker 容器在运行时不会退出。

检查与

docker ps -a

您应该看到它正在运行

现在假设它正在运行,您可以在容器内执行命令

进入容器

docker exec -it containerName bash

从容器外部在容器内执行命令

docker exec -it containerName commandToExecuteInsideTheContainer

你可以作为容器的一部分 dockerfile 复制一个脚本来做一些事情。

然后,可以使用上述方法从容器外部执行该脚本。

希望这能提供一些见解。

最新更新