Fala pessoal, beleza?
Espero que estejam todos bem!
Conforme meu post sobre Jenkins e pipeline para deploy de uma aplicação, vamos para segunda parte.
A primeira parte foi apenas para instalação e a segunda agora é para criação e uso de um pipeline.
Vamos definir pipeline como uma sequência de instruções que serão executadas até finalizar e prover uma entrega.
Nosso cenário será o seguinte:
- Um servidor com o Jenkins instalado e configurado (feito no posto anterior)
- Um servidor com linux instalado onde iremos subir um pacote de uma aplicação java que ao final do deploy nos dará uma ferramenta de monitoração
- Chave SSH entre o servidor do Jenkins e o servidor onde a aplicação será instalada
- Pipeline com as instruções para cada passo que iremos definir no processo de deploy (cópia de arquivos, descompactação, ajuste de parâmetros, criação de serviços, start
Uma observação importante: Eu não sou um expert e nem estou falando que este modelo de pipeline que estou propondo é o melhor e que não podemos fazer de outra forma. Essa foi uma forma que achei para ajudar em uma necessidade do meu dia-a-dia, OK? Cada um deve avaliar a melhor forma de usar a estrutura de funcionalidade e adaptar para o seu uso.
Agora vamos a criação do pipeline na console do Jenkins.
Para isso clicar em New Job - Insira um nome - Clique em pipeline - OK
pipeline {
agent none
environment {
IP = "xx.xx.xx.xx"
}
stages {
stage ('Copia o pacote da aplicacao para o servidor') {
agent any
steps {
sh '''#!/bin/bash
scp /home/jenkins/repoapp/mon-java.tar.gz root@$IP:/opt
'''
}
}
stage ('SSH + desccompacta pacote do aplicacao') {
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
tar xzvf /opt/mon-java.tar.gz -C /opt
exit
EOF
'''
}
}
stage ('Adiciona usuario banco Postgres e muda permissao do data e tmp'){
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
useradd -m -d /opt/ManageEngine/OpManager/pgsql/ postgres
chown -R postgres:postgres /opt/ManageEngine/OpManager/pgsql/tmp/
chown -R postgres:postgres /opt/ManageEngine/OpManager/pgsql/data/
exit
EOF
'''
}
}
stage ('Cria o serviço e incia a aplicacao'){
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
cd /opt/ManageEngine/OpManager/bin/
./linkAsService.sh
systemctl daemon-reload
systemctl start OpManager.service
exit 0
EOF
'''
}
}
stage ('Alguns tunings na aplicacao'){
agent any
steps {
sh '''#!/bin/bash
ssh -o StrictHostKeyChecking=no root@$IP << EOF
sed -i 's/wrapper.java.initmemory=512/wrapper.java.initmemory=600/g' /opt/ManageEngine/OpManager/conf/wrapper.conf
sed -i 's/wrapper.java.maxmemory=1024/wrapper.java.maxmemory=1500/g' /opt/ManageEngine/OpManager/conf/wrapper.conf
sed -i 's/24MB/1024MB/g' /opt/ManageEngine/OpManager/pgsql/data/postgres_ext.conf
sleep 4m
exit
EOF
'''
}
}
}
}
Grande Joao! Legal o artigo sobre o pipeline e que bom que voce nesta pegada! :)
ResponderExcluirAbs
Top o post Mestre. Essa ideia , acho que amadureceu na operação, quando pediam vários deploy nas Dockers numa sexta-feira kkkkkkkk . Parabéns Guerreiro
ResponderExcluirTop o post Mestre. Essa ideia , acho que amadureceu na operação, quando pediam vários deploy nas Dockers numa sexta-feira kkkkkkkk . Parabéns Guerreiro
ResponderExcluir