Implementando um Pipeline de Desenvolvimento com Jenkins, Gitea e Docker
No mundo do desenvolvimento de software, a automatização de processos é fundamental para garantir a eficiência e a qualidade do produto final. Uma das formas mais eficazes de automatizar o fluxo de trabalho de desenvolvimento é através da implementação de um pipeline de integração contínua e entrega contínua (CI/CD). Neste artigo, vamos explorar como criar um pipeline de desenvolvimento utilizando três ferramentas poderosas: Jenkins, Gitea e Docker.
Introdução ao Pipeline de Desenvolvimento
Um pipeline de desenvolvimento é uma série de etapas automatizadas que transformam o código-fonte em um produto de software pronto para uso. Essas etapas podem incluir compilação, testes, empacotamento e implantação. A automatização desse processo permite que os desenvolvedores se concentrem em escrever código, enquanto o pipeline cuida das tarefas repetitivas e propensas a erros.
Ferramentas Utilizadas
- Jenkins: Uma ferramenta de automação de software de código aberto que permite a integração contínua e a entrega contínua. O Jenkins pode ser estendido com uma vasta gama de plugins para suportar diferentes tecnologias e ambientes.
- Gitea: Um serviço de hospedagem de código-fonte de código aberto, semelhante ao GitHub. Ele permite que os desenvolvedores colaborem em projetos, rastreiem problemas e gerenciem o código-fonte.
- Docker: Uma plataforma de contêinerização que permite aos desenvolvedores empacotar aplicações e suas dependências em um ambiente virtualizado que pode ser executado em qualquer lugar.
Configurando o Ambiente
Antes de começar a configurar o pipeline, é necessário ter as ferramentas instaladas e configuradas. Vamos supor que você já tenha um servidor Linux (como Ubuntu) pronto para uso.
Instalando o Gitea
Para instalar o Gitea, siga os passos abaixo:
- Baixe o arquivo binário do Gitea:
- Extraia o arquivo:
- Mova os arquivos para o diretório desejado:
- Crie um usuário para o Gitea:
- Configure o Gitea para iniciar como um serviço:
- Inicie o serviço do Gitea:
- Habilite o serviço para iniciar na inicialização:
wget https://dl.gitea.io/gitea/1.16.3/gitea-1.16.3-linux-amd64.tar.gz
tar -zxvf gitea-1.16.3-linux-amd64.tar.gz
sudo mv gitea-1.16.3-linux-amd64 /var/gitea
sudo adduser gitea
sudo nano /etc/systemd/system/gitea.service
Adicione o seguinte conteúdo ao arquivo:
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target network.target
[Service]
User=gitea
Group=gitea
WorkingDirectory=/var/gitea
ExecStart=/var/gitea/gitea web
[Install]
WantedBy=multi-user.target
sudo systemctl start gitea
sudo systemctl enable gitea
Instalando o Docker
Para instalar o Docker, siga os passos abaixo:
- Atualize o sistema:
- Instale as dependências necessárias:
- Adicione a chave GPG oficial do Docker:
- Adicione o repositório do Docker ao seu sistema:
- Instale o Docker:
- Verifique se o Docker foi instalado corretamente:
sudo apt update
sudo apt install
ca-certificates
curl
gnupg
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo docker run hello-world
Instalando o Jenkins
Para instalar o Jenkins, siga os passos abaixo:
- Adicione a chave GPG do Jenkins:
- Adicione o repositório do Jenkins:
- Atualize o sistema:
- Instale o Jenkins:
- Inicie o serviço do Jenkins:
- Habilite o serviço para iniciar na inicialização:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ >
/etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins
Configurando o Pipeline
Agora que temos todas as ferramentas instaladas, vamos configurar o pipeline de desenvolvimento.
Configurando o Jenkins
Após a instalação, acesse o Jenkins através do seu navegador em http://seu-servidor:8080
. Siga os passos para completar a configuração inicial.
Instalando Plugins
Para integrar o Jenkins com o Gitea e o Docker, é necessário instalar alguns plugins. Acesse o painel de administração do Jenkins e navegue até “Gerenciar Jenkins” > “Gerenciar Plugins”. Instale os seguintes plugins:
- Gitea Plugin
- Docker Plugin
- Pipeline Plugin
Criando um Novo Pipeline
Clique em “Novo Item”, escolha “Pipeline” e dê um nome ao seu projeto. Em “Definição”, selecione “Pipeline script” e adicione o seguinte script:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://seu-servidor/seu-usuario/seu-repositorio.git'
}
}
stage('Build') {
steps {
sh 'docker build -t seu-servidor/seu-projeto:latest .'
}
}
stage('Test') {
steps {
sh 'docker run seu-servidor/seu-projeto:latest ./run-tests.sh'
}
}
stage('Deploy') {
steps {
sh 'docker push seu-servidor/seu-projeto:latest'
}
}
}
}
Configurando o Gitea
No Gitea, crie um novo repositório para o seu projeto. Em seguida, configure um webhook para notificar o Jenkins sempre que houver uma nova commit.
- Navegue até o seu repositório no Gitea.
- Clique em “Configurações” > “Webhooks”.
- Adicione um novo webhook com a URL
http://seu-servidor:8080/gitea-webhook/
.
Configurando o Docker
Certifique-se de que o Dockerfile e o script de testes estejam configurados corretamente no seu repositório. O Dockerfile deve construir a imagem da sua aplicação, e o script de testes deve executar os testes automatizados.
Executando o Pipeline
Com tudo configurado, faça um commit no seu repositório no Gitea. O webhook notificará o Jenkins, que iniciará o pipeline. Você pode acompanhar o progresso do pipeline no painel do Jenkins.
Conclusão
A implementação de um pipeline de desenvolvimento com Jenkins, Gitea e Docker pode parecer complexa à primeira vista, mas os benefícios em termos de eficiência e qualidade do software são inegáveis. Ao automatizar o processo de integração contínua e entrega contínua, os desenvolvedores podem se concentrar no que realmente importa: escrever código de alta qualidade.
Palavras-chave
pipeline, Jenkins, Gitea, Docker, CI/CD, integração contínua, entrega contínua, automação, desenvolvimento de software, DevOps