Changes between Version 25 and Version 26 of programmersguide/jenkins


Ignore:
Timestamp:
02/15/17 13:59:49 (9 years ago)
Author:
raphael.costa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • programmersguide/jenkins

    v25 v26  
    9393 
    9494---- 
    95 === Criando um slave Ubuntu === 
    96  
    97 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: 
    98  
    99 * No lado esquerdo do painel, clique em '''Estado do executor de builds''' (''Build Executor Status''). 
    100 * Em seguida, clique em '''Novo Nó''' (''New Node''). 
    101 * Forneça um nome ao slave, por exemplo: ''ubuntu-14.04''. 
    102 * Selecione a opção '''Slave Burro''' (''Dumb Slave''). 
    103 * Clique em '''Ok'''. 
    104 * Na opção '''Descrição''' (''Description'') forneça uma breve descrição da instância, por exemplo: “Slave Linux Ubuntu 14.04”. 
    105 * 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. 
    106 * 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. 
    107 * Agrupe slaves utilizando o mesmo ''Rótulo'', por exemplo: ''ubuntu''. 
    108 * Na opção '''Uso''' (''Usage'') selecione '''Utilize este slave''', tanto quanto possível (''Utilize this node as much as possible''). 
    109 * Na opção Método de lançamento (Launch Method) selecione ''Launch salve agents on Unix machines via SSH''. 
    110 * Na opção '''Host''' insira o endereço IP do slave. 
    111 * Em '''Credentials''', clique no botão '''Add'''. 
    112 * Na opção '''Kind''' selecione '''Username''' and '''password'''. 
    113 * Na opção '''Scope''' selecione '''Global'''. 
    114 * Preencha '''username''' e '''password''' com seus dados para conectar via SSH no slave. 
    115 * Na opção '''Disponibilidade''' selecione '''Manter este slave ligado quanto for possível'''. 
    116 * Clique em '''Salvar'''. 
    117  
    118 '''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. 
    119  
    120  
    121 ---- 
    122 === Criando um slave Windows === 
    123  
    124 '''Pré-requisitos''':  
    125  
    126 Necessário ter instalado os seguintes aplicativos: 
    127 * Visual Studio 2013 (pode ser a versão community) 
    128 * CMake * 
    129 * Git * 
    130  
    131 Os aplicativos marcados com * devem estar acessíveis pela linha de comando, adicione-os no PATH do sistema. 
    132  
    133 Baixe o arquivo [http://www.dpi.inpe.br/terralib5-devel/terralib5-3rdparty/gdal-2.0.0/terralib5-3rdparty-msvc-2013-win64.zip terralib5-3rdparty-msvc-2013-win64.zip] com as dependências para compilar a !TerraLib/TerraView 
    134 [[BR]] 
    135  
    136  
    137 '''Observação:''': Para configurar um ''slave'' windows é necessário que o ''slave'' consiga acessar o Jenkins pela url configurada em: 
    138 ''Jenkins -> Gerenciar Jenkins -> Configurar o sistema -> Jenkins Location -> Jenkins URL''. 
    139 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. 
    140  
    141  
    142  
    143 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: 
    144  
    145 * No lado esquerdo do painel, clique em '''Estado do executor de builds''' (''Build Executor Status''). 
    146 * Em seguida, clique em '''Novo Nó''' (''New Node''). 
    147 * Forneça um nome ao slave, por exemplo: ''windows-8''. 
    148 * Selecione a opção '''Slave Burro''' (''Dumb Slave''). 
    149 * Clique em '''Ok'''. 
    150 * Na opção '''Descrição''' (''Description'') forneça uma breve descrição da instância, por exemplo: “Slave Windows 8”. 
    151 * 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. 
    152 * 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. 
    153 * Agrupe slaves utilizando o mesmo ''Rótulo'', por exemplo: ''windows-8''. 
    154 * Na opção '''Uso''' (''Usage'') selecione '''Utilize este slave''', tanto quanto possível (''Utilize this node as much as possible''). 
    155 * Na opção '''método de lançamento''' selecione '''Lançar os agentes slave via JNLP'''. 
    156  
    157  
    158 Para inicializar a instância do slave windows: 
    159 * Acesse a página inicial do Jenkins no ''slave'' windows.  
    160 * No lado esquerdo do painel, no painel '''Estado do executor de builds''' clique no item do slave windows. 
    161 * Execute o comando apresentado no item: ''Executar comando de linha pelo slave''. 
    162 * Se o comando for executado com sucesso, aparecerá uma janela com status do Slave como ''Conected'''. 
    163 * Nesta janela, adicione a inicialização do ''slave'' como um serviço do windows:  ''File -> Install as a service''.  
    164 * Será criado um serviço do windows com o nome: '''Jenkins Slave''' 
    165  
    166 Observação: Caso não seja encontrada a instalação do .NET Framework 3.5, deve ocorrer um erro. 
    167 Instale o .NET Framework 3.5 e execute o comando novamente. 
    168  
    169  
    170 ---- 
    171 === Criando um Job para Build da !TerraLib === 
    172  
    173 Definição de um Job a ser Executado no Slave Linux 
    174 Na interface gráfica principal do Jenkins, no navegador, acessível na instância mestre, siga as instruções abaixo: 
    175  
    176 * Clique em '''Novo Job''' (''New Item''). 
    177 * Preencha o campo '''Nome do Job''' (''Item Name''). Exemplo: terralib-build-linux-ubuntu-14.04. 
    178 * Selecione a opção '''Free-style project'''. 
    179 * Clique em '''OK'''. 
    180 * Informe uma '''Descrição''' (''Description'') para o projeto de build: Build TerraLib and TerraView. Branches: release-5.0, develop 
    181 * Selecione '''Descartar Builds Antigos''' (''Discard Old Builds''). 
    182 * Ajuste o '''#Máximo de builds''' (''Max # of builds to keep''). Exemplo: 100. 
    183 * Selecione '''Git''' no tópico Gerenciamento de código fonte. 
    184 * Em '''Repository URL''' aponte para: https://gitlab.dpi.inpe.br/terralib/terralib. 
    185 * Em '''Branches to build''' aponte para o branch correto, como por exemplo: */master. 
    186 * Na opção '''Trigger de Builds''' (''Build Triggers''), escolha a opção '''Poll SCM''' e ajuste uma escala de tempo adequada, por exemplo, consultar o servidor por mudanças uma vez ao dia:  '''Schedule''' : H 8 * * 1-5. Essa estrutura representa que o job será disparado diariamente as 08:00 AM, de segunda a sexta. 
    187 * Na opcao '''Build''' escolha Conditional steps (''multiple'') 
    188 * Em '''Run''' escolha execution node 
    189 * Em '''Execute''' on escolha o slave onde será executado o job, por exemplo: ''ubuntu-14.04'' 
    190 * Em '''Steps to run if condition is met''' 
    191 * Selecione '''CMake Build''' e informe o seguinte: 
    192 * '''Buildscript Generator''': Unix Makefiles. 
    193 * '''Source Directory''': build/cmake 
    194 * '''Build Type''': Release 
    195 * '''Build Directory''': solution 
    196 * Em '''Advanced''' entre com os seguinte argumento para o '''CMake''' (other CMAKE arguments): 
    197 {{{ 
    198 -DCMAKE_BUILD_TYPE:STRING='Release' 
    199 -DCMAKE_PREFIX_PATH:PATH="/home/jenkins/MyLibs;/home/jenkins/MyLibs/lib;/home/jenkins/MyLibs/gdal2;/home/jenkins/MyLibs/pgsql" 
    200 -DTERRALIB_BUILD_EXAMPLES_ENABLED:BOOL=OFF 
    201 -DTERRALIB_BUILD_UNITTEST_ENABLED:BOOL=OFF 
    202 -DTERRALIB_DOXYGEN_ENABLED:BOOL=OFF 
    203 -DTERRALIB_QHELP_ENABLED:BOOL=OFF 
    204 -DTERRALIB_QTRANSLATION_ENABLED:BOOL=OFF 
    205 -DTERRALIB_MOD_BINDING_JAVA_ENABLED:BOOL=OFF 
    206 -DTERRALIB_MOD_BINDING_PYTHON_ENABLED:BOOL=OFF 
    207 -DTERRALIB_MOD_BINDING_LUA_ENABLED:BOOL=OFF 
    208 -DGEOS_INCLUDE_DIR:PATH="/home/jenkins/MyLibs/include/geos" 
    209 -DGNUGETTEXT_INCLUDE_DIR:PATH="/usr/include" 
    210 -DGNUGETTEXT_LIBRARY:FILEPATH='/usr/lib/x86_64-linux-gnu/libgettextpo.so' 
    211 -DGNUICONV_LIBRARY:FILEPATH='/usr/lib/x86_64-linux-gnu/libc.so' 
    212 -DCMAKE_INSTALL_PREFIX="/home/jenkins/Programs/terralib5" 
    213 }}} 
    214 * Adicione dois '''Build Tool Invocations''', uma para o '''make''' e outra para o '''make install''' (neste último caso basta colocar o argumento install). 
    215  
    216  
    217  
    218 ---- 
    219 == Criando um Job para Build do TerraMA2 == 
    220  
    221 Definição de um Job a ser Executado no Slave Linux que será integrado com os Pull Request do !Github. Para isso, será necessário o plugin '''!GitHub Pull Request Builder''' 
    222 Na interface gráfica principal do Jenkins, no navegador, acessível na instância mestre, siga as instruções abaixo: 
    223  
    224 * Clique em '''Novo Job''' (''New Item''). 
    225 * Preencha o campo '''Nome do Job''' (''Item Name''). Exemplo: terrama2-build-linux-ubuntu-14.04. 
    226 * Selecione a opção '''Free-style project'''. 
    227 * Clique em '''OK'''. 
    228 * Informe uma '''Descrição''' (''Description'') para o projeto de build: Build TerraMA2 via Pull requests. 
    229 * Selecione '''Descartar Builds Antigos''' (''Discard Old Builds''). 
    230 * Ajuste o '''#Máximo de builds''' (''Max # of builds to keep''). Exemplo: 10. 
    231 * Selecione '''Git''' no tópico Gerenciamento de código fonte. 
    232 * Em '''Repository URL''' aponte para: https://github.com/TerraMA2/terrama2.git. 
    233 * Em '''Advanced''', adicione '''Name''' coloque '''origin'''; 
    234 * Em '''Refspec''', coloque '''+refs/pull/*:refs/remotes/origin/pr/*'''. Esse mecanismo permite que o Jenkins faça o fetch das mudanças e consiga apontar para o servidor remoto pegando todos os pull requests disponíveis e partir do commit recebido aplicar, o processo de build. 
    235 * Em '''Branches to build''' aponte para o branch correto, como por exemplo: ${sha1}. Como agora o jenkins trabalhará com pull requests, essa variavel (fornecida pelo plugin ghprb) guarda o commit recebido pelo servidor. 
    236 * Na opção '''Trigger de Builds''' (''Build Triggers''), escolha a opção '''GitHub Pull Request Builder''', marque '''Use github hooks for build triggering''' e em seguida selecione '''Advanced'''; 
    237 * Marque a '''Build every pull request automatically without asking''' e em '''Trigger Setup''', adicione '''Commit Status Context''' como '''build'''. Isso é o nome do status que será apresentado na interface do GitHub. 
    238 * Na opcao '''Build''' escolha Conditional steps (''multiple'') 
    239 * Em '''Run''' escolha execution node 
    240 * Em '''Execute''' on escolha o slave onde será executado o job, por exemplo: ''ubuntu-14.04'' 
    241 * Em '''Steps to run if condition is met''' 
    242 * Selecione '''CMake Build''' e informe o seguinte: 
    243 * '''Buildscript Generator''': Unix Makefiles. 
    244 * '''Source Directory''': build/cmake 
    245 * '''Build Type''': Release 
    246 * '''Build Directory''': solution 
    247 * Em '''Advanced''' entre com os seguinte argumento para o '''CMake''' (other CMAKE arguments): 
    248 {{{ 
    249 -DCMAKE_INSTALL_PREFIX:PATH='$WORKSPACE/install/terrama2'  
    250 -DCMAKE_PREFIX_PATH:PATH='/opt/3rdparty;/opt/3rdparty/terralib5;/opt/3rdparty/terralib5/lib/cmake' 
    251 }}} 
    252 * Adicione dois '''Build Tool Invocations''', uma para o '''make''' e outra para o '''make install''' (neste último caso basta colocar o argumento install).