Teamcity
Introdução
editarTeamCity é uma ferramenta de Integração Contínua (IC) criada pela JetBrains em 2006 que se destaca entre as outras pela facilidade de configuração para aplicações em Java, .NET e outras. A ferramenta está disponível por licença proprietária, ou seja, não é Open Source. Entretanto, a JetBrains disponibiliza uma API, TeamCity Open API, para auxiliar a criação de plugins com funcionalidades próprias. Atualmente, se encontra na versão 10.0.5, 9 de março de 2017, o que significa que a ferramenta ainda está em constante aprimoramento.
A ferramenta é Freemium, ou seja, pode ser utilizada gratuitamente mas caso seja necessário mais funcionalidades, é necessário pagar. Na versão gratuita, é possível criar 20 configurações de build e utilizar 3 agentes de build. É possível então comprar um pacote Build Agent ou licenças empresariais negociáveis.
As principais características da ferramenta são:
- Suporte para Integração Contínua tradicional ou por branches
- Facilidade de configuração de builds para linguagens como Java, .NET ou plataformas mobile
- Adição de funcionalidades, via plugins prontos ou criando novos via a TeamCity Open API
- Suporte amplo, seja pelo fórum da comunidade, pelo registro público de issues ou pela documentação online compreensiva
- Escalabilidade e licenciamento, caso seja necessário o uso de mais Build Agents, é possível obter mais por meio de licenças
O TeamCity suporta os seguintes sistemas de controle de versão :
- Subversion
- Perforce
- CVS
- Borland StarTeam
- IBM Rational ClearCase (Base and UCM)
- Team Foundation Server (2005, 2008, 2010)
- Visual Studio Team Services
- Microsoft Visual SourceSafe
- Git
- Mercurial
- SourceGear Vault
Conceito de Integração Contínua
editarIntegração Contínua (IC) é uma prática de desenvolvimento de software em que vários desenvolvedores enviam mudanças para um repositório compartilhado, onde cada mudança enviada é processada por um build automático, de forma que seja feita uma análise se as novas mudanças se integram bem ao sistema e não foram detectados erros.
Como funciona o TeamCity
editarAntes de entender o funcionamento do TeamCity, é preciso definir alguns termos:
- VCS Root: São o conjunto de configurações do controle de versão, responsáveis por determinar a comunicação entre o TeamCity e o sistema de controle de versão utilizado, como por exemplo o Git.
- Build Trigger: É uma regra interna que inicia uma nova build em certos eventos.
- Build Agent: Uma parte do software que é responsável por executar um processo de build, de forma automatizada. No TeamCity, esse pode ser configurado fisicamente ou virtualmente, com diversos tipos de ambiente e sistema operacional.
- Build Steps: É uma tarefa a ser executada.
- Build Artifacts: São os arquivos produzidos por uma build, como por exemplo um .exe ao executar uma build de um código generalizado em C.
O funcionamento do TeamCity pode ser descrito em 5 etapas simples:
- O servidor do TeamCity detecta uma mudança no VCS Root e então salva essa mudança no banco de dados
- O Build Trigger detecta a mudança no banco de dados e adiciona uma build na fila
- O servidor encontra um Build Agent que está ocioso e então envia uma das builds para ser processada por ele
- O Build Agent executa os Build Steps. Ao mesmo tempo que a build vai sendo realizada, todo o progresso é enviado via mensagens de log, resultados de testes, cobertura de testes, etc, para o servidor. Dessa forma, é possível visualizar o processo em tempo-real.
O build termina, e então o Build Agent envia os Build Artifacts para o servidor.
Instalação do TeamCity
editarPrimeiramente, você pode ter acesso aos downloads das versões para Windows, Linux, macOS e JavaEE por aqui: https://www.jetbrains.com/teamcity/download/
Windows
editar- Execute o arquivo “TeamCity<número da versão>.exe” e siga as instruções do assistente de Configuração do TeamCity. O servidor da Web TeamCity e um agente de compilação serão instalados na mesma máquina.
Obs: Observe que, para fins de produção, é recomendável configurar o servidor e o agente do TeamCity em máquinas separadas.
Durante a instalação, você pode configurar o seguinte:
- Indicar o diretório que o TeamCity será instalado;
- Se o web server e o build agent do TeamCity serão executados como serviços do Windows;
- A porta do servidor: "80" é a porta padrão do TeamCity, que pode já estar sendo utilizada por outra aplicação no sistema, como por exemplo o Skype. Altere a porta do servidor se ela já estiver em uso;
- A porta do agente: "9090" é o padrão para conexões de entrada do servidor. Se a porta já estiver em uso, você deverá que alterar o valor "ownPort" nas propriedades do Build Agent.
Distribuições Linux e macOS X
editar- Verifique se o JRE ou JDK do Oracle Java 1.8 estão instalados. Desde o TeamCity 10.X, o Oracle Java 1.8 JDK é necessário para esta instalação. Abra um terminal de linha de comando e execute o seguinte comando para verificar:
Java -version
- Verifique se a variável de ambiente JAVA_HOME está apontando para o diretório de instalação Java. Execute o seguinte comando no terminal de linha de comando:
Echo $ JAVA_HOME
- Use o pacote TeamCity <número da versão> .tar.gz para instalar manualmente o TeamCity empacotado com o contêiner do servlet Tomcat. É necessário descompactar esse arquivo e executar o conteúdo interno. Obs: Esse arquivo também pode ser utilizado para a instalação no Windows.
Tar xfz TeamCity <número da versão> .tar.gz
- O servidor da Web TeamCity e um agente de compilação serão instalados na mesma máquina.
Obs: Observe que, para fins de produção, é recomendável configurar o servidor e o agente do TeamCity em máquinas separadas.
Iniciando o TeamCity
editarWindows - Como serviço
editarSe o servidor TeamCity estiver instalado como um serviço do Windows, siga o procedimento usual de iniciar e parar serviços do sistema operacional.
Isso pode ser feito da seguinte forma:
- Utilize o atalho "Win+R" para abrir o "Executar" e digite o comando abaixo, seguido de "Enter"
services.msc
- Procure os serviços do TeamCity e habilite/desative conforme sua necessidade
Windows, Linux e macOS
editarPara iniciar / parar o servidor TeamCity e um agente padrão ao mesmo tempo, use o script runAll, fornecido no diretório /bin localizado no diretório em que o TeamCity foi instalado.
Para iniciar o servidor e o build agent padrão, use:
runAll.bat start
Para parar o servidor e o build agent padrão, use:
runAll.bat stop
Acesso à interface Web
editarSe você não alterou a porta padrão (80) durante a instalação, a interface da Web do TeamCity pode ser acessada via "http://localhost/" para versões Windows e "http://localhost:8111/" para versões instaladas descompactando o tar.gz; em um navegador da Web executado na mesma máquina onde o servidor está instalado. Caso a porta não seja a padrão, use "http://localhost:<porta>/".
Para alterar a porta do servidor, vá até o diretório onde o TeamCity está instalado, navegue por /conf/server.xml, altere o número da porta no nó XML <Connector>, por exemplo:
<Connector port = "8111" …
Então, aplique as mudanças e reinicie o servidor caso ele esteja rodando no momento da alteração.
Primeira configuração
editarAo entrar na interface web, provavelmente o TeamCity irá ser configurado pela primeira vez. Verifique os seguintes pontos:
- Revise a localização do Diretório de Dados do TeamCity, onde todas as informações de configuração são armazenadas. Clique em Proceed.
- O TeamCity armazena o histórico de compilação, os usuários, os resultados de compilação e alguns dados de tempo de execução em um banco de dados SQL e permite que você selecione o tipo de banco de dados;
- Por enquanto, mantenha o banco de dados interno padrão (Internal HSQLDB). Clique em Proceed.
Demorará algum tempo para que o TeamCity configure os componentes necessários.
- Na próxima tela, aceite o Contrato de Licença para prosseguir com o lançamento. Clique em Proceed.
- O TeamCity exibe a página Criar conta de administrador. Especifique as credenciais de administrador e clique em Create Account.
Você está conectado ao TeamCity: agora você pode configurar suas configurações de usuário e criar e executar sua primeira compilação.
Ao acessar a interface web do TeamCity, a visão padrão estará em mostrar todos os projetos configurados para aquele servidor. Para criar um projeto, use o link Administration no canto superior direito. Para configurar o primeiro projeto com um repositório do GitHub, siga os passos abaixo:
- Clique em Crate project e então selecione Pointing to GitHub.com repository;
- A página Connections é aberta com o diálogo Add connection. Será necessário prover os parâmetros para registrar o TeamCity no serviço do GitHub. Clique em register TeamCity;
- A página do GitHub é aberta. Será necessário registrar o TeamCity como uma aplicação OAuth no GitHub;
- Entre na sua conta do GitHub. Busque a página de registro de uma nova aplicação OAuth. Será necesário especificar o nome, a URL da home e uma URL de callback. Essas informações estão disponíveis no segundo passo;
- Clique em Register application. A página é atualizada com o Client ID e as informações secretas do cliente para o aplicativo TeamCity.
- Continue configurando a conexão no TeamCity. No diálogo Add connection, especifique o Client ID e o Client secret. Após isso, clique em Save para salvar as informações;
- Agora, será necessário autorizar o TeamCity no VCS, ou seja, autorizar o acesso à sua conta do GitHub. Clique em Sign in to GitHub. Após isso, no GitHub, clique em Authorizate application;
- Agora o TeamCity tem acesso aos repositórios do GitHub. A configuração do novo projeto no TeamCity pode ser continuada. Todos os repositórios disponíveis serão apresentados no campo Choose a repository. Basta começar a digitar o nome do repositório e escolher;
- O TeamCity irá verificar a conexão com o repositório. Caso a conexão seja verificada com sucesso, a página Create Project será aberta. Modifique os nomes dessa página caso deseje e clique em Proceed;
- O TeamCity irá verificar automaticamente o repositório VCS que foi configurado e autodetectar as informações de build. Marque as caixas dos steps desejados e use-os em sua configuração de build;
- Pronto. A configuração entre o TeamCity e o GitHub está feita. Agora é possível iniciar a build e confirgurar outras opções caso seja necessário.
Vantagens
editar- Interface de fácil uso e configuração simples.
- Integração com uma grande variedade de ferramentas e tecnologias, e mais outras caso esteja disponível um plugin para isso.
- Documentação online e suporte amplo
- Criação de plugins próprios utilizando a TeamCity Open API, caso não exista alguma funcionalidade desejada.
Desvantagens
editar- Não é uma ferramenta Open Source, o que pode impactar diretamente na quantidade de plugins disponíveis na comunidade.
- É um Freemium, ou seja, você deve adquirir licenças caso seja necessário utilizá-lo em larga escala.
Referências
- https://confluence.jetbrains.com/display/TCD10/TeamCity+Documentation
- https://www.jetbrains.com/teamcity/buy/#license-type=new-license
- https://confluence.jetbrains.com/display/TCD10/Continuous+Integration+with+TeamCity
- Imagem 1 (Ambientes suportados): https://confluence.jetbrains.com/download/attachments/74844753/TC_spider_July2016.png?version=1&modificationDate=1468920430000&api=v2
- https://confluence.jetbrains.com/display/TCD10/Installation+Quick+Start