启动新的Docker容器,每次运行新的Bamboo build并使用容器运行构build

我是Bamboo新手,正在尝试使用Bamboo和Docker来获取以下stream程:

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

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

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

第二个任务是获取源代码并进行部署。 第三项任务是testing,第四项任务是closures容器。

Bamboo上还有其他代理在线,我的构build计划有时使用那些而不是我作为构build计划的一部分而开始的Docker容器。

有没有办法让我做到这一点?

我希望这一切都是有道理的。 我真的是新的这一点,任何帮助将不胜感激。

我们(Atlassian Build Engineering)已经创build了一组插件,用于在联机的集群(ECS)中运行基于Docker的代理,构build一个作业,然后退出。 我们最近开源了解决scheme。

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

首先,您需要确保“主”泊坞窗容器在运行时不会退出。

检查

 docker ps -a 

你应该看到它正在运行

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

进入容器

 docker exec -it containerName bash 

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

 docker exec -it containerName commandToExecuteInsideTheContainer 

你可以作为容器的一部分dockerfile COPY一个脚本,它做了一些事情。

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

希望这给了一些见解。