| 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). |