Acesse o painel da sua conta

Não tem uma conta? Registrar

Entrar em contato

Visite também nosso site craftxp.com.br

  • img
  • img
  • img
  • img
  • img
  • img

Entre em contato

Jenkins: Pipeline CI/CD Completa para Automação de Entregas Contínuas

Jenkins: Pipeline CI/CD Completa para Automação de Entregas Contínuas

O que é Jenkins e por que usar?

O Jenkins é o servidor de automação open-source mais popular do mercado. Criado originalmente por Kohsuke Kawaguchi em 2011 (como um fork do projeto Hudson), o Jenkins se consolidou como a ferramenta padrão para integração contínua e entrega contínua (CI/CD), com mais de 300.000 instalações ativas no mundo todo.

Diferente de soluções SaaS como GitHub Actions ou GitLab CI, o Jenkins é auto-hospedado, o que significa que você tem controle total sobre a infraestrutura, segurança e customização das suas pipelines. Com seu ecossistema de mais de 1.800 plugins, o Jenkins se integra a praticamente qualquer ferramenta do mercado.

Arquitetura do Jenkins

O Jenkins segue uma arquitetura mestre-agente (master-agent):

  • Master (Controller): gerencia as pipelines, agenda tarefas e expõe a interface web
  • Agents (Nodes): executam os jobs propriamente ditos, distribuindo a carga de trabalho
  • Executors: unidades de processamento dentro de cada agent que rodam os builds em paralelo

Essa arquitetura permite escalar horizontalmente: basta adicionar mais agents para executar mais builds simultaneamente.

Instalação com Docker

A forma mais rápida de começar é via Docker. Crie um arquivo docker-compose.yml:

version: '3.8'

services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins-server
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false

volumes:
  jenkins_home:

Execute com docker compose up -d e acesse http://localhost:8080. A senha inicial pode ser obtida com docker exec jenkins-server cat /var/jenkins_home/secrets/initialAdminPassword.

Criando sua Primeira Pipeline (Jenkinsfile)

O coração do Jenkins moderno é o Jenkinsfile — um arquivo de texto versionado junto com o código que define toda a pipeline de forma declarativa. Veja um exemplo completo:

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Build') {
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }

        stage('Test') {
            steps {
                sh 'npm test'
            }
            post {
                always {
                    junit 'reports/**/*.xml'
                }
            }
        }

        stage('Docker Build & Push') {
            steps {
                script {
                    docker.build("meu-app:${BUILD_NUMBER}")
                    docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
                        docker.image("meu-app:${BUILD_NUMBER}").push()
                    }
                }
            }
        }

        stage('Deploy') {
            when {
                branch 'main'
            }
            steps {
                sh 'kubectl set image deployment/meu-app app=meu-app:${BUILD_NUMBER}'
            }
        }
    }

    post {
        failure {
            emailext(
                subject: "Pipeline falhou: ${env.JOB_NAME} - ${BUILD_NUMBER}",
                to: 'equipe@exemplo.com',
                body: "A pipeline falhou no estágio ${env.STAGE_NAME}"
            )
        }
        success {
            echo 'Pipeline concluída com sucesso!'
        }
    }
}

Pipeline como Código (Pipeline as Code)

O modelo Pipeline as Code é uma das maiores forças do Jenkins. Ao versionar o Jenkinsfile junto com o código fonte, você garante que:

  • Toda branch pode ter seu próprio fluxo de CI/CD
  • O histórico de mudanças na pipeline fica registrado no Git
  • Code review se aplica também à pipeline
  • Reprodução de builds antigos é trivial

Plugins Essenciais

O ecossistema de plugins do Jenkins é vasto. Aqui estão os mais importantes:

  • Blue Ocean: interface visual moderna e intuitiva para pipelines
  • Docker Pipeline: cria e gerencia containers dentro dos estágios
  • GitHub Integration: webhooks, Pull Request builders e checks
  • Kubernetes Plugin: agents dinâmicos rodando como Pods no K8s
  • Credentials Binding: gerenciamento seguro de senhas, tokens e chaves SSH
  • Email Extension: notificações customizadas por e-mail
  • Slack Notification: integração com canais do Slack

Integração Contínua vs Entrega Contínua

Embora Jenkins suporte ambos os conceitos, é importante entender a diferença:

  • CI (Integração Contínua): cada push dispara build e testes automatizados. O objetivo é detectar problemas cedo.
  • CD (Entrega Contínua): após a CI passar, o código é automaticamente preparado para deploy em produção. O deploy pode ser manual ou automático.
  • CD (Implantação Contínua): cada mudança que passa pela CI vai automaticamente para produção, sem intervenção humana.

Melhores Práticas

  1. Diretório único de Jenkinsfiles: mantenha todos os arquivos em uma pasta jenkins/ na raiz do repositório
  2. Use Shared Libraries: evite duplicação de código entre pipelines com bibliotecas compartilhadas em Groovy
  3. Agents efêmeros: prefira agents descartáveis (Docker ou Kubernetes) para evitar contaminação entre builds
  4. Declarativo vs Scripted: prefira a sintaxe declarativa (mais simples e segura) sobre a scriptada
  5. Segregação de credenciais: nunca hardcode tokens ou senhas — use o Credentials Binding plugin
  6. Notificações inteligentes: notifique apenas falhas e recuperações, evitando spam de sucessos
  7. Backup do Jenkins Home: faça backup regular do diretório JENKINS_HOME que contém configurações, builds e credenciais

Jenkins vs Alternativas Modernas

Como Jenkins se compara às alternativas atuais?

Característica Jenkins GitHub Actions GitLab CI
Hospedagem Auto-hospedado SaaS Ambos
Customização Máxima (plugins) Média Alta
Custo Gratuito (open-source) Gratuito com limites Gratuito com limites
Curva de aprendizado Alta Baixa Média
Ecossistema 1.800+ plugins Actions Marketplace Templates integrados

Conclusão

O Jenkins continua sendo uma ferramenta extremamente poderosa para CI/CD, especialmente em cenários corporativos que exigem controle granular, customização profunda e conformidade com políticas de segurança rigorosas. Se você precisa de uma solução madura, testada pelo tempo e com flexibilidade máxima, o Jenkins é a escolha certa.

Para começar, instale com Docker, crie seu primeiro Jenkinsfile declarativo e explore os plugins essenciais. Em pouco tempo você terá pipelines automatizadas que transformam seu fluxo de desenvolvimento.

Craft XP
Craft XP