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:
- Jenkins 1.580 ou superior
- DigitalOcean Plugin
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.
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.
É 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.
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.
No final da página deve aparecer a caixa de seleção Add a 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.
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.
Salve o Job em clique em Build Now.
Depois de alguns segundos, irá aparecer a nova instância e o Job será executado.
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. 🙂
Interessante, Mto Bom!