Como usar executores específicos para turbinar seus builds

O TeamCity reúne vários recursos que vão turbinar seus builds. Neste tutorial, vamos explorar como usar executores específicos e por que é interessante usá-los.

O que é um executor de build e quais tipos de executor estão disponíveis no TeamCity?

O executor de build é uma parte do TeamCity que permite a integração com uma ferramenta de build específica (Ant, MSBuild, linha de comando e assim por diante). Um executor de build fornece configurações que permitem especificar quais tarefas de build devem ser executadas, qual versão da ferramenta de build deve ser usada, qual imagem do Docker/Linux deve ser usada como container e assim por diante. Em uma configuração de build, um executor de build define como executar um build e relatar seus resultados. O TeamCity oferece muitos executores de build prontos para uso, incluindo .NET, Maven, Gradle, Docker, Python, Node.js e muitos outros.

Vamos abrir e editar uma configuração de build. Aqui, temos uma etapa de build: uma etapa de build em linha de comando. O script lida com os seguintes comandos:

  • Faz cd para um diretório calculator-service.
  • Executa mvn clean package.
  • Carrega o arquivo .jar em um bucket privado do S3.
tutorials-img

Aqui, vamos nos livrar da etapa mvn clean package e usar os recursos do Maven específicos do TeamCity para isso. Podemos simplesmente remover a linha no script personalizado e clicar em Save:

tutorials-img

Adicionando uma nova etapa de build

Depois disso, vamos adicionar uma nova etapa de build. O TeamCity sugerirá a escolha de um executor específico:

tutorials-img

Para cada tecnologia com a qual o TeamCity se integra, você pode encontrar um executor específico. Por exemplo, se você deseja compilar projetos .NET, deve escolher um executor .NET. Se quiser executar scripts de linha de comando, você usará um executor de linha de comando. Da mesma forma, você usaria um executor do Docker para etapas específicas do Docker, um executor do Gradle para projetos do Gradle e assim por diante.

Você pode encontrar a lista completa dos executores de build do TeamCity na documentação.

Como estamos trabalhando com um projeto Maven, vamos escolher Maven na lista suspensa. Depois disso, vamos preencher alguns campos que o TeamCity sugere nessa etapa.

tutorials-img

Nosso arquivo pom.xml está no diretório calculator-service, então vamos escolher a pasta correta clicando no ícone de árvore. Como você tem uma bela visualização em árvore de todos os diretórios, você não precisa digitar o nome do diretório (e evita cometer erros de ortografia). Basta selecionar o diretório na lista.

Você pode executar a etapa mvn clean package dentro de um container do Docker, fornecendo um nome de imagem do Docker do hub do Docker, por exemplo, maven:latest. O TeamCity buscará essa imagem, iniciará transparentemente um container do Docker a partir dela, executará seu mvn clean package dentro dela e, em seguida, descartará o container.

tutorials-img

Escolhendo um executor de cobertura

Para continuar com a configuração manual de etapas de build, clique neste link:

tutorials-img

No TeamCity, é possível escolher um executor de cobertura específico. Por exemplo, você pode adicionar os executores de cobertura de código IntelliJ IDEA ou JaCoCo, em vez de escrever tudo diretamente dentro do seu arquivo pom.xml.

Vamos adicionar com.jetbrains.teamcity.* como um nome de padrão de pacote. O TeamCity analisará os pacotes cujos nomes correspondem a esse padrão para cobertura de código.

tutorials-img

O TeamCity também permite configurar opções avançadas. Por exemplo, você pode escolher diferentes versões do projeto Maven ou selecionar uma versão Java específica para executar todo o projeto.

tutorials-img

Com todas essas opções de UI, você não precisa se preocupar se a invocação da linha de comando vai funcionar ou não. O TeamCity cuidará disso para você.

Agora, temos o script de linha de comando em execução e a etapa do Maven que vem depois. Queremos reordenar nossas etapas de build para que mvn clean package seja executado primeiro, seguido depois pelo upload para o S3 em linha de comando.

tutorials-img

Depois disso, basta clicar em Run, e tudo deve funcionar conforme o esperado.

O que o executor Maven nos permite fazer?

Concluída a execução do build, você pode acessar a página de visão geral do build. Aqui, você verá novas abas, como Maven Build Info e Code Coverage, bem como uma nova seção para resultados em Tests e Code Coverage.

tutorials-img

Informações de build do Maven

Na página Maven build info, você terá uma visão geral de quais metas você executou com qual versão específica do Maven. Você também verá os artefatos produzidos, como o arquivo .jar que o Maven produziu.

O relatório também mostra todas as dependências específicas com suas versões que o Maven extraiu para esse build específico. Isso fornece uma visão geral das bibliotecas incluídas no seu build. Também é útil para fins de depuração.

Você também verá todos os plug-ins do Maven eficazes que foram ativados durante esse build.

tutorials-img

Página de visão geral do teste

A página de visão geral dos testes, que você obtém gratuitamente usando o executor Maven, fornece muitas informações úteis. Aqui está o que você pode ver no relatório:

  • Status geral dos testes (sucesso, falha, instável etc.)
  • Classes de teste e métodos executados
  • Durações dos testes
  • A ordem em que os testes foram executados

Cada teste também possui um histórico que fornece todas as informações essenciais sobre o teste. O histórico de testes é útil quando você precisa investigar problemas que possam surgir com os testes, como "Por que esse teste de repente está demorando mais? É um teste instável?", e outros semelhantes.

Cobrimos relatórios de testes detalhadamente neste vídeo.

Relatório de cobertura de código

O relatório de cobertura de código nos fornece informações sobre as classes e métodos utilizados, bem como a porcentagem de código coberto pelos testes.

Tudo o que você precisa fazer é selecionar algumas opções suspensas no executor de cobertura de código do IntelliJ IDEA para obter todos esses relatórios na UI do TeamCity.

tutorials-img

Isso é tudo por enquanto! Assista a outros tutoriais para saber como usar os recursos específicos do TeamCity, como relatórios de teste ou de cobertura de código.

Bons builds!