Integração Contínua com o TeamCity e o Docker

O TeamCity permite que você automatize o CI/CD em projetos de qualquer tamanho enquanto usa o Docker em cada etapa do seu pipeline.

Crie em um ambiente do Docker

Você já ficou frustrado ao descobrir que o código que você depurou na sua própria máquina não funcionou em outros ambientes? O TeamCity permite que você execute builds e testes no Docker, garantindo que o seu aplicativo não fique amarrado ao seu sistema específico e funcione corretamente em outras máquinas, desde uma máquina de controle de qualidade até uma instância de produção na nuvem.

Crie e gerencie imagens do Docker em escala

Procurando uma maneira de montar uma infraestrutura escalável e passível de manutenção para CI/CD? Com o TeamCity, você pode personalizar comandos do Docker com parâmetros de build, usar modelos para configurar pipelines centralizados e automatizar a limpeza de agentes de build e registros do Docker a partir de imagens obsoletas do Docker.

Execute testes de integração em serviços dentro de containers

Você precisa testar como diferentes componentes do aplicativo funcionam juntos ou testar o seu aplicativo em um ambiente específico? O TeamCity inicializa containers do Docker, executa testes de integração e os encerra de forma segura ao final do processo, de forma altamente confiável e reproduzível.

Integração do Docker em pipelines de CI/CD

O TeamCity dá suporte e pode acelerar todos os workflows de desenvolvimento de software que usem o Docker. Enquanto outras ferramentas de CI/CD apenas lhe dão informações binárias sobre os resultados dos builds (isto é, se tiveram ou não sucesso), o TeamCity se integra profundamente ao Docker, dando a você informações abrangentes sobre os seus pipelines, incluindo:

  • Logs de builds e resultados de testes em tempo real
  • Estatísticas, tendências e verificações de qualidade do código
  • Rastreios da pilha de processos e threads
  • Alterações que resultam em builds falhados

Como resultado, você pode rapidamente encontrar problemas com suas builds, entender o que precisa ser corrigido e entregar novos recursos mais rapidamente e com melhor qualidade.

Recursos Principais do TeamCity para Integração com o Docker

Docker Build Runner

O executor de builds do Docker permite que você adicione etapas de build que executam comandos do Docker. Isso é especialmente útil se você precisar personalizar argumentos do Docker de forma dinâmica. Por exemplo, você pode executar builds sob uma versão específica de um sistema operacional definido anteriormente no pipeline. O executor também permite que o TeamCity limpe automaticamente o cache local das imagens do Docker nos agentes de build, garantindo que eles estejam prontos para novas builds.

Para mais detalhes, veja a seção Docker Runner da nossa documentação.

Docker Wrapper

O Docker Wrapper permite que você execute uma etapa de build do TeamCity em um container do Docker, independentemente do sistema operacional usado como host, entregando resultados consistentes e reproduzíveis. O TeamCity rastreia todos os eventos que acontecerem durante o build e dá a você relatórios em tempo real, análise de testes e outros recursos inteligentes, como rastreamento de pilhas de dentro do container do Docker.

Para mais detalhes, veja a seção Docker Wrapper da nossa documentação.

Docker Compose Build Runner

O executor de build do Docker Compose é usado para inicializar containers do Docker no início de um build e garantir que o TeamCity os encerre depois que o build terminar ou for interrompido. Sua utilidade primária é executar testes de integração nos quais os componentes estejam em containers e sua execução possa ser descrita usando arquivos do Docker Compose. Por exemplo, o próprio TeamCity é testado com várias versões de diferentes bancos de dados funcionando como back-end. Os testes de integração correspondentes são executados através do executor de build do Docker Compose.

Para mais detalhes, veja a seção Docker Compose Runner da nossa documentação.

Recurso de Build Docker Support

O recurso de build Docker Support é usado para gerenciar o acesso a registros do Docker. Esse recurso é configurado no nível de projeto e tem suporte a todos os serviços mais populares, incluindo Docker Hub, Amazon ECR, JFrog Container Registry e outros, permitindo que diferentes recursos do TeamCity funcionem com esses serviços. Por exemplo, quando uma limpeza de servidor apaga dados associados a uma build desatualizada, a limpeza pode ser configurada para remover as imagens do Docker publicadas como partes daquela build.

Para mais detalhes, veja a seção Docker Support da nossa documentação.

Caso de uso: como o Docker e a integração contínua podem acelerar workflows de desenvolvimento

Digamos que você tenha implementado um serviço de back-end que faz builds e é executado no seu próprio computador. Mesmo se você não tiver planos de usá-lo fora do seu ambiente local, ainda haverá muitas coisas que podem mudar com o tempo: o sistema operacional, as ferramentas de build, bibliotecas de terceiros, etc. Na prática, manter um ambiente completamente estático em uma máquina local é algo impossível de se conseguir; mais cedo ou mais tarde, algo vai parar de funcionar.

Com o Docker e o TeamCity, você pode tornar seus builds totalmente reproduzíveis e evitar o aborrecimento de gerenciar dependências e corrigir erros de compatibilidade. Um pipeline de CI/CD para um projeto de Java com Maven poderia ser assim:

O TeamCity fornece relatórios em tempo real sobre builds e testes, desde o momento em que você faz o commit para o VCS até aquele em que você obtém os resultados, possibilitando o mais rápido loop de feedback possível. Ele dá suporte a projetos de qualquer complexidade e escala, e ajuda a sua equipe a minimizar os bugs, entregar recursos mais rapidamente e estabelecer um processo de desenvolvimento mais transparente.

Você pode configurar pipelines de CI/CD sem escrever nenhum código, usando uma simples interface Web. Você também pode configurá-los através de uma programação em Kotlin e implementar uma configuração de CI que seja reproduzível e passível de manutenção e que possa combinar várias linguagens de programação, sistemas operacionais e plataformas de nuvem.

FAQ: CI/CD com o Docker e o TeamCity

Quais sistemas operacionais têm suporte na integração entre o TeamCity e o Docker?

O TeamCity pode funcionar com o Docker em qualquer plataforma que tenha suporte ao runtime do Docker, incluindo Linux, Windows e macOS.

O TeamCity pode criar imagens do Docker?

Sim, além de executar builds em containers do Docker, o TeamCity também pode criar imagens do Docker, fazer push delas a registros do Docker e apagá-las com base em vários critérios.

O TeamCity é gratuito?

Sim, o TeamCity On-Premises é gratuito para projetos pequenos e não tem limites de número de usuários ou tempo de build. O TeamCity Cloud oferece um período de avaliação gratuita de 14 dias. Ambas as versões têm suporte a todos os recursos do Docker.

O TeamCity executa builds em containers do Docker?

Com o TeamCity, você pode escolher entre executar builds diretamente na sua máquina e executá-los usando containers do Docker.