Implantação automática de funções sem servidor do Git

imagem

Usando o bot do gitlab como exemplo, mostrarei como automatizar o processo de lançamento de funções sem servidor atualizando-as automaticamente no repositório git. Passamos de jogos para o desenvolvimento prático em sem servidor.

O que é um bot do gitlab?


Imagine que você precisa automatizar o processo de reação para criar tarefas / bugs no seu rastreador, por exemplo, Gitlab (Issues) ou Jira. Pode ser necessário adicionar automaticamente um artista, dependendo das tags, mover a tarefa para um marco específico, adicionar um comentário ou apenas fechar o bug desagradável. Tudo isso é feito com muita facilidade usando funções sem servidor. Como exemplo, adicionaremos um comentário (nota na terminologia do Gitlab) a uma tarefa recém-criada (problema).

E como o bot pode mudar com frequência, automatizaremos seu lançamento sincronizando automaticamente a função com o repositório git onde ele está.

Configuração do ambiente


Primeiro, precisamos criar um projeto no Gitlab. Se você não possui uma conta Gitlab, pode criar uma aqui . Você pode criar um novo projeto público, por exemplo, bifurcando meu projeto https://gitlab.com/bbelky/gitbotswf clicando no botão Forquilha no canto superior direito.

imagem

Para poder editar o código bot, você precisa cloná-lo localmente. De fato, para os fins deste guia, podemos fazer isso online, mas estaremos mais próximos da vida real. Abra seu terminal e clone o repositório git. O link pode ser encontrado no canto superior direito do seu projeto Clone > Clone com HTTPS . Salve-o como um URL do Gitlab , será útil.

git clone <link to your repo> cd gitbotswf/ ls README.md main.go 

Há um arquivo main.go no repositório clonado. Este é o nosso bot escrito em golang. O bot é muito simples: ele recebe um webhook do Gitlab no evento de criação de uma nova tarefa (Problema) e adiciona um comentário (observação na terminologia do Gitlab) à tarefa criada. Existem comentários no main.go para ajudá-lo a descobrir como o bot funciona. Não vamos nos aprofundar nisso com mais detalhes.

Não feche o terminal - um pouco mais tarde, precisaremos editar o arquivo main.go.

Também precisamos criar a API do Gitlab Token para acessar a API do hitlab.

  1. Vá para o seu perfil do Gitlab> Configurações > Tokens de Acesso.
  2. Crie um novo token com escopo da API.
  3. Copie-o e salve como GITLABTOKEN .

O bot


Hora de criar o bot em si. Vamos criar uma função sem servidor com o código do nosso bot com base na plataforma sem servidor Swifty . Se você ainda não tem uma conta no Rusonyx Swifty, crie-o . Queremos automatizar o processo de implantação de uma nova função, portanto, faça a seguinte sequência: conecte nosso repositório git, crie uma função baseada no código do git e coloque o token da api do gitlab em um armazenamento seguro.

imagem

  1. Entre no Swifty e selecione Repositórios
  2. Clique em Anexar repositório , selecione o tipo de URL do Git e cole seu URL do Gitlab .
  3. Lembre-se de selecionar a opção Repositório espelho automaticamente e clique em Concluído.

imagem

Agora, o Swifty sincroniza automaticamente com seu repositório (git pull) a cada 30 minutos. Agora crie a própria função:

  1. Vá para a guia Funções > Nova Função > Do repositório (Modelos) .
  2. Selecione o repositório adicionado recentemente, por exemplo, gitlab.com/bbelky/gitbotswf.git . Agora você vê os arquivos do seu repositório.
  3. Selecione o arquivo main.go , clique em Avançar.
  4. Selecione a opção Sincronizar com Repositório , digite o nome da função gitbotswf e clique em Criar .

imagem

Agora precisamos de um gatilho da API HTTP, quando chamado, a função será acionada:

  1. Vá para a guia Acionadores > Adicionar acionador > API REST (URL) .
  2. Copie o URL resultante e salve-o como BOT_URL .

imagem

Ótimo, agora temos um repositório e uma função que sincronizam com ele automaticamente. Agora adicione nosso token da API do Gitlab às contas Swifty - um repositório seguro e criptografado para senhas e tokens.

  1. Vá para Contas > Criar conta .
  2. Selecione um tipo genérico .
  3. Nomeie GITLABTOKEN e copie seu token. Salve.

imagem

Agora adicione o token à função:

  1. Vá para Funções > função gitbotswf > Acesso e clique em Adicionar .
  2. Selecione o tipo Contas , GITLABTOKEN e clique em Adicionar .

Ativar webhook


No último estágio, precisamos criar um webhook no Gitlab que será acionado toda vez que um novo problema for criado. Vamos para o Gitlab.

  1. Selecione seu projeto> Configurações > Integrações .
  2. Adicione o BOT_URL salvo anteriormente ao campo URL .
  3. Marque a caixa ao lado de Eventos de problemas e clique em Adicionar webhook .

Teste


Vamos ao projeto no Gitlab, na guia Issues e crie um novo Issue . Verifique os comentários. Sim! Se tudo funcionou bem, veremos o comentário "Obrigado por relatar um novo problema!" . Se ocorreu um erro em algum lugar, pergunte-nos aqui ou faça uma pergunta em um slot .

Atualização e liberação automática do bot


E se precisarmos atualizar nosso bot? Graças à integração com o git, tudo o que você precisa fazer é atualizar seu código (alterar o texto da nota, por exemplo), executar o código no Gitlab e o Swifty atualizará automaticamente sua função!

Então, abra o arquivo main.go no terminal e altere a variável note :

 note := "Comments%20changed!" 

Atualizar git:

 git add * git commit -m "changes" git push origin master 

Vá sem servidor!

Source: https://habr.com/ru/post/pt439920/


All Articles