Se você usar o GitHub Actions como sua linha de construção e lançamento e sua equipe também usar o Slack, você sabia que nem mesmo precisa sair do Slack? Crie um bot do Slack para invocar fluxos de trabalho do GitHub Actions diretamente do Slack automaticamente!
Neste tutorial, você aprenderá como configurar um novo chatbot do Slack usando a ferramenta de construção de bot chamada Hubot e iniciar automaticamente um fluxo de trabalho do GitHub Actions para implantar código em um servidor.
Vamos começar!
Pré-requisitos
Este tutorial será uma demonstração prática. Se você deseja acompanhar, certifique-se de ter o seguinte:
- A Slack Workspace
- A GitHub account and a GitHub personal token
- A Linux server to deploy code to – This tutorial will use Ubuntu 19.
- A local Linux machine – This tutorial will use Ubuntu so that all local commands will be Linux. If you’re running another operating system, the commands may be slightly different.
- Credenciais SSH para conectar ao servidor onde você irá implantar o código.
- A code editor of your choice that understands YAML like Visual Studio Code.
Criando um Projeto e Fluxo de Trabalho do GitHub Actions
Antes de poder invocar rapidamente fluxos de trabalho do GitHub Actions a partir do Slack, você deve primeiro criar o fluxo de trabalho.
Para criar o fluxo de trabalho, vamos criar uma pasta de projeto para conter todos os arquivos com os quais você estará trabalhando.
1. Abra sua aplicação de terminal favorita.
2. Agora execute a série de comandos abaixo para criar a pasta do projeto chamada Hubot e navegue até ela.
3. Em seguida, execute npm init
para criar um arquivo package.json do Node.JS. Executar npm init
cria um projeto padrão do Node.JS que inclui o arquivo package.json que contém várias informações sobre o projeto e quaisquer pacotes NPM dependentes.
4. Agora, crie um diretório fluxos de trabalho e o arquivo deploy.yml
de fluxo de trabalho. O arquivo de fluxo de trabalho é uma série de etapas definidas em sequência que as Ações do GitHub seguirão.
5. Em seguida, defina cada um dos segredos do GitHub que seu fluxo de trabalho irá ler. O fluxo de trabalho que você está prestes a criar fará referência a esses segredos. Como você precisará do endereço do seu servidor, nome de usuário, senha e porta do seu servidor para SSH, vamos criar segredos do GitHub.
Visite este URL https://github.com/seunomeusuario/seurepositorio/configuracoes/segredos/acoes onde você irá adicionar seus segredos do GitHub. Substitua seunomeusuario pelo seu nome de usuário do GitHub e seurepositorio pelo seu repositório do GitHub.
Clique no botão Novo segredo do repositório, conforme mostrado abaixo, para preencher as informações sobre o segredo que você está adicionando.

6. Agora preencha os campos Nome e Valor do segredo e clique em Adicionar segredo para salvá-lo. A página será redirecionada para a página de segredos do GitHub, onde você verá todos os seus segredos. Para adicionar mais segredos, clique no botão Novo segredo do repositório como fez anteriormente.
Certifique-se de salvar os segredos para as variáveis fornecidas com o mesmo nome exato, pois você estará referenciando as mesmas variáveis, que são HOST, USERNAME, PASSWORD e PORTA.


7. Finalmente, abra o arquivo de fluxo de trabalho ~/Hubot/.github/workflows/deploy.yml no seu editor de código, e copie/cole o seguinte código. O código abaixo é o fluxo de trabalho que será executado sempre que você acionar o fluxo de trabalho via Slack mais tarde.
Ao invocar o fluxo de trabalho, algumas ações serão realizadas:
- O GitHub Actions irá analisar o arquivo de fluxo de trabalho abaixo para se conectar via SSH no
host
alvo definido no segredoHOST
com oUSERNAME
ePASSWORD
definidos como segredos. - O fluxo de trabalho então irá baixar o conteúdo do repositório do GitHub para um ramo específico (
$branchName
) executandogit pull origin$branchName
. Certifique-se de que o nome do ramo contenha o código que você deseja implantar. - Você estará usando um Pacote de Fluxo de Trabalho do GitHub Marketplace chamado ssh-remote-commands. Este pacote possui um bom wrapper para contornar onde você só precisa fornecer o host, nome de usuário, senha, porta e comando a ser executado na produção.
Certifique-se de que seu servidor tenha o git instalado com as credenciais de login necessárias para puxar o código do repositório do GitHub
Executando o Fluxo de Trabalho Manualmente
Agora você criou o fluxo de trabalho do GitHub Actions para invocar via Slack. Mas neste ponto, seu código está apenas em sua máquina local. Para acionar o fluxo de trabalho, você precisará enviar o código para o GitHub.
Executar a série de comandos abaixo informa ao git de onde o código deve ser enviado e puxado, neste exemplo, do seu repositório remoto no GitHub. No comando git remote add origin
abaixo, substitua seunomedeusuário
e seurepositório
pelo seu nome de usuário e repositório no GitHub
Vamos primeiro testar se o seu código funciona. Invoque seu código manualmente usando a popular ferramenta curl.
Execute o comando abaixo para fazer uma solicitação de postagem no seu Repositório do GitHub https://github.com/nomedeusuário/repositório/dispatches URL para informar ao GitHub para acionar um arquivo de fluxo de trabalho deploy.yml que você criou anteriormente. Substitua nomedeusuário pelo seu nome de usuário real do GitHub e repositório pelo seu repositório do GitHub.
Substitua $github_personal_token
no código abaixo pelo seu token pessoal.
Criar Slack Bot com Hubot
Já que você conseguiu acionar o Fluxo de Trabalho de Ação do GitHub manualmente, isso é um bom começo. Agora vamos tentar automatizar as mesmas etapas manuais via Slack Bot. Você criará um Slack Bot, que ouve seu comando e aciona a Ação do GitHub com argumentos.
Você tem duas opções para criar um Slack Bot, seja do zero ou um pacote hubot pré-construído para espaços de trabalho do slack. Neste tutorial, você usará um pacote de Bot pré-construído chamado Hubot. Hubot é uma ferramenta de automação de código aberto que se integra a serviços de chat como Slack, Discord, Gitter, TeamSpeak, etc.
Criar um bot personalizado sem usar um aplicativo como o Hubot leva muito tempo. Por quê? Porque você lidará com todos os processos de configuração, ouvindo webhooks e hospedando o bot. Portanto, neste tutorial, você usará o aplicativo Hubot Slack para simplificar todos esses processos.
Instalando o Hubot com Npm
Como você está usando o Hubot para criar um bot do Slack, primeiro baixe e instale o Hubot em sua máquina local. O Hubot será o conector que vincula o Slack e as ações do GitHub.
1. No seu terminal, navegue (cd
) até o diretório do seu projeto (~/Hubot
).
2. Instale globalmente o pacote yo
e generator-hubot
em sua máquina local com o comando npm install -g
abaixo. O pacote yo ajuda a instalar novos projetos gerando projetos em qualquer linguagem (Web, Java, Python, C#, etc.). O pacote generator-hubot usa o pacote yo para instalar todas as dependências junto com as configurações iniciais.
Uma vez instalado, você pode executar o comando yo
de qualquer lugar, pois foi instalado globalmente.
3. Agora, crie um modelo básico do Hubot com o seguinte comando. Um modelo básico é uma seção de código incluída em muitos lugares. Sem um modelo básico, você sempre precisa escrever o código do zero.
O comando abaixo cria um modelo básico do Hubot no diretório do seu projeto. O modelo do Hubot conecta-se ao Slack (--adapter=slack
) para que o Bot possa ouvir e responder às mensagens dentro do canal do Slack. yo hubot --adapter=slack
Adicionando o Hubot ao seu Espaço de Trabalho no Slack
Agora que o Hubot está instalado em sua máquina local, você precisa configurar o Hubot para se comunicar com o Slack.
Vamos instalar o Hubot no seu Espaço de Trabalho do Slack.
1. Abra seu navegador da web e acesse as configurações de administração do Slack com a URL, como https://nomedoespaco.slack.com/admin/settings. Substitua nomedoespaco pelo nome real do seu Espaço de Trabalho do Slack.
Clique no Configurar aplicativos on no painel esquerdo, conforme mostrado abaixo, para que você possa procurar pelo Hubot no marketplace. O Slack possui um marketplace onde você pode encontrar aplicativos pré-construídos.

2. Clique na barra de pesquisa e digite hubot para buscar o Hubot no marketplace e selecione Hubot.
Agora, clique no botão Adicionar ao Slack, como mostrado abaixo, para adicionar o Hubot ao seu Espaço de Trabalho no Slack.

3. Por fim, preencha algumas informações gerais sobre o seu Bot, como o nome (deployerhubot) e o ícone. Observe o Token da API, pois você o utilizará posteriormente no Hubot Deployer para ativar o Bot no seu projeto Hubot criado anteriormente.

Testando a Integração do Fluxo de Trabalho do GitHub Actions com o Slack
Agora você tem o Hubot instalado no seu Espaço de Trabalho do Slack. Vamos testar o bot ouvindo e enviando mensagens para o canal. Mas primeiro, você precisa ativar o Bot.
1. Execute o comando abaixo no diretório raiz do projeto para ativar o Bot para o Slack (--adapter slack
) a partir do seu repositório Hubot (./bin/hubot
). Certifique-se de substituir $token
pelo token da API que você anotou anteriormente
2. Execute o comando abaixo para convidar (/invite
) o Bot (botusername
) para o seu canal no Slack. Substitua botusername
pelo nome do Bot que você registrou na terceira etapa da seção “Adicionando o Hubot ao seu Espaço de Trabalho no Slack”.
Agora, mencione um Bot com um texto no Slack, como @deployerhubot ping, para testar se a integração está funcionando. Se o Bot responder PONG, como mostrado abaixo, então está tudo pronto.

Se o Bot não responder, vá para o repositório GitHub no seu navegador e clique na guia Actions. Você pode identificar qual fluxo de trabalho falhou, pois terá um distintivo de verificação vermelho redondo. Clique no fluxo de trabalho falho para ver o que causou o problema e corrija-o.

Abaixo, você pode ver que a falha está em executar comandos SSH remotos usando senha. Depois de corrigir o fluxo de trabalho, volte para o passo 3 e veja se o Bot responde PONG.

Iniciando um Fluxo de Trabalho do GitHub Actions a partir do Slack
Agora que você ativou seu Bot do Slack, é hora de iniciar o fluxo de trabalho do GitHub Actions a partir do Slack!
Você precisa da flexibilidade para implantar o branch dado em um servidor específico, como puxar os códigos do branch dado. Você vai ensinar o Bot a responder automaticamente quando alguém digitar ***@*bot deploy recurso-x para produção em um Canal do Slack. Você pode validar o nome do ambiente, onde posteriormente as pessoas só poderão implantar certos ambientes e branches.
Para automatizar as respostas do Bot:
1. Crie um diretório chamado ~/Hubot/scripts. O diretório ~/Hubot/scripts é onde você vai salvar um script que dispara seu fluxo de trabalho do GitHub.
2. No seu editor de código, crie um arquivo chamado bot.js dentro do diretório ~/Hubot/scripts. Agora copie o código abaixo e cole dentro do arquivo bot.js.
O código abaixo permite que o Bot ouça as mensagens de chat no Canal do Slack e, em seguida, dispara o fluxo de trabalho para enviar uma resposta ao Canal do Slack.
3. Finalmente, envie a mensagem @nomedobot deploy api staging para dev no Slack, e você verá uma resposta semelhante, conforme mostrado abaixo.
Os arquivos de fluxo de trabalho podem ser acionados por vários Eventos do GitHub, como enviar código para uma determinada branch, criar tags, criar solicitações de pull, solicitar alguns URLs e muito mais.

Conclusão
Ao longo deste tutorial, você aprendeu sobre o Fluxo de Trabalho do GitHub, desde acionar manualmente respostas do Slack com códigos até construir um chatbot. Você também aprendeu que ter um chatbot no Slack permite automatizar tarefas invocando fluxos de trabalho de ações do GitHub.
Você levará esse novo conhecimento a um novo patamar, talvez adicionando um Bot de Lembretes ou criando mensagens interativas?