run hub docker bamboo

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:

  1. El desarrollador confirma el código a una rama de Bitbucket
  2. El plan de construcción detecta el cambio
  3. 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.
  4. El agente remoto se registra con Bamboo
  5. El resto del plan de compilación se ejecuta en el contenedor.
  6. 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.