TeamCity — Parte VIII

Configurando servidor TeamCity com Docker

Num post relacionado a instalar Docker (clique aqui para ver), disse que utilizo para criar meus ambientes de desenvolvimento. Podemos criar containers isolados com Nodejs, SQL Server, Redis etc, ou até mesmo um único container contendo todas essas aplicações (eu não gosto muito desta abordagem). Não há dificuldades nenhuma nisso, basta seguir a documentação do container que deseja instalar.

Os containers são processos isolados que executam uma aplicação/serviço com uma única finalidade. Seriam microserviços? 😜 Acabam sendo sim na teoria. O próprio Linux tem aplicativos fazem ações isoladas, mas quando se juntam fazem outro tipo de ação. Exemplo bem básico é o ps e o grep:

ps aux  | grep firefox

Além disso, estou escrevendo sobre TeamCity e nada melhor que criar um container do servidor ou agente Linux usando Docker. Por que não? Então vamos lá.

Container do TeamCity Server

Para que usemos um servidor do TeamCity no Linux, podemos instalar diretamente ou utilizar um container. Mas, o que queremos neste momento é brincar com containers. Para isso inicie sua VM Linux (eu uso VM de Linux, explicado num post) e depois de ter inciado, abra o Putty e faça conexão com ele e depois faça o login no Linux.

Lembra que já temos um serviço do TeamCity rodando na porta 8111? Podemos subir um container então em outra porta, assim teremos um TeamCity no Windows e outro no Linux.

Subindo o container do TeamCity

Vamos digitar o seguinte comando no Linux e pressione enter:

docker run -itd --name teamcity-server -v /docker/teamcity/data:/data/teamcity_server/datadir -v /docker/teamcity/logs:/opt/teamcity/logs -p 8112:8111 jetbrains/teamcity-server

1- Esse comando já faz o download da imagem com a última versão do TeamCity.

2- O parâmetro -v eu digo que a “pasta” que quero guardar os dados que o TeamCity sejam na pasta /docker/teamcity/data no meu Linux. O mesmo se aplica com os logs gerados.

3- E o -p eu estou informado que a porta 8112 será exposta com o meu servidor TeamCity. Essa porta teremos que liberar no VirtualBox. No meu caso está em inglês, mas deve ser Configurações.

  • Clique em SETTINGS > NETWORK > ADVANCED > PORT FORWARDING
  • Adicione as entradas HOST PORT e GUEST PORT o valor 8112.

Feito isso, digite agora docker ps -a e veja se o container subiu. Experimente abrir o seu browser e chamar http://localhost:8112 proceda com as configurações que aprendemos no segundo post sobre o TeamCity.

Como não temos nada configurado: agentes, builds, projetos, notificações, etc, essa será a imagem inicial.

Configurando um Agente Linux

Para configurar um agente Linux é super simples e podemos fazer por uma imagem do Docker e/ou instalar manualmente via arquivo zip.

Via imagem Docker
Usando um container Linux este é um pouco grande 1.04GB, não vale muito a pena para quem precisa de espaço. Porém tem uma outra versão, a minimal, que são 439MB, mas ainda é grande. Você pode ver como funciona neste link aqui.

Instalando de forma manual
Instalando separadamente seria assim (caso não tenha Java instalado por padrão, instale seguindo este link aqui):

1- Faça download o arquivo de agente numa pasta qualquer. Eu escolhi a seguinte: /docker/teamcity/agents/agent01, agente02… A pasta base será /docker/teamcity/agents na raiz do sistema.

Caso não tenha unzip, nano e wget instalado no seu Linux faça o seguinte:
apt-get install wget unzip nano -y

Continuando…

mkdir /docker/teamcity/agents/agent01
cd /docker/teamcity/agents/agent01
wget http://localhost:8112/update/buildAgent.zip
unzip buildAgent.zip
cd conf
nano buildAgent.properties
name=ubuntu-agent01

Salve o arquivo Ctrl+X e depois Y. Agora entre no diretório bin

cd ..
cd bin
./install.sh http://localhost:8112
./agent start

E está feito. Basta entrar no servidor do TeamCity e autorizar o agent:

Fiz uma build para testes. Você poderia fazer a sua também. Essa foram minhas build steps:


Conclusão

Conseguimos subir um container Docker do servidor do TeamCity, instalamos um agente manualmente e não foi tão doloroso.

Além disso, você pode configurar um agente Windows ou Mac, apontando para o servidor do TeamCity que está no Linux. Não há problemas nenhum.

Vale lembrar que o agente instalado no sistema operacional irá executar ações para àquela arquitetura, então não adianta rodar comandos no Windows num agente de Mac ok? Já se for via Docker as coisas mudam de lugar! 😃

Até o próximo post!

Parte IX — Dicas rápidas