我是奔步的新手,正在尝试使用奔步和Docker获得以程:
- 开发人员将代码提交到 Bitbucket 分支
- 构建计划检测更改
- 然后,构建计划在安装了 Docker 的专用 AWS 实例上启动 Docker 容器。在 Docker 容器中,还会启动远程代理。我使用
atlassian/bamboo-java-agent:latest
docker 容器。 - 远程代理向奔步注册
- 构建计划的其余部分在容器中运行
- 计划完成后删除容器和代理
设置了一个测试构建计划,并在计划中 我的第一个任务是启动一个 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 复制一个脚本来做一些事情。
然后,可以使用上述方法从容器外部执行该脚本。
希望这能提供一些见解。