Integración continua de TeamCity y Docker

TeamCity le permite automatizar CI/CD para proyectos de cualquier tamaño y complejidad mientras utiliza Docker para cada paso de su proceso.

Compile en un entorno Docker

¿Alguna vez se ha sentido frustrado al descubrir que el código que depuraba en su propia máquina no funcionaba en otros entornos? TeamCity le permite ejecutar builds y pruebas en Docker, lo que garantiza que su aplicación no está atada a su sistema específico y funcionará correctamente en cualquier otro lugar, desde una máquina de QA hasta una instancia de producción en la nube.

Compile y gestione imágenes Docker a escala

¿Busca una forma de compilar una infraestructura de CI/CD que se pueda escalar y mantener? Con TeamCity, puede personalizar los comandos de Docker con parámetros de compilación, utilizar plantillas para configurar procesos centralizados y automatizar la limpieza de agentes de compilación y registros de Docker a partir de imágenes de Docker obsoletas.

Ejecute pruebas de integración en servicios en contenedores

¿Necesita probar cómo funcionan juntos los diferentes componentes de una aplicación, o probar su aplicación en un entorno específico? TeamCity iniciará contenedores Docker, ejecutará pruebas de integración y los cerrará de forma segura al final del proceso de una manera altamente fiable y reproducible.

Integración de Docker en procesos de CI/CD

TeamCity admite y puede acelerar todos los flujos de trabajo de desarrollo de software que utilizan Docker. Mientras que otras herramientas de CI/CD solo proporcionan información binaria sobre los resultados del build (es decir, si han tenido éxito o han fallado), TeamCity se integra profundamente con Docker, para proporcionarle información completa sobre sus procesos, incluyendo:

  • Registros de compilación y resultados de pruebas en tiempo real
  • Estadísticas, tendencias y controles de calidad del código
  • Trazas de pila de procesos y subprocesos
  • Cambios que dan lugar a compilaciones defectuosas

De este modo, podrá detectar rápidamente los problemas de las compilaciones, saber qué hay que corregir y ofrecer nuevas funcionalidades con mayor rapidez y calidad.

Funcionalidades esenciales de TeamCity para la integración con Docker

Ejecutor de builds de Docker

El ejecutor de compilaciones de Docker le permite añadir pasos de compilación que ejecutan comandos Docker. Es particularmente útil si necesita personalizar dinámicamente los argumentos de Docker. Por ejemplo, puede ejecutar compilaciones en una versión específica de un sistema operativo que se definió anteriormente en el proceso. También permite a TeamCity limpiar automáticamente la caché local de imágenes Docker en los agentes de compilación, asegurándose de que estén listos para compilaciones posteriores.

Para obtener más detalles, consulte la sección Docker Runner de nuestra documentación.

Docker Wrapper

Docker Wrapper le permite ejecutar un paso de compilación de TeamCity en un contenedor Docker independientemente del sistema operativo host, proporcionando resultados consistentes y reproducibles. TeamCity realiza un seguimiento de todos los eventos que ocurren durante la compilación y le proporciona informes en tiempo real, análisis de pruebas y otras funciones inteligentes, como trazas de pila desde el contenedor Docker.

Para obtener más detalles, consulte la sección Docker Wrapper de nuestra documentación.

Ejecutor de builds de Docker Compose

El ejecutor de compilaciones de Docker Compose se utiliza para iniciar contenedores Docker al principio de una compilación y asegurarse de que TeamCity los cierra después de que la compilación se haya completado o detenido. Su principal uso es la ejecución de pruebas de integración en las que los componentes están en contenedores y su ejecución se puede describir mediante archivos Docker Compose. Por ejemplo, el propio TeamCity se prueba frente a varias versiones de diferentes bases de datos que pueden funcionar como su backend, y las respectivas pruebas de integración se ejecutan con el uso del ejecutor de compilación de Docker Compose.

Para obtener más detalles, consulte la sección Docker Compose Runner de nuestra documentación.

Funcionalidad de compilación de Docker Support

La funcionalidad de compilación de Docker Support se utiliza para gestionar el acceso a los registros Docker. Si se configura a nivel de proyecto, admite todos los servicios populares, incluyendo Docker Hub, Amazon ECR, JFrog Container Registry y otros, lo que permite que diferentes funcionalidades de TeamCity trabajen con ellos. Por ejemplo, cuando la limpieza del servidor elimina los datos asociados con una compilación obsoleta, se puede configurar para eliminar las imágenes Docker publicadas como parte de esa compilación.

Para obtener más detalles, consulte la sección Docker Support de nuestra documentación.

Caso práctico: cómo Docker y la integración continua pueden acelerar los flujos de trabajo de desarrollo

Digamos que ha implementado un servicio backend que se compila y ejecuta en su propio ordenador. Incluso si no planea usarlo fuera de su entorno local, hay muchas cosas que pueden cambiar con el tiempo: el sistema operativo, las herramientas de compilación, o las bibliotecas de terceros, entre otros. Mantener un entorno totalmente estático en una máquina local es imposible en la práctica; tarde o temprano algo fallará.

Con Docker y TeamCity, puede hacer que sus compilaciones sean totalmente reproducibles y evitar la molestia de gestionar dependencias y corregir errores de compatibilidad. Un proceso de CI/CD para un proyecto Java con Maven podría tener este aspecto:

TeamCity le proporciona informes en tiempo real sobre sus builds y pruebas, desde el momento en que las confirma en el VCS hasta que obtiene los resultados, lo que permite el bucle de comentarios más rápido posible. Es compatible con proyectos de cualquier complejidad y escala, y ayuda a su equipo a minimizar los errores, incorporar funcionalidades más rápido, y establecer un proceso de desarrollo más transparente.

Puede configurar procesos de CI/CD sin escribir código mediante una sencilla interfaz de usuario web. También puede configurarlos mediante programación utilizando Kotlin e implementar una configuración de integración continua mantenible y reproducible que pueda combinar varios lenguajes de programación, sistemas operativos y plataformas en la nube.

Preguntas frecuentes: CI/CD con Docker y TeamCity

¿Qué sistemas operativos son compatibles con la integración de TeamCity y Docker?

TeamCity puede trabajar con Docker en cualquier plataforma que admita un tiempo de ejecución de Docker, incluidos Linux, Windows y macOS.

¿Puede TeamCity crear imágenes de Docker?

Sí, además de ejecutar compilaciones en contenedores Docker, TeamCity puede crear imágenes Docker, hacer push a registros Docker, y borrarlas basándose en varios criterios.

¿Es TeamCity gratuito?

Sí, TeamCity On-Premises es gratuito para proyectos pequeños, y no tiene limitaciones en el número de usuarios ni en el tiempo de compilación. TeamCity Cloud ofrece un periodo de prueba gratuito de 14 días. Ambas versiones son totalmente compatibles con Docker.

¿Ejecuta TeamCity builds en un contenedor Docker?

Con TeamCity, puede elegir entre ejecutar las compilaciones directamente en su máquina o ejecutarlas utilizando contenedores Docker.