0Pricing
Docker & DevOps Fundamentals · Aula

Implantação Automatizada com Jenkins

Crie um pipeline de CI/CD no Jenkins para implantar seus contêineres Docker em um ambiente de destino.

Implantação Automatizada com Jenkins é uma aula grátis de Docker & DevOps Fundamentals no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Docker & DevOps Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Docker & DevOps Fundamentals inclui 4 aulas no total.

Introdução à implantação automatizada

Boas-vindas à lição final sobre CI/CD com Jenkins e Docker! Hoje, vamos nos concentrar em automatizar a implantação dos seus contêineres do Docker.

A implantação automatizada é o processo de liberar software para ambientes de produção ou homologação sem intervenção manual. Ela é uma parte essencial da Entrega e da Implantação Contínuas, garantindo velocidade, consistência e confiabilidade.

Implantação Automatizada com Jenkins — ilustração 1

Por que automatizar a implantação?

Implantar aplicativos manualmente pode ser demorado, sujeito a erros e inconsistente. A automação resolve esses desafios:

  • Velocidade: Implante rapidamente novos recursos ou correções.
  • Confiabilidade: Reduza erros humanos com processos padronizados.
  • Consistência: Garanta que toda implantação siga as mesmas etapas.
  • Eficiência: Libere os desenvolvedores para se concentrarem na programação, não nas tarefas de implantação.

Etapas do pipeline de implantação

Um pipeline típico do Jenkins para implantação com Docker envolve várias etapas essenciais:

  • Compilação: Crie a imagem do Docker (abordado nas lições anteriores).
  • Teste: Execute testes automatizados na imagem.
  • Envio: Envie a imagem para um registro do Docker.
  • Implantação: Baixe a imagem do registro e execute-a em um servidor de destino.
  • Verificação: Confirme que a nova implantação está saudável.

Hoje, vamos nos concentrar nas etapas «Implantação» e «Verificação».

Configuração do ambiente de destino

Antes que o Jenkins possa implantar, o servidor de destino precisa estar pronto. Normalmente, isso significa:

  • Docker instalado: O servidor de destino deve ter o Docker Engine instalado.
  • Acesso SSH: O Jenkins precisa de acesso seguro por Shell (SSH) ao servidor de destino.
  • Permissões do usuário: O usuário SSH precisa de permissão para executar comandos do Docker.

Normalmente, gerenciamos as credenciais SSH com segurança dentro do Jenkins.

Credenciais SSH do Jenkins

Para se conectar a um servidor remoto, o Jenkins usa credenciais SSH. Normalmente, elas são pares de nome de usuário SSH e chave privada armazenados com segurança no gerenciador de credenciais do Jenkins.

Ao definir um pipeline, você pode informar ao Jenkins que use essas credenciais em etapas específicas, permitindo que ele execute comandos no seu servidor de destino.

Exemplo básico de script de implantação

Veja um script de shell simples que poderia ser executado em um servidor de destino para atualizar um contêiner do Docker. Ele para o contêiner antigo, remove-o, baixa a nova imagem e a executa.

APP_NAME e IMAGE_NAME seriam passados como variáveis de ambiente.

#!/bin/bash

# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true

# Pull the new Docker image
docker pull ${IMAGE_NAME}

# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}

echo "Deployment of ${APP_NAME} complete!"

Integração com o pipeline do Jenkins

Em um Jenkinsfile, você pode usar o plug-in sshPublisher ou uma etapa sh simples com encaminhamento do agente SSH para executar comandos em um host remoto. Veja como poderia ser uma etapa de implantação usando uma etapa sh básica, supondo que o SSH esteja configurado.

agent { label 'remote-deploy-host' } significa que essa etapa será executada no servidor de destino.

stage('Deploy to Production') {
  agent { label 'remote-deploy-host' } 
  steps {
    withEnv([
      "APP_NAME=my-webapp",
      "IMAGE_NAME=myregistry/my-webapp:latest"
    ]) {
      sh '''
        docker stop ${APP_NAME} || true
        docker rm ${APP_NAME} || true
        docker pull ${IMAGE_NAME}
        docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
        echo "Deployment successful!"
      '''
    }
  }
}

Obtendo atualizações graduais

Para implantações sem tempo de inatividade, simplesmente parar e iniciar não é suficiente. Normalmente, você usaria uma estratégia como:

  • Atualização gradual: Substitua gradualmente os contêineres antigos pelos novos, um por vez, garantindo a disponibilidade do serviço.
  • Implantação azul/verde: Implante a nova versão (verde) ao lado da antiga (azul) e depois alterne o tráfego.

Embora o Jenkins possa orquestrar essas estratégias, ferramentas como Docker Swarm ou Kubernetes oferecem suporte nativo a estratégias mais avançadas.

Verificação da implantação

Após a implantação, é essencial verificar se o aplicativo está funcionando corretamente. Isso pode envolver:

  • Verificações de integridade: Solicitações HTTP GET simples ao endpoint de integridade do aplicativo.
  • Monitoramento de registros: Verifique os registros do contêiner em busca de erros.
  • Testes de integração: Execute um conjunto rápido de testes na versão recém-implantada.

Seu pipeline do Jenkins pode incluir uma etapa «Verificação» para automatizar essas verificações.

Verifique seus conhecimentos

Considere o seguinte trecho de Jenkinsfile para uma etapa de implantação. Qual é a finalidade principal de docker stop ${APP_NAME} || true?

Recapitulação: implantação automatizada

Ótimo trabalho! Você aprendeu a abordar a implantação automatizada com Jenkins e Docker.

  • A implantação automatizada garante liberações rápidas, confiáveis e consistentes.
  • Os ambientes de destino precisam do Docker e de acesso SSH.
  • O Jenkins usa credenciais seguras para se conectar a servidores remotos.
  • Os scripts de implantação normalmente param os contêineres antigos, baixam novas imagens e iniciam contêineres novos.
  • As etapas de verificação são essenciais para confirmar uma implantação bem-sucedida.

Isso conclui nosso curso de CI/CD com Jenkins e Docker. Continue praticando para dominar essas ferramentas poderosas!

Perguntas Frequentes

A aula “Implantação Automatizada com Jenkins” é grátis?

Sim — o texto completo de “Implantação Automatizada com Jenkins” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Docker & DevOps Fundamentals, atualize para CoddyKit PRO. O curso de Docker & DevOps Fundamentals inclui 4 aulas no total.

O que vou aprender em “Implantação Automatizada com Jenkins”?

Crie um pipeline de CI/CD no Jenkins para implantar seus contêineres Docker em um ambiente de destino. Você pratica Docker & DevOps Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Docker & DevOps Fundamentals?

Nenhuma experiência prévia é necessária. Docker & DevOps Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Implantação Automatizada com Jenkins”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Docker & DevOps Fundamentals?

Sim. Cada aula de Docker & DevOps Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Introdução ao Jenkins
  2. Criação de Imagens Docker com Jenkins
  3. Implantação Automatizada com Jenkins
  4. Pipeline do Jenkins como código com Jenkinsfile
← Voltar para Docker & DevOps Fundamentals