Executar o build do Jenkins dentro de um container.
Instalando Docker
# instalando
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce
# adicionando usuario ao grupo docker para evitar usar sudo
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo newgrp docker ou logout/login
# ativando na inicialização do sistema e iniciando o serviço
sudo systemctl enable docker
sudo systemctl start docker
# a execução dos comando abaixo com sucesso indica que o docker foi instalado corretamente
docker images
docker run hello-world
Configurando Docker
Se o acesso ao daemon do docker é feito de uma máquina remota, é necessário configurar o hosts
no arquivo /etc/docker/daemon.json
, em outras palavras, se o jenkins está em uma máquina e o docker em outra, essa configuração é necessária.
Adicionar o conteúdo abaixo ao arquivo /etc/docker/daemon.json
{
"hosts": ["tcp://0.0.0.0:2375"]
}
Essa configuração expõe o acesso ao daemon do docker a partir de todas as interfaces de rede. Para garantir a segurança tem que usar certificado: https://docs.docker.com/engine/security/https/
Reiniciar o docker
sudo systemctl restart docker
Configurando Jenkins
Instalar o plugin Docker Plugin: https://wiki.jenkins.io/display/JENKINS/Docker+Plugin
Configurar plugin
- abrir o Jenkins
- menu
Manage Jenkins
- menu
Configure System
- na seção
Cloud
- clicar em
Add a new cloud
>Docker
> preencher os campos - Name:
docker cloud
- Docker Host URI:
unix:///var/run/docker.sock
outcp://IP-MAQUINA-DOCKER:2375
- clicar em
Test Connection
e se tudo ok deve exibir a versão do docker - Enabled:
check
- Container Cap:
5
- clicar em
Docker Agent templates...
- clicar em
Add Docker Template
- Labels:
docker-slave
- Enabled:
check
- Docker Image:
jenkins/ssh-slave
- clicar em
Container settings...
- Remote Filing System Root:
/home/jenkins
- Usage:
Only build jobs with label expressions matching this node
- Connect method:
Connect with SSH
- SSH Key:
Inject SSH Key
- User:
jenkins
- Pull strategy:
Pull once and update latest
- clicar em
- clicar em
Save
Overview da configuração
Criar Job (ou alterar um existente)
Configurar o build para executar em container
- abrir as configurações do job
- marcar a opção
Restrict where this project can be run
- Label Expression:
docker-slave
Buildar
Versões/Referências
- Jenkins: 2.121.1
- Docker client/server: 18.03.1-ce
- https://wiki.jenkins.io/display/JENKINS/Docker+Plugin
- https://hub.docker.com/r/jenkins/ssh-slave