Enviando eventos GitHub para um aplicativo
É possível configurar um webhook para enviar um evento GitHub, como um novo problema ou uma confirmação para seu aplicativo IBM Cloud® Code Engine. O seu aplicativo deve usar um terminal público para receber os pedidos de webhook POST.
Para obter mais informações sobre webhooks do GitHub, consulte Sobre webhooks. Para obter mais informações sobre o GitHub, consulte GitHub Docs.
Pré-requisitos
Antes de começar, configure sua conta e instale o ambiente da linha de comando. Enquanto você pode usar o console para criar o seu aplicativo, este exemplo usa a CLI.
- Certise-se de que você tem uma conta Pay-as-Go.
- Configure o seu ambiente da CLI do Code Engine.
- Criar e trabalhar com um projeto.
Todos os usuários do Code Engine são obrigados a ter uma conta pré-paga. Os tutoriais podem gerar custos adicionais. Use o Estimador de custos para gerar uma estimativa de custo com base em seu uso planejado. Para obter mais informações, consulte Code Engine precificação.
Criar um aplicativo
Crie um aplicativo para receber seus eventos do GitHub chamado my-github-app que usa uma imagem chamada github com o comando ibmcloud ce app create..
Esse app registra cada evento de confirmação que ocorre no repositório GitHub. A imagem é construída a partir do github.go, disponível a partir do Samples for IBM Cloud Code Engine GitHub repo.
ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1
Após o seu aplicativo criar, verifique se o seu aplicativo está em um estado Ready e encontre a URL do aplicativo.
ibmcloud ce application get --name my-github-app
A URL do aplicativo está localizada no campo URL na saída de exemplo
Name: my-github-app
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 20h
Created: 2022-11-28T13:16:49-06:00
URL: https://my-github-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://my-github-app.abcdabcdabc.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f/application/my-github-app/configuration
Status Summary: Application deployed successfully
...
Criar um webhook
Crie um webhook do GitHub para assinar seu aplicativo para eventos GitHub. Você pode se inscrever em um ou mais eventos de webhook. Quando ocorre um evento que você assina, o GitHub envia uma carga útil para seu aplicativo. Para obter mais informações, consulte Webhook events and payloads.
Para criar um webhook GitHub, siga estas etapas.
- Acesse seu repositório GitHub e selecione Configurações.
- Selecione Webhooks-> Adicionar webhook. Observe que seu repositório GitHub pode usar Hooks em vez de Webhooks.
- Insira sua URL de aplicação como sua URL de carga útil.
- Selecione o Tipo de conteúdo que seu aplicativo requer. Se você estiver usando o app amostra
github, então selecioneapplication/jsoncomo seu tipo de conteúdo. - Opcional. Adicio um segredo para o seu webhook. Para obter mais informações, consulte Securing your webhooks.
- Selecione para Habilitar Verificação SSL.
- Selecione Apenas o evento push para acionar o seu webhook.
- Certifique-se de que Active esteja selecionado. Você pode desativar o seu webhook sem excluí-lo; removendo o checkmark.
- Clique em Adicionar webhook.
Após finalizar, verifique se o seu aplicativo está inscrito verificando os arquivos de log para o aplicativo. Para obter mais informações sobre logs, consulte Visualizando logs com a CLI.
ibmcloud ce app logs --name my-github-app
Na saída de exemplo, procure a porta que seu app está atendendo, assim como o tipo de evento.
my-github-app-00001-deployment-abcdabcdabc-1234/user-container:
2022/12/02 17:07:27 Listening on port 8080
2022/12/02 17:10:08 Event Type: ping
2022/12/02 17:10:08 Not a 'push' event so exit
Note que se suas aplicações escalam para zero, você pode receber uma mensagem sobre nenhuma instância do seu app em execução. Este app tem uma escala mínima de 1 para que sempre tenha uma instância em execução.
Teste seu evento GitHub
Teste o seu webhook ao acionar o evento que seu aplicativo espera. Nesse caso, o aplicativo está esperando que uma mudança seja confirmada no repositório GitHub.
-
Em seu repositório GitHub, execute uma ação que aciona seu webhook. Para o app
github, confirme uma alteração em um arquivo no repositório. -
Após um minuto ou dois, encontre os logs para a sua aplicação. Se o seu aplicativo escalado para zero, você pode ver uma mensagem indicando que o seu app não tem nenhuma instância em execução. Sua aplicação escala em cima quando recebe um evento então tente novamente em poucos minutos. Para obter mais informações sobre logs, consulte Visualizando logs com a CLI.
ibmcloud ce app logs --name my-github-appPor exemplo, veja a seguinte saída.
2022/11/28 19:45:28 Event: { "ref": "refs/heads/main", "before": "0a11d22ebdaacdbb7bf5fdb6c92565c7c00fa97b", "after": "af363efb8568874fe219bc73f3bccd0f4991907f", "repository": { ... "committer": { "name": "GitHub", "email": "noreply@github.com", "username": "web-flow" }, "added": [], "removed": [], "modified": [ "README.md" ] } } 2022/11/28 19:45:28 kersten1 committed "af363efb8568874fe219bc73f3bccd0f4991907f" to "refs/heads/main" branch 2022/11/28 19:45:28 ibmcloud ce buildrun submit ...Sua saída depende do aplicativo que você usa e do repositório GitHub que contém o webhook.
Seu webhook está funcionando! Agora seu app recebe notificação sempre que você confirmar um arquivo em seu repositório GitHub.
Este aplicativo estabelece a escala mínima para 1 para que uma instância do app esteja sempre em execução. É possível configurar a escala para 0, atualizando o app com o seguinte comando. ibmcloud ce app update --name my-github-app --min-scale 0.
Limpar
Depois de concluir este tutorial, é possível limpar os recursos criados com os comandos a seguir.
-
Excluir seu aplicativo
ibmcloud ce app delete --name my-github-appQuando você exclui seu app, os arquivos de construção associados também são excluídos.
-
Exclua o webhook abrindo suas configurações do GitHub-> Webhooks e clicando em Excluir após o nome do webhook.
-
Exclua as imagens que a compilação criou a partir de IBM Cloud Container Registry.
- Navegue até Registro no console IBM Cloud.
- Localize o archive e a imagem associados ao seu aplicativo procurando o nome do seu aplicativo.
- Selecione o archive e a imagem e exclua.