- Processo e método de desenvolvimento de um Slackbot que publica conteúdo automaticamente em um blog técnico
- Processo de desenvolvimento
-
- Planejamento da automação
- Primeiro, ao publicar conteúdo no blog técnico, decidiu-se integrar em uma nova ferramenta (Slackbot) as ferramentas já utilizadas anteriormente (Notion, GitLab). O objetivo era fazer com que os membros se adaptassem de forma fácil e rápida ao novo sistema de publicação
- Segundo, decidiu-se usar um framework TypeScript. TypeScript é amplamente utilizado e, por ser uma linguagem de tipagem estática, permite um desenvolvimento mais estável. Isso ajuda a manter o novo sistema de publicação de forma fácil e conveniente
- Terceiro, oferecer uma interação amigável ao usuário
- Motivos para escolher o Slackbot
- O Slackbot atende a todos esses princípios
- O Slackbot oferece um framework chamado
Bolt. Ele dá suporte não apenas a JavaScript, Java e Python, mas também conta com boa documentação. Com isso como referência, fica fácil desenvolver uma ferramenta de automação para a publicação do blog técnico. Mesmo executando em ambiente local, é possível testar a ferramenta no aplicativo do Slack
- O Slack oferece suporte para projetar a interface visível ao usuário com o recurso
Block Kit. Ao desenhar o fluxo de telas em JSON e processar os dados com funções, é possível criar interações intuitivas
-
- Desenhando as telas
- O Slack oferece mensagens e modais para uso em interações com o usuário
- O fluxo de trabalho para publicar conteúdo no blog técnico foi implementado com modais
- Processo de publicação no blog técnico usando o Slackbot
- Publicação no blog: escolher qual conteúdo será publicado e onde ele será publicado
- Validação do blog: verificar se o conteúdo a ser publicado contém todos os elementos necessários para o frontend, como metadados e imagem de capa
- Verificação de issue/MR no GitLab: etapa de criação de issue e MR no GitLab. Se a issue e o MR já existirem, faz commit naquele MR
- Mensagem de conclusão: quando a publicação termina, é deixada uma mensagem com o link do conteúdo original no Notion e o link do MR no GitLab
-
- Projetando e criando o bot
- A intenção era fazer com que um único bot interagisse com outros serviços, como Notion e GitLab
- Ao criar um pipeline de CI/CD no GitLab para publicar a aplicação ou modificar o bot, avaliou-se que essa abordagem seria mais vantajosa
- No desenvolvimento do bot, foram usados a linguagem TypeScript e o framework Bolt, suportado pelo Slack
- A estrutura de pastas foi adotada com inspiração no NestJS
- workflow.ts : define a tela e o fluxo de dados, sendo o ponto de partida de todo o workflow
- service.ts : define a lógica de negócio
- model.ts : define os tipos de dados para Slack ou APIs de terceiros
- modal.ts : define as telas de interação com o usuário
-
- Como o bot funciona
- Ao inserir um comando em qualquer canal do Slack, o bot é chamado
- Nesse momento, o usuário escolhe o título do conteúdo no Notion e o canal onde o conteúdo será publicado e, ao clicar no botão “Enviar”, o bot verifica automaticamente se todos os metadados obrigatórios foram preenchidos
- GitLab ID, nome do autor, nome do arquivo md, imagem de capa,
<!--truncate--> etc. são metadados obrigatórios; se faltar qualquer um deles, o conteúdo não pode ser publicado
- Se todos os metadados obrigatórios estiverem preenchidos, é possível clicar no botão “Continuar” para avançar para a próxima etapa
- Nesse momento, a issue e o MR desse conteúdo são criados automaticamente no GitLab
- Labels também são adicionadas automaticamente ao MR, e até o pipeline de publicação do conteúdo é executado automaticamente
- Quando a execução do pipeline é concluída, é possível verificar previamente o estado da publicação do conteúdo pelo GitLab Review App
- Resultados da adoção
- A frequência com que technical writers e engenheiros criam MRs para publicar conteúdo no blog técnico aumentou cerca de 30%
- Publicação do conteúdo em menos de 1 minuto com um único clique
- A taxa de falha do pipeline caiu para menos de 5%
Ainda não há comentários.