hub - Iniciar el nuevo contenedor Docker con cada nueva ejecución de compilación de Bamboo y usar el contenedor para ejecutar la compilación
docker run (2)
Nosotros (Atlassian Build Engineering) hemos creado un conjunto de complementos para ejecutar agentes basados en Docker en un clúster (ECS) que se conecta, crea un solo trabajo y luego sale. Recientemente hemos abierto la fuente de la solución.
Consulte https://bitbucket.org/atlassian/per-build-container para obtener más detalles.
Soy nuevo en Bamboo y estoy tratando de obtener el siguiente flujo de proceso utilizando Bamboo y Docker:
- El desarrollador confirma el código a una rama de Bitbucket
- El plan de construcción detecta el cambio
- El plan de construcción luego inicia un contenedor de Docker en una instancia de AWS dedicada donde se instala Docker. En el contenedor Docker también se inicia un agente remoto. Uso el
atlassian/bamboo-java-agent:latest
contenedor docker. - El agente remoto se registra con Bamboo
- El resto del plan de compilación se ejecuta en el contenedor.
- El contenedor y el agente se eliminan cuando se completa el plan
Configuré un plan de compilación de prueba y en el plan Mi primera tarea es iniciar una instancia de Docker como la siguiente:
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
La segunda tarea es obtener el código fuente y desplegarlo. La tercera tarea es la prueba y la cuarta tarea es cerrar el contenedor.
También hay otros agentes en línea en Bamboo y mi plan de compilación a veces usa esos y no el contenedor Docker que comencé como parte del plan de compilación.
¿Hay alguna manera de hacer lo anterior?
Espero que todo tenga sentido. Soy realmente nuevo en esto y cualquier ayuda será apreciada.
Primero debe asegurarse de que el contenedor de la ventana acoplable "principal" no esté saliendo cuando lo ejecute.
Comprueba con
docker ps -a
deberías ver que se está ejecutando
Ahora suponiendo que se está ejecutando, puede ejecutar comandos dentro del contenedor
para entrar en el contenedor
docker exec -it containerName bash
para ejecutar comandos dentro del contenedor desde afuera del contenedor
docker exec -it containerName commandToExecuteInsideTheContainer
Usted podría, como parte de los contenedores dockerfile, COPIAR una secuencia de comandos que haga algo.
Luego puede ejecutar ese script desde fuera del contenedor utilizando el enfoque anterior.
Espero que esto da una idea.