Autores: Flaverton R. Rosa e Gilberto Ribeiro de Queiroz
Data: 08 de Julho, 2015
Objetivo: Este tutorial tem por objetivo apresentar a ferramenta Jenkins, como fazer sua instalação e configuração para criação de jobs em nós mestres (master) e escravos (slaves).
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. Trata-se de um fork do projeto Hudson da Oracle, que atualmente encontra-se sob o guarda-chuva da Eclipse Foundation.
O Jenkins pode ser utilizado para:
TODO: incluir parágrafo sobre integração contínua e lista de termos
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:
Para instalar um plugin siga os seguintes passos na interface gráfica principal do Jenkins no seu navegador:
Para configurar uma máquina (virtual ou física) como slave, você deverá instalar as ferramentas necessárias ao build da TerraLib e do TerraView. O comando abaixo instalará todas as ferramentas necessárias ao build:
$ sudo apt-get update && sudo apt-get install ssh build-essential git cmake openjdk-7-jdk
Observação: na máquina slave não será preciso instalar o Jenkins.
Agora você deverá instalar todas as bibliotecas de terceiros requeridas pela TerraLib e pelo TerraView. Abaixo ilustramos como fazer isto apenas para testar o uso do Jenkins:
$ sudo apt-get install libboost1.55-all-dev $ sudo apt-get install qt5-default $ sudo apt-get install qttools5-dev $ sudo apt-get install libqt5svg5-dev $ sudo apt-get install libqt5designer5 $ sudo apt-get install liblog4cxx10-dev $ sudo apt-get install libgdal-dev $ sudo apt-get install libgeos++-dev $ sudo apt-get install libgettextpo-dev $ sudo apt-get install libproj-dev
Os comandos acima encontram-se resumidos em uma única linha da seguinte forma:
$ sudo apt-get install libboost1.55-all-dev qt5-default qttools5-dev libqt5svg5-dev libqt5designer5 liblog4cxx10-dev libgdal-dev libgeos++-dev libgettextpo-dev libproj-dev
Além das bibliotecas acima, você precisará instalar a QWT e a QtPropertyBrowser, conforme explicado na seção de build da TerraLib.
Outra medida importante é desabilitar a verificação via SSL no git para o usuário que se conectará à instancia slave via SSH. Você pode fazer isso da seguinte forma, aplicando para todos os usuários:
$ sudo git config --system http.sslverify false
Ou pode fazer somente para usuário corrente:
$ git config --global http.sslverify false
Dica: Você pode consultar informacoes sobre os pacotes da seguinte forma:
$ apt-cache show libproj0 $ apt-cache search boost | more
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:
/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.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.
Na interface gráfica principal do Jenkins, no navegador, acessível na instância mestre, siga as instruções abaixo:
*/develop
.H/15 * * * *
.-DCMAKE_INSTALL_PREFIX:PATH='/home/scidb/MyInstalls/terralib5' -DCMAKE_PREFIX_PATH:PATH='/usr;/usr/local;/usr/local/qwt-6.1.2' -DTERRALIB_BUILD_EXAMPLES_ENABLED:BOOL=OFF -DTERRALIB_BUILD_UNITTEST_ENABLED:BOOL=OFF -DTERRALIB_DOXYGEN_ENABLED:BOOL=OFF -DTERRALIB_QHELP_ENABLED:BOOL=OFF -DTERRALIB_QTRANSLATION_ENABLED:BOOL=OFF -DGEOS_INCLUDE_DIR:PATH='/usr/include/geos' -DGNUGETTEXT_INCLUDE_DIR:PATH='/usr/include' -DGNUGETTEXT_LIBRARY:FILEPATH='/usr/lib/x86_64-linux-gnu/libgettextpo.so' -DGNUICONV_LIBRARY:FILEPATH='/usr/lib/x86_64-linux-gnu/libc.so'