Jenkins com Docker

Vinicius Farias
Dev Cave
Published in
5 min readApr 9, 2018

​ Antes de mais nada, vamos iniciar nossos estudos lembrando que temos a possibilidade de realizar algumas ações de formas automatizadas, ou como dizem por aí, de modo “Nutella”.

Dito isso, a ideia deste post é demonstrar o modo como criar um Container, como acessar e configurar uma ferramenta de CI utilizando Docker, no caso, o nosso famoso Jenkins!

Porém, como já que foi mencionado que existe a maneira automática, segue a linha de comando que faz tudo pra você (mas que não deixa ver a mágica acontecer) e cria imagem do Docker juntamente com o Jenkins:

sudo docker pull jenkins

Lembrando que, se você não possuir o Docker na sua máquina, será necessário seguir o passo-a-passo para instalar o pacote e depois seguir o comando acima ou abaixo, caso queira aprender ou fazer step-by-step seguindo o post.

Se você continuou a leitura, sinal de que está interessado(a) na mágica! Então, vamos lá! :) Vamos iniciar falando um pouco mais sobre o bom e velho Jenkins.

​ Jenkins é um servidor de Integração Contínua (CI) Open Source que foi desenvolvido em Java. Ele está presente no mercado há mais de 10 anos e é detentor de prêmios como Duke’s Choice Award (2008) na categoria Developer Solutions. Em 2011, o seu criador Kohsuke Kawaguchi recebeu o prêmio Google-O’Reilly Open Source Award.

​ O Jenkins possuí mais de 1000 plugins para builds e suporta testes de vários tipos de linguagens como, por exemplo, Java Ruby, .Net, NodeJS. Abaixo algumas das várias tarefas que podem ser automatizadas com ele:

  • Deploys em servidores;
  • Builds;
  • Executar Testes Automatizados;
  • Deploys em aplicações SAAS (Software As A Service);
  • Índices de Qualidade de uma aplicação (podemos eliminar as ferramentas de gestão de testes de software com o controle do Jenkins);

Para facilitar a visualização da ferramenta de CI dentro de um processo automatizado, abaixo temos uma figura que demonstra um processo sem a utilização do Jenkins em seu ciclo de entrega do software, com as operações sendo realizadas manualmente:

Agora uma demonstração de como funciona um processo que utiliza o Jenkins em sua rotina de entregas:

​ Falando um pouco sobre ferramentas, temos em paralelo o conceito de tudo isso e que a maioria de nós ouve diariamente em podcasts, conversas de corredores, cafés e palestras. Assuntos que sempre estão nestas situações são: agilidade, entrega contínua, deploys com segurança, testes automatizados e toda essa parte de melhoria contínua. Porém, andando juntamente com todo este mundo, temos o conceito do nosso amigão DevOps, que hoje é basicamente definido como um conjunto de atributos em que o cara das Operações com Desenvolvimento do produto acaba ficando responsável.

​ O termo DevOps não é somente um papel, mas um tipo de cultura que poderá ser atribuída pelo QA, pelo Dev ou mesmo pelo responsável por Implantação.
Essa função, nada mais é, do que unir desenvolvimento com operação.

DevOps = Operações com desenvolvimento

Instalando/Criando uma imagem Docker

​ Antes de mais nada, vamos verificar os requisitos de instalação do Docker:

  • O processador deve ser 64bits;
  • O Kernel do sistema operacional deve ser igual ou maior que a versão 3.10 estável;
  • O Kernel deve ter suporte à AUFS, Cgroups, Device Mapper, Namespaces e OverlayFS.

Caso não souber qual versão do Kernel do seu sistema, digite o comando no terminal:

uname -r

Let’s go!

Para iniciar o processo de instalação, vamos precisar instalar o Docker (que provavelmente já está listados nos packages da sua máquina), para isso, basta executar o comando abaixo que ele pegará a versão mais atual do Docker:​

sudo apt-get -y install docker-ce

“​Ah, mas eu não tenho ele no meu pacote!”
Não se preocupe! Basta seguir a documentação do site do Docker
clicando aqui:

Bom, agora que você já instalou na sua máquina, precisaremos pegar a última imagem do Docker Ubuntu:

docker pull ubuntu

Após ter rodado o comando acima no terminal, vamos ver as imagens que temos do Docker. Para isso, rode o comando terminal:

docker images

Explicando um pouco mais sobre o que são os containers.

Os containers possuem benefícios de alocação de recursos similares à máquina virtual. No entanto, com uma abordagem diferente no que diz respeito à arquitetura, além de serem portáteis e muito mais eficientes!!!

Agora vamos subir um Container Ubuntu! o/

  • Criar container

docker run -d --name "nome do container" -p "porta" -t "imagem"

(Exemplo: docker run -d — name jenkinsNovo -p 8080 -t ubuntu

  • Exibir todos os containers

docker ps -a

Caso tenha conflito com nomes ou portas e precisará deletar algum container:docker rm "id"

Ahh! Caso não seja possível, porque ele esta em pé, derrube-o docker stop "name"E então delete!

Instalando o Jenkins dentro do container Docker

​ Antes de mais nada, neste momento você terá acesso diretamente dentro da imagem do Container. Com isso, vamos começar a instalação como se fosse uma nova máquina e um novo S.O., neste caso, vamos ter que instalar desde o SUDO, até o Jenkins (não vamos instalar nada além do necessário)!

  • Acessando um container

docker exec -i -t "nome do container" /bin/bash

  • Para saber a versão do Linux no container

cat /etc/lsb-release

  • Agora precisamos atualizar os pacotes

apt-get update

  • Instalar o Sudo

apt-get install sudo

  • Instalar o wget

apt-get install wget

  • Instalar o vim

apt-get install vim

Feito isso, vamos instalar o Jenkins dentro do Container que acabamos de criar. Para isso, você poderá acessar o site do [Jenkins](https://jenkins.io/) e copiar os procedimentos para instalação (caso queira ter certeza de que a versão instalada é a mais atual) ou poderá utilizar o comando wget abaixo:

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

​ Após instalar ele dentro do pacote, vamos inseri-lo na lista com o comando, mas antes entre na pasta tmp e depois execute o comando:

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

  • Rodar comando para adicionar os pacotes do Debian dentro das Packages list do S.O.:

sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' | apt-get update

  • Instalando o Jenkins

sudo apt-get install jenkins

  • Após instalar o Jenkins, será necessário inicia-lo:

/etc/init.d/jenkins start

SHOW!!!

Agora é só acessar a porta que você apontou acima na criação, como por exemplo, http://localhost:8080 e ver a mágica acontecer!

No próximo post, teremos os passos de como utilizar o Jenkins e construir Pipelines para o seu projeto.

Falew Valow, até a próxima!

--

--

Vinicius Farias
Dev Cave

Agilista, Músico, Cozinheiro, Pescador e Marido :)