wiki:programmersguide/jenkins

Version 27 (modified by raphael.costa, 10 years ago) (diff)

--

TerraMA² - Jenkins Configuration

Autor: Paulo R. M. Oliveira, Flaverton Rosa, Gilberto Ribeiro de Queiroz

Data: 06/10/2015

Resumo: Este documento apresenta como configurar o ​Jenkins para executar tarefas de build da TerraLib/TerraView e do TerraMA².

Integração Continua

"Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho com certa frequência, podendo ocorrer diariamente ou até mesmo várias vezes ao dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução dos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler

Quais os benefícios de fazer integração continua?

Basicamente, a grande vantagem da integração contínua está no feedback instantâneo. Isso funciona da seguinte forma: a cada commit no repositório, o build é feito automaticamente, com todos os testes sendo executados de forma automática e falhas sendo detectadas. Se algum commit causar uma erro compilação ou quebrar qualquer um dos testes, a equipe toma conhecimento instantaneamente (ex: através de e-mail). A equipe pode então corrigir o problema o mais rápido possível, o que é fundamental para não introduzir erros ao criar novas funcionalidades, refatorar, etc.

Integração contínua é mais uma forma de trazer segurança em relação a mudanças: você pode fazer modificações sem medo, pois será avisado caso algo saia do esperado.

O que é o Jenkins

O ​Jenkins é uma ferramenta de integração contínua, que fornece um ambiente de execução de jobs pré-definidos com o objetivo de simplificar e automatizar o workflow de desenvolvimento de sistemas.

O Jenkins pode ser utilizado para:

  • Análise de Código;
  • Realização do processo de build do código de um sistema;
  • Execução dos testes;
  • Geração de instaladores e pacotes;
  • Deploy.

Instalacão do Jenkins no Linux Ubuntu 14.04

Instalação e Configuração da Instância Master

Baixar a chave do repositório Jenkins:

$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

Adicionar ao arquivo /etc/apt/sources.list a URL do repositório:

$ echo "deb http://pkg.jenkins-ci.org/debian binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list

Fazer a instalação do pacote Jenkins:

$ sudo apt-get update && sudo apt-get install jenkins

Agora, o Jenkins já deverá estar funcional e disponível para acesso no navegador. Basta digitar o seguinte endereço no seu navegador:

http://localhost:8080

Se tudo estiver funcionando corretamente, instale os seguintes plugins:

  • Git Plugin: (id: git).
  • CMake Builder Plugin: (id: cmake).
  • MSBuild Plugin: para o build em ambientes Microsoft Windows com Visual C++ (id: msbuild).
  • Condicional BuildStep Plugin: para execução de jobs em mais de um tipo de sistema operacional (id: conditional-step).
  • GitHub pull request builder plugin: para disparar a compilação para um pull request do GitHub (id: ghprb).

Para instalar um plugin siga os seguintes passos na interface gráfica principal do Jenkins no seu navegador:

  1. Escolha a opção Gerenciar Jenkins (ou Manage Jenkins);
  2. Entre na opção Gerenciar Plugins (ou Manage Plugins);
  3. Selecione a aba Disponíveis (ou Available);
  4. Selecione os plugins listados acima. Para facilitar a busca, utilize a opção de filtro (filter) para localizar esses plugins;
  5. Finalmente, escolha a opção Baixar, Instalar e Reiniciar.

Instalação e Configuração de Instâncias Slaves

Para configurar uma máquina (virtual ou física) como slave, você deverá instalar as ferramentas necessárias para a compilação do TerraMA2. Preparamos um bash script para a compilação e instalação das dependências no Linux Ubunutu 14.04. Este script pode ser encontrado no código fonte do TerraMA² na pasta install.

Siga os seguintes passos:

  1. Baixe o pacote de dependências utilizado pela equipe de desenvolvimento: terrama2-3rdparty-linux-ubuntu-14.04.tar.gz .
  1. Copie o script install-3rdparty-linux-ubuntu-14.04.sh da pasta install para a mesma pasta que você baixou o pacote do passo anterior.
  1. Abra a linha de comando e execute o script install-3rdparty-linux-ubuntu-14.04.sh especificando a pasta para instalar as dependências.
$ TERRAMA2_DEPENDENCIES_DIR="/opt/3rdparty" ./install-3rdparty-linux-ubuntu-14.04.sh

Criando um slave Ubuntu

Na interface gráfica da instância mestre em seu navegador, siga os seguintes passos para configurar a instância slave, associando-a a esta instância master:

  • No lado esquerdo do painel, clique em Estado do executor de builds (Build Executor Status).
  • Em seguida, clique em Novo Nó (New Node).
  • Forneça um nome ao slave, por exemplo: ubuntu-14.04.
  • Selecione a opção Slave Burro (Dumb Slave).
  • Clique em Ok.
  • Na opção Descrição (Description) forneça uma breve descrição da instância, por exemplo: “Slave Linux Ubuntu 14.04”.
  • Na opção Número de Executores (# of executor), ajuste o número de processadores desejados, isto é, o número de builds concorrentes para esta instância.
  • Em Diretório root remoto (Remote root directory), preencha com um caminho que será acessível ao usuário configurado mais abaixo, por exemplo /home/jenkins/jenkins-data. Isto fará com que os arquivos de configuração e do workspace sejam armazenados nesta pasta e mantidos em caso de reinicialização.
  • Agrupe slaves utilizando o mesmo Rótulo, por exemplo: ubuntu.
  • Na opção Uso (Usage) selecione Utilize este slave, tanto quanto possível (Utilize this node as much as possible).
  • Na opção Método de lançamento (Launch Method) selecione Launch salve agents on Unix machines via SSH.
  • Na opção Host insira o endereço IP do slave.
  • Em Credentials, clique no botão Add.
  • Na opção Kind selecione Username and password.
  • Na opção Scope selecione Global.
  • Preencha username e password com seus dados para conectar via SSH no slave.
  • Na opção Disponibilidade selecione Manter este slave ligado quanto for possível.
  • Clique em Salvar.

Observação: Se você não deseja que a instância master execute jobs, deverá editar as configurações do master e ajustar o número de executores para zero.


Criando um slave Windows

Pré-requisitos:

Necessário ter instalado os seguintes aplicativos:

  • Visual Studio 2013 (pode ser a versão community)
  • CMake *
  • Git *

Os aplicativos marcados com * devem estar acessíveis pela linha de comando, adicione-os no PATH do sistema.

Baixe o arquivo ​terralib5-3rdparty-msvc-2013-win64.zip com as dependências para compilar a TerraLib/TerraView

Observação:: Para configurar um slave windows é necessário que o slave consiga acessar o Jenkins pela url configurada em: Jenkins -> Gerenciar Jenkins -> Configurar o sistema -> Jenkins Location -> Jenkins URL. A configuração padrão (​http://localhost:8080) não pode ser utilizada neste caso pois ao executar o comando para inicializar o slave, a comunicação com o servidor do Jenkins utiliza esta URL, sendo assim, se esta estiver utilizando localhost o slave não consegue acessar o servidor. Preencha este campo com o IP do servidor do Jenkins.

Na interface gráfica da instância mestre em seu navegador, siga os seguintes passos para configurar a instância slave, associando-a a esta instância master:

  • No lado esquerdo do painel, clique em Estado do executor de builds (Build Executor Status).
  • Em seguida, clique em Novo Nó (New Node).
  • Forneça um nome ao slave, por exemplo: windows-8.
  • Selecione a opção Slave Burro (Dumb Slave).
  • Clique em Ok.
  • Na opção Descrição (Description) forneça uma breve descrição da instância, por exemplo: “Slave Windows 8”.
  • Na opção Número de Executores (# of executor), ajuste o número de processadores desejados, isto é, o número de builds concorrentes para esta instância.
  • Em Diretório root remoto (Remote root directory), preencha com um caminho que será acessível ao usuário configurado mais abaixo, por exemplo C:\users\scidb\jenkins. Isto fará com que os arquivos de configuração e do workspace sejam armazenados nesta pasta e mantidos em caso de reinicialização.
  • Agrupe slaves utilizando o mesmo Rótulo, por exemplo: windows-8.
  • Na opção Uso (Usage) selecione Utilize este slave, tanto quanto possível (Utilize this node as much as possible).
  • Na opção método de lançamento selecione Lançar os agentes slave via JNLP.

Para inicializar a instância do slave windows:

  • Acesse a página inicial do Jenkins no slave windows.
  • No lado esquerdo do painel, no painel Estado do executor de builds clique no item do slave windows.
  • Execute o comando apresentado no item: Executar comando de linha pelo slave.
  • Se o comando for executado com sucesso, aparecerá uma janela com status do Slave como Conected.
  • Nesta janela, adicione a inicialização do slave como um serviço do windows: File -> Install as a service.
  • Será criado um serviço do windows com o nome: Jenkins Slave

Observação: Caso não seja encontrada a instalação do .NET Framework 3.5, deve ocorrer um erro. Instale o .NET Framework 3.5 e execute o comando novamente.