{"id":625,"date":"2016-08-22T18:00:00","date_gmt":"2016-08-22T18:00:00","guid":{"rendered":"https:\/\/geoadmin.com.br\/?p=625"},"modified":"2021-06-09T10:25:23","modified_gmt":"2021-06-09T13:25:23","slug":"hubot-e-chatops","status":"publish","type":"post","link":"https:\/\/geoadmin.com.br\/?p=625","title":{"rendered":"Hubot e ChatOps"},"content":{"rendered":"<p>Voc\u00eas conhecem o projeto do github, o <a href=\"https:\/\/hubot.github.com\/\">Hubot<\/a>?<\/p>\n<p>O hubot \u00e9 um bot, capaz de te ajudar em diversas tarefas dentro da sua organiza\u00e7\u00e3o. Ele funciona recebendo comandos de uma sala, existente no seu sofware de mensagens instant\u00e2neas. Existem v\u00e1rios adaptadores, para programas, como Skype, slack e o <a href=\"https:\/\/www.mattermost.org\/\">mattermost<\/a>, que \u00e9 o software que usamos aqui.<\/p>\n<p>Basicamente, voc\u00ea precisa de uma inst\u00e2ncia dele rodando em algum lugar e conect\u00e1-lo ao seu software de mensagens instat\u00e2neas.<\/p>\n<p>N\u00e3o vou entrar em detalhes aqui, pois o processo \u00e9 diferente para cada software, mas \u00e9 bastante f\u00e1cil. Temos uma inst\u00e2ncia rodando no Heroku.<\/p>\n<p>Deem uma conferida na documenta\u00e7\u00e3o de como subir o bot, <a href=\"https:\/\/hubot.github.com\/\">aqui<\/a>.<\/p>\n<p>Mas como vamos gerenciar nossos projetos?<\/p>\n<p>Aqui na <a href=\"http:\/\/sigmageosistemas.com.br\">Sigma<\/a> usamos o <a href=\"http:\/\/gitlab.com\">Gitlab<\/a> como nosso gerenciador de reposit\u00f3rios. N\u00e3o s\u00f3 reposit\u00f3rios, mas tudo mais que o Gitlab traz, de gra\u00e7a para voc\u00ea, como:<\/p>\n<ul>\n<li>Usu\u00e1rios<\/li>\n<li>Projetos<\/li>\n<li>Issues<\/li>\n<li>Milestones<\/li>\n<li>Merge Requests (similar o Pull Request do <a href=\"http:\/\/github.com\">Github<\/a>)<\/li>\n<li>Entre outras coisas bacanas!<\/li>\n<\/ul>\n<p>O que fizemos foi criar um plugin para o Hubot, que escuta alguns comandos espec\u00edficos, vai no Gitlab, faz as contas referentes ao andamento do projeto e responde no canal do Mattermost.<\/p>\n<p>Bem bacana! Usamos isto para reportar para nosso clientes o andamento dos projetos e gerar gr\u00e1ficos como este aqui em baixo:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/sigmageosistemas.com.br\/media\/upload\/burndown.png?w=950\" alt=\"Burndown\" data-recalc-dims=\"1\" \/><\/p>\n<p>O hubot, no entanto, pode escutar os seguintes comandos:<\/p>\n<p>><\/p>\n<blockquote><p>\n  hubot gitlab search [termo]<\/p>\n<p>  hubot gitlab list projects (lista os projetos existentes no Gitlab)<\/p>\n<p>  hubot gitlab list milestones [project_id] (lista milestones do projeto)<\/p>\n<p>  hubot gitlab list issues [project_id] (list issues do projeto);<\/p>\n<p>  hubot gitlab progress [project_id] <milestone_id> (gera a medida de progresso do projeto)\n<\/p><\/blockquote>\n<p>S\u00e3o poucos comandos no momento, mas estamos planejando expandir esse camarada. O bacana do hubot \u00e9 que ele funciona muito bem com qualquer tipo de mensageiro instantaneo que possua um adaptador para ele, ou seja, isso pode ser aplicado mesmo se voc\u1ebd n\u00e3o usa o slack ou o mattermost.<\/p>\n<p>Um exemplo em funcionamento:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/sigmageosistemas.com.br\/media\/upload\/ss-gitlab-agile.png?w=950\" alt=\"Gitlab Agile\" data-recalc-dims=\"1\" \/><\/p>\n<p>\u00c9 bem simples e d\u00e1 estat\u00edsticas atualizadas!<\/p>\n<p>Como sempre, publicamos <a href=\"https:\/\/www.npmjs.com\/package\/hubot-gitlab-agile\">nosso pacote no npm<\/a> e ele \u00e9 aberto em nosso <a href=\"https:\/\/gitlab.sigmageosistemas.com.br\/dev\/hubot-gitlab-agile\">Gitlab<\/a>. O mesmo j\u00e1 foi puxado ~300 vezes, desde sexta-feira. \u00c9 uma m\u00e9trica e tanto para um projeto t\u00e3o pequeno, mas acredito que deve ser \u00fatil para outras pessoas.<\/p>\n<p>No nosso roadmap, ainda iremos implementar o cadastro de sprints, sua abertura e fechamento, bem como a gera\u00e7\u00e3o inteira do gr\u00e1fico atrav\u00e9s do hubot. Hoje s\u00f3 geramos as estat\u00edsticas, mas n\u00e3o \u00e9 dif\u00edcil gerar o gr\u00e1fico completo.<\/p>\n<p>E a\u00ed pessoal, curtiram? Fiquem a vontade para forkar, testar e adicionar novos comandos caso tenham interesse.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00eas conhecem o projeto do github, o Hubot? O hubot \u00e9 um bot, capaz de te ajudar em diversas tarefas dentro da sua organiza\u00e7\u00e3o. Ele funciona recebendo comandos de uma sala, existente no seu sofware de mensagens instant\u00e2neas. Existem v\u00e1rios adaptadores, para programas, como Skype, slack e o mattermost, que \u00e9 o software que usamos &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/geoadmin.com.br\/?p=625\" class=\"more-link\">Leia mais<span class=\"screen-reader-text\"> &#8220;Hubot e ChatOps&#8221;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[51,31,52,43],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts\/625"}],"collection":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=625"}],"version-history":[{"count":1,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts\/625\/revisions"}],"predecessor-version":[{"id":1328,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=\/wp\/v2\/posts\/625\/revisions\/1328"}],"wp:attachment":[{"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geoadmin.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}