====== Ambiente de desenvolvimento Pentaho ======
===== Visão Geral =====
{{ :pres:gerti:infraestrutura_de_ti:pentaho:arquiteturapentaho.png?800 |}}
===== Servidor de Produção =====
Servidor dedicado ao publicação de componentes BI.
Acesso via endereço https://relatorios.tce.go.gov.br.
===== Servidor de Desenvolvimento =====
Servidor dedicado ao desenvolvimento de componentes BI.
Acesso via endereço https://devbi.tce.go.gov.br.
===== Servidor de Integração =====
Servidor dedicado à integração e execução de cargas ETL de modo automatizado.
==== Gerenciamento das versões das cargas ====
Foi utilizado o software livre Colabnet CSVN, uma interface web para gestão de repositórios Subversion.
Detalhes da configuração do CSVN estão descritos em [[:pres:gerti:infraestrutura_de_ti:pentaho:Subversion Edge SVN Server |]] .
==== Ambiente de Integração ====
Foi utilizado o software livre Jenkins. Para informações sobre a instalação e configuração, veja artigo [[pres:gerti:infraestrutura_de_ti:jenkins:instalacao_jenkins]].
=== Criando Projeto ===
Como exemplo, vamos criar o projeto de construção //RelatorioGeral_PROD.//.
* Na aba //General//:
* Preencher o campo //Project name//. Esse nome deve ser único no sistema, pois será criado um diretório no workspace do Jenkins com esse nome.
* Para limpar periodicamente o workspace, marcar a opção //Discard old builds//. Em //Strategy// marcar a opção //Log Rotation//. Em //Max # of builds to keep// informar o número máximo de builds que serão mantidos.
{{:pres:gerti:infraestrutura_de_ti:jenkins_01.png?800|}}
* Na aba //Source Code Management//:
* Informar os dados do repositório SVN onde estão guardados os arquivos das cargas. Em //Repository URL// colocar exatamente o endereço o repositório.
* Em //Credentials// informar um usuário com acesso ao repositório. O Jenkins permite cadastrar diversas credenciais.
* Em //Check-out Strategy// marcar a opção //Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update'// para baixar apenas arquivos necessários.
{{:pres:gerti:infraestrutura_de_ti:jenkins_source_code_management.png?800|}}
* Na aba //Build Triggers//:
* marcar a opção //Build periodically// e informar //Schedule// quando a construção será realizada. Essa escrita segue o padrão do CRON do Linux.
{{:pres:gerti:infraestrutura_de_ti:jenkins_buildtriggers.png?800|}}
* Na aba //Build Environment//:
* Marcar a opção //Delete workspace before build starts// para limpar o worspace do Jenkins antes de fazer um novo build.
{{:pres:gerti:infraestrutura_de_ti:jenkins_buildenvironment.png?800|}}
* Na aba //Build//:
* Criar um //Build Step// do tipo //Execute shell// com o seguinte conteúdo:
*
#Nome do repositorio PDI
export REPOSITORIO=RelatorioGeral
#Nome do arquivo principal do Job, sem extensao
export JOB=Job_Carga_DW
#Path do repositorio. Normalmente o proprio Worspace da Build no Jenkins
export PATHREPOSITORIO=$WORKSPACE
#Executar scripts internos da transformacao
bash /pentaho/scripts/executarjob.sh
{{:pres:gerti:infraestrutura_de_ti:jenkins_build.png?800|}}
=== Script de execução do Projeto PDI ===
Esse script fica salvo em **/pentaho/scripts/executarjob.sh**. Necessário dar permissão de execução para o usuário //jenkins//.
#!/bin/bash
##########################################################################################################################
## @Nome: executarjob.sh ##
## @Autor: Mauricio Barros ##
## @Data: Jan/2017 ##
## @Objetivo: a partir de uma chamada jenkins, criar arquivo de execução de job do PDI ##
## @Variaveis: 1. $REPOSITORIO: nome do repositorio PDI; 2. $PATHREPOSITORIO: Path do repositorio na maquina local ##
## @Algoritmo: 1. Criar arquivo xml "~/.kettle/repositories.xml" com configuracao do repositorio. ##
## 2. Criar arquivo executavel "~/.kettle/executar.sh" contendo a chamada para o programa PDI Kitchen ##
## 3. Executar arquivo "~/.kettle/executar.sh" ##
##########################################################################################################################
echo "
KettleFileRepository
$REPOSITORIO
$REPOSITORIO
$PATHREPOSITORIO
N
N
" > ~/.kettle/repositories.xml
echo "/opt/pdi/pdi-7/kitchen.sh -rep:$REPOSITORIO -job:$JOB -file:$PATHREPOSITORIO$JOB.kjb" > ~/.kettle/executar.sh
bash ~/.kettle/executar.sh