Continuous integration: Jenkins on-demand slaves na Digital Ocean

Jenkins + Digital Ocean

 

Olá pessoal,
nesse artigo vou demonstrar como configurar o Jenkins, para que este seja capaz de criar slave nodes sob demanda na Digital Ocean.

 

O objetivo principal dessa forma de trabalhar com o Jenkins é otimizar custos, pois além da Digital Ocean ter um custo bem acessível, você só paga pelas horas utilizadas, quando seus jobs de CI/CD estiverem sendo executados, porém um ponto muito importante é que você terá certeza de estar executando seus jobs em instâncias (maquinas virtuais) recém criadas e saudáveis.

 

Vamos lá, para isso vamos utilizar:

Configuração Digital Ocean

Para que o Jenkins consiga criar instances e acessa-las por ssh precisamos efetuar dois passos:
  • Criar um token de acesso à API
  • Adicionar uma chave de acesso SSH
Primeiro vamos criar o token de acesso à Legacy API da Digital Ocean, para isso clique  aqui.

 

Digital Ocean - Legacy Api V1
Pronto, agora vamos adicionar a chave de acesso ssh. Acesse o menu Settings -> Security e clique em Add SSH Key, dê um nome de identificação da chave, cole sua chave Pública e clique em Generate SSH  Key.
Se tiver alguma dúvida de como criar as chaves pública e privada, clique aqui.
Digital Ocean - Security - Add SSH Key
É isso, agora podemos passar para o Jenkins.

Configuração Jenkins

Para instalar o Digital Ocean Plugin, acesse a opção Manage Jenkins -> Manage Plugins -> Available Plugins.
Jenkins - Manage Plugins

 

Procure pelo plugin chamado Digital Ocean Plugin, marque o checkbox e clique em Download now and install after restart. 
Após a instalação ser concluída  e o Jenkins reiniciar, acesse a tela de configuração do Jenkins em Manage Jenkins -> Configure System.
Para se certificar que o node master do Jenkins não irá executar nenhuma Job, mude a opção # of executors  para 0 e a opção Usage para Only build jobs with label restrictions matching this node.

 

Jenkins - # of executors

 

No final da página deve aparecer a caixa de seleção Add a new cloud -> Digital Ocean.
Jenkins - Add new Cloud - Digital Ocean
Clique na opção Digital Ocean e preencha o formulário. Após preencher os campos Client Id e API Key, clique em Test Connection para verificar que o acesso está funcionando e para carregar suas chaves SSH no campo SSH Key.

 

Jenkins - Configuração slave node
Agora você deve configurar qual tipo de instância que desejar utilizar (14.04 x64 = Ubuntu 14.04×64) e criar um label.
Esse label é muito importante pois vamos utiliza-lo para definir que o Job deve ser executado em um node slave da Digital Ocean.

 

Pronto, agora vamos criar um job do tipo Freestyle project, e utilizar o Label slave.
 
Jenkins - Job utilizando o slave node

 

Salve o Job em clique em Build Now.
Depois de alguns segundos, irá aparecer a nova instância e o Job será executado.
Digital Ocean - Slave node criado

 

Jenkins - Slave node sendo configurado
Job executado com sucesso! 🙂

 

Jenkins - Job executado com sucesso
E após 10 minutos de inatividade a instância será excluída automaticamente.

 

É isso pessoal, qualquer dúvida, comentário ou feedback é bem vindo. 🙂

1 comment

Leave a Reply