O Jenkins é uma ferramenta de integração contínua de código aberto amplamente utilizada para automatizar processos de compilação, testes e implantação. Com o crescimento do número de servidores e projetos, sua eficiência torna-se evidente ao reduzir tarefas manuais e aumentar a confiabilidade do pipeline de entrega.
Neste cenário, os repositórios são geridos pelo Git e as dependências do projeto são organizadas com o Maven, especialmente em projetos multi-módulo. O objetivo deste guia é demonstrar como configurar um pipeline automatizado no Jenkins para sincronizar mudanças no Git, compilar com Maven e implantar automaticamente em um servidor Tomcat.
1. Instalação do Jenkins
Acesse o site oficial http://jenkins-ci.org/ para baixar a versão mais recente (atualmente 1.629). O pacote principal é um arquivo .war, que pode ser executado diretamente em servidores Java como o Tomcat.
Certifique-se de que o Tomcat está configurado corretamente:
- Verifique se
unpackWARseautoDeployestão habilitados no arquivoserver.xml. - Caso não funcione, considere instalar via pacotes
.debou.rpm, embora seja mais complexo.
2. Instalação de Plugins Essenciais
Copie o arquivo jenkins.war para o diretório webapps do Tomcat e inicie o servidor. Acesse http://SERVER_PATH:8080/jenkins.
Para integrar com Git, é necessário instalar o plugin Git:
- Vá em Manage Jenkins > Manage Plugins.
- Na aba Available, procure por "Git Plugin" na categoria Source Code Management.
- Instale e reinicie o Jenkins após a conclusão.
Plugins como Maven já vêm pré-instalados, mas verifique se estão ativos.
3. Configuração de Ambiente (JDK e Maven)
Acesse Configure System para definir caminhos críticos:
- Configure o caminho do JDK (evite deixar o Jenkins instalar automaticamente — é muito lento).
- Defina o local da instalação do Maven (ex:
/opt/maven). - O diretório raiz do Jenkins é por padrão
~/.jenkins. Altere se necessário.
O caminho padrão para acessar jobs é: http://SERVER_PATH:8080/jenkins/job/{nome_do_job}/
4. Criação de um Job com Git e Maven
Crie um novo job selecionando Maven Project.
No painel de configuração:
- Em Source Code Management, escolha Git e insira o URL do repositório:
https://github.com/bingyue/easy-springmvc-maven - Forneça credenciais de acesso (usuário e token, preferencialmente).
Defina o Build Triggers como "Poll SCM" para verificar mudanças periodicamante, ou use "Build whenever a SNAPSHOT dependency is built".
Na seção Build, defina:
- Root POM:
pom.xml - Goals and options:
clean package(para garantir uma compilação limpa)
Exemplo do pom.xml relevante:
<groupId>springmvc-maven</groupId>
<artifactId>easy-springmvc-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<finalName>easy-springmvc-maven</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0</version>
</plugin>
</plugins>
</build>
5. Automatização de Implantação com Shell Script
Em Post-build Actions, adicione um comando Execute shell para realizar a implantação:
#!/bin/bash
# Parâmetros
TOMCAT_HOME="/usr/local/tomcat2"
APP_NAME="easy-springmvc-maven"
WAR_FILE="easy-springmvc-maven.war"
PORT=8082
WORKSPACE_DIR="/home/bingyue/.jenkins/jobs/jeekins-test/workspace/target"
# Data atual
NOW=$(date +"%Y%m%d%H%M%S")
echo "Execução iniciada às: $NOW"
# Encerrar processo anterior do Tomcat
PID=$(lsof -t -i :$PORT -n | head -1)
if [ ! -z "$PID" ]; then
kill -9 $PID
echo "Processo do Tomcat encerrado (PID: $PID)"
else
echo "Nenhum processo encontrado na porta $PORT"
fi
# Limpar diretórios antigos
rm -f "$TOMCAT_HOME/webapps/$WAR_FILE"
rm -rf "$TOMCAT_HOME/webapps/$APP_NAME"
# Copiar novo WAR
if [ -f "$WORKSPACE_DIR/$WAR_FILE" ]; then
cp "$WORKSPACE_DIR/$WAR_FILE" "$TOMCAT_HOME/webapps/"
echo "Novo WAR copiado para $TOMCAT_HOME/webapps/"
else
echo "Erro: Arquivo $WAR_FILE não encontrado em $WORKSPACE_DIR"
exit 1
fi
# Iniciar Tomcat novamente
export JAVA_HOME="/data/jdk7"
export CATALINA_HOME="$TOMCAT_HOME"
export CATALINA_BASE="$TOMCAT_HOME"
"$TOMCAT_HOME/bin/startup.sh"
echo "Servidor reiniciado com sucesso"
⚠️ Observação: Este script assume um ambiente com dois servidores Tomcat rodando em portas diferentes. Em produção, o Jenkins geralmente executa em um nó central e realiza implantações remotas via SSH ou API.
6. Execução do Build
Acesse o job criado e clique em Build Now. O status aparecerá na interface principal:
- Verde: build bem-sucedido
- Vermelho: falha
Verifique os logs no console para diagnóstico. Após sucesso, o WAR gerado estará disponível em: http://SERVER_PATH:8080/jenkins/job/jeekins-test/ws/target/easy-springmvc-maven.war
Acesse o Tomcat destino (http://localhost:8082/easy-springmvc-maven) para validar a implantação.
7. Problemas Comuns e Soluções
- Erro "Invalid or unreadable WAR file": Indica que o arquivo foi corrompido durante download. Verifique o tamanho do
jenkins.war(~60MB) e rebaixe-o. - Problema de codificação UTF-8 no Tomcat: Erro: *"Your container doesn’t use UTF-8 to decode URLs"*Correção: Edite
server.xmle adicione:
<Connector port="8080" URIEncoding="UTF-8" />
- Falha no envio de e-mails: Erro: *"Could not connect to SMTP host: localhost, port: 25"*Solução: Configure um servidor SMTP externo (como Gmail) nas configurações de email do Jenkins.