continuous-integration - que - circleci vs jenkins
¿Algún servicio de CI le permite crear contenedores de Docker y usar la memoria caché de compilación de la ventana acoplable? (5)
Tengo un montón de contenedores Docker enganchados usando Docker-Compose (anteriormente fig.). Descubrí que los servicios que se anuncian a sí mismos como servicios de "Docker CI" generalmente hablan sobre el uso de Docker para dirigir a sus trabajadores de construcción.
Me gustaría un servicio de integración continua que conserve la memoria caché de compilación de Docker entre ejecuciones, en lugar de crear un contexto de trabajador / sistema de archivos / compilación completamente nuevo. De lo contrario, las construcciones toman absolutamente para siempre. Se administra de manera ideal (a diferencia de https://github.com/groupon/DotCi , que no viene con la base de datos de construcción por obra de CircleCI).
Lo único que he encontrado es TeamCity (antiguo, no puedes crear versiones de tareas en un archivo yaml fácilmente como con CircleCI, debes mantener la infraestructura, etc.). Quay.io no aprovisiona una base de datos como CircleCI y Travis, por lo que tiene que bifurcar dev y prod e instalar una dentro del contenedor y ejecutar pruebas unitarias durante la creación del contenedor (ew: no puede engendrar un contenedor no construido para depurar las cosas!).
¿Cómo se ejecuta la integración continua en su clúster contenedor Docker?
Codeship ahora admite el almacenamiento de la memoria caché de imágenes de Docker y su recuperación para acelerar sus construcciones.
CircleCI 1.0
CircleCI te permite crear contenedores Docker como parte de tu compilación: https://circleci.com/integrations/docker
Sin embargo, tienes razón en que esto no almacena en caché las imágenes de Docker; es un poco difícil para nuestra pila hacer eso correctamente, pero estamos planeando abordar eso pronto.
Mientras tanto, varios clientes lo han almacenado en caché utilizando el almacenamiento en caché integrado (no Docker) de CircleCI, mediante el uso de la función docker save
/ docker load
: https://circleci.com/docs/docker#caching-docker-layers . No es lo ideal, pero debería ayudarlo hasta que podamos apoyar esto mucho mejor.
Actualizado para CircleCI 2.0
CircleCI 2.0 es Docker-centric. Puede crear imágenes de Docker, utilizar el almacenamiento en caché de capas, usar Docker Compose e incluso usar imágenes oficiales y personalizadas de Docker como entorno de creación.
¿Has visto a wercker ? Es compatible con "traer su propio contenedor", almacenará sus imágenes en caché (creo que en función del trabajador, pero después de algunas compilaciones, el inicio se reduce a unos pocos segundos con una imagen personalizada), y afaik también permite crear imágenes de Docker.
Desventaja: requiere demasiados permisos de GitHub .
Actualmente estoy usando CircleCI, vea http://tschottdorf.github.io/cockroach-docker-circleci-continuous-integration para una buena guía para usar el caché docker
También vale la pena realizar un envío, ya que toda su infraestructura se basa en la ventana acoplable y en la organización de múltiples contenedores acoplables con formaciones enviables .
Hay una pregunta relacionada "¿Cómo puedo permitir que la imagen DinD de gitlab-ci-runner almacene imágenes intermedias?" .
Incluso si nuestra solución requiere una cantidad mínima de mantenimiento de la infraestructura (necesitamos ejecutar nuestro propio corredor), creo que vale la pena echarle un vistazo.
Básicamente, no ejecutamos Docker en Docker, pero estamos creando una VM separada solo para los corredores. Esto tiene algunas implicaciones sobre la seguridad y las tareas de limpieza, consulte también el README de nuestro corredor.
Quizás esta solución se vuelva obsoleta en el futuro a medida que se mejore el soporte de Docker para varios sistemas de CI, pero en este momento es una buena combinación entre rendimiento, mantenimiento y facilidad de uso.