Se você é um Desenvolvedor Android, sabe como é importante ter um bom ambiente de CI (Integração Contínua) disponível para automatizar tarefas e economizar seu precioso tempo. É ainda mais necessário se você estiver trabalhando em muitos projetos, com diferentes tipos de builds e sua equipe for muito pequena. Neste contexto, que tal  ter um amigo robótico que você pode pedir uma build apenas enviando uma mensagem curta, e ainda ser notificado pelo Slack quando estiver pronta?

Bem, parece promissor e é mais fácil do que você imagina! O objetivo deste artigo é mostrar como você pode criar facilmente um Bot Slack para solicitar builds para o seu servidor de CI Jenkins. Vamos lá?

Por que Jenkins?

Você pode argumentar que existem plataformas de CI mais modernas, como o Circle CI. Mas, aqui na Wavy, temos uma realidade um pouco diferente: temos muitos aplicativos legados já configurados em um servidor Jenkins interno e, por enquanto, não queremos investir em uma migração. Além disso, há preocupações com a privacidade, em expor o código de nossos projetos a servidores de terceiros devido a acordos contratuais com nossos parceiros. Dado esse cenário, o Jenkins é uma ferramenta antiga, mas muito flexível, com inúmeros plugins disponíveis e que atende todas as nossas necessidades.

O bot: Hubot

O Hubot é um projeto de código aberto muito interessante desenvolvido pela GitHub, Inc. Foi escrito para automatizar a sala de bate-papo da empresa. Ele sabe como implantar o site do Github e automatizar muitas tarefas. Isso faz parte da estratégia de equipes remotas do Github. Ao fazer solicitações via chat, é muito mais fácil dar visibilidade à equipe remota do que está sendo feito.

O que torna essa ferramenta muito poderosa é a possibilidade de estender os recursos do Bot simplesmente adicionando scripts a ela. Felizmente, um script Jenkins está disponível e é isso que vamos usar para a nossa integração.

Configuração passo a passo

Este artigo pressupõe que você tenha uma instância do Jenkins instalada e em execução com sua build do Android configurada. Se você precisar de ajuda para criar sua instância do Jenkins, poderá encontrá-la aqui. Uma referência sobre os padrões de build Android está disponível aqui também.

Hubot

Hubot é um projeto node.js. Se você não tiver o node.js instalado, poderá encontrar instruções de instalação aqui. Nós usaremos o gerador de hubot Yeoman para simplificar nosso trabalho. O guia de instalação completo pode ser encontrado aqui.

Primeiro, instale o Yeoman:

 

npm install -g yo

 

Em seguida, instale o gerador de hubot:

 

npm install -g yo generator-hubot

 

Crie uma pasta para conter nosso projeto:

 

% mkdir myhubot

% cd myhubot

% yo hubot

 

Serão feitas algumas perguntas sobre quem está criando o bot e o adapter que você irá usar. O adapter permite a comunicação do Bot com sua ferramenta de chat favorita. No nosso caso, usaremos o adaptador Slack, mas existem outras opções aqui.

Agora é hora de instalar o hubot-jenkins-enhanced:

npm install hubot-jenkins-enhanced –save

O próximo passo é adicionar hubin-jenkins-enhanced como um script externo. Abra o arquivo external-scripts.json e adicione à lista:

 

[

 “hubot-diagnostics”,

 “hubot-help”,

 “hubot-heroku-keepalive”,

 “hubot-google-images”,

 “hubot-google-translate”,

 “hubot-pugme”,

 “hubot-maps”,

 “hubot-rules”,

 “hubot-shipit”,

 “hubot-jenkins-enhanced”

]

Criar um Token de Usuário do Jenkins

Para acessar o Jenkins da sua instância do Hubot, você precisa criar um token de autenticação, seguindo as etapas:

  1. Faça o login no Jenkins.
  2. Clique em seu nome (canto superior direito).
  3. Clique em Configurar (menu do lado esquerdo).
  4. Use o botão “Adicionar novo token” para gerar um novo token. Você deve copiar o token ao gerá-lo, pois não poderá vê-lo posteriormente.

Criar um Slack Token

Para criar um token do Slack, siga as etapas abaixo.

  1. Crie um novo aplicativo na app management page;
  2. Navegue até a página do Bot User e adicione um usuário de bot. O nome de exibição é o nome que sua equipe usará para mencionar seu Hubot no Slack;
  3. Navegue até a página Instalar Aplicativo e instale o aplicativo no área de trabalho. Depois de autorizar a instalação, você será levado de volta à página Instalar aplicativo, mas, desta vez, você terá um token de acesso do Bot OAuth. Copie esse valor, ele será o seu token Slack.

A documentação completa pode ser encontrada aqui.

 

Executar o Hubot

Agora você está pronto para rodar o Hubot conectado ao Slack e Jenkins:

 

HUBOT_JENKINS_URL=http://my.jenkins.com

HUBOT_JENKINS_AUTH=”your_jenkins_user:your_jenkins_token” HUBOT_SLACK_TOKEN=your_slack_token ./bin/hubot –adapter slack

 

Você pode ver seu bot online, e você pode adicioná-lo à sua seção Slack Apps:

Por fim, solicite sua build:

Se você não tiver um token do Slack, poderá executar o Hubot com o shell adapter, que está disponível por padrão:

HUBOT_JENKINS_URL=https://my.jenkins.com HUBOT_JENKINS_AUTH=”your.jenkins.user:your.jenkins.token” ./bin/hubot

E então, você pode explorar os comandos do Jenkins, de acordo com suas necessidades. Por exemplo, os comandos abaixo listam todas as builds disponíveis e executam a build my-android-release-build

 

myhubot> myhubot jenkins list

myhubot> myhubot jenkins build my-android-release-build

 

Se você quiser ser notificado quando a compilação terminar, você poderá adicionar o Jenkins Slack Plugin à sua build do Android no Jenkins.

Conclusões e próximas etapas

Se sua equipe tem a cultura de trabalhar com o Slack ou outros serviços de mensagens, você pode se beneficiar fornecendo ferramentas de automação através do Hubot. A combinação do Hubot com Jenkins fornece muitas possibilidades para economizar tempo. No nosso caso, nosso Jenkins gera APKs para o HockeyApp, Play Store ou Amazon S3. Além de poupar tempo dos desenvolvedores, essa abordagem ajuda a equipe a ter visibilidade de todas as atividades que estão sendo feitas para melhorar a comunicação, caso você tenha membros remotos em seu time.

Posted by:Moacir Ramos

Deixe seu comentário