
O Webhook é uma ferramenta configurável leve escrita em Go, que permite criar facilmente pontos de extremidade HTTP (ganchos) no seu servidor, que você pode usar para executar comandos configurados. Você também pode passar dados da solicitação HTTP (como cabeçalhos, carga útil ou variáveis de consulta) para seus comandos. O WebHook também permite que você especifique regras que devem ser satisfeitas para que o gancho seja acionado.
Por exemplo, se você estiver usando o Github ou o Bitbucket, poderá usar o WebHook para configurar um gancho que executa um script de reimplantação para o seu projeto no seu servidor de estadiamento, sempre que você pressionar as alterações na filial principal do seu projeto.
Se você usar o Matter ou Slack, poderá configurar uma "integração de webhook de saída" ou "comando SLASH" para executar vários comandos no seu servidor, que podem se reportar diretamente diretamente a você ou a seus canais usando as "integrações de webhook de entrada" ou o corpo de resposta apropriado.
Webhook pretende fazer nada mais do que deveria, e isso é:
Todo o resto é de responsabilidade do autor do comando.
| Gateway webhook scriptable para executar com segurança suas compilações, implanta e scripts proxy personalizados em seus servidores. | Um gateway de eventos para ingerir, verificar, fazer fila, transformar, filtrar, inspecionar, monitorar e reproduzir webhooks. |
Para começar, primeiro verifique se você configurou corretamente o seu ambiente 1.21 ou mais recente e depois execute
$ go build github.com/adnanh/webhookPara construir a versão mais recente do webhook.
Se você estiver usando o Ubuntu Linux (17.04 ou posterior), poderá instalar o WebHook usando sudo apt-get install webhook que instalará a versão embalada da comunidade.
Se você estiver usando o Debian Linux ("Stretch" ou mais tarde), poderá instalar o Webhook usando sudo apt-get install webhook , que instalará a versão embalada da comunidade (obrigado @freeekanayaka) em https://packages.debian.org/sid/webhook
Se você estiver usando o FreeBSD, pode instalar o Webhook usando pkg install webhook .
Os binários pré -construídos para diferentes arquiteturas estão disponíveis nos lançamentos do GitHub.
O próximo passo é definir alguns ganchos que você deseja que o Webhook sirva. O Webhook suporta arquivos de configuração JSON ou YAML, mas focaremos principalmente no JSON no exemplo a seguir. Comece criando um arquivo vazio chamado hooks.json . Este arquivo conterá uma matriz de ganchos que o webhook servirá. Verifique a página Definição do gancho para ver a descrição detalhada de quais propriedades um gancho pode conter e como usá -las.
Vamos definir um gancho simples chamado redeploy-webhook que executará um script de reimplantação localizado em /var/scripts/redeploy.sh . Certifique -se de que seu script bash tenha #!/bin/sh shebang por cima.
Nosso arquivo hooks.json agora ficará assim:
[
{
"id" : " redeploy-webhook " ,
"execute-command" : " /var/scripts/redeploy.sh " ,
"command-working-directory" : " /var/webhook "
}
] NOTA: Se você preferir YAML, o arquivo hooks.yaml equivalentes. YAML seria:
- id : redeploy-webhook
execute-command : " /var/scripts/redeploy.sh "
command-working-directory : " /var/webhook "Agora você pode executar webhook usando
$ /path/to/webhook -hooks hooks.json -verboseEle começará na porta 9000 padrão e fornecerá um terminal HTTP
http://yourserver:9000/hooks/redeploy-webhookVerifique a página Parâmetros do WebHook para ver como substituir o IP, a porta e outras configurações, como Hook HotReload, saída detalhada, etc. ao iniciar o webhook.
Ao executar uma solicitação simples de GET ou postagem HTTP para esse endpoint, seu script de reimplantação especificado seria executado. Organizado!
No entanto, o gancho definido como esse pode representar uma ameaça à segurança para o seu sistema, porque quem conhece seu terminal, pode enviar uma solicitação e executar seu comando. Para evitar isso, você pode usar a propriedade "trigger-rule" para o seu gancho, para especificar as circunstâncias exatas sob as quais o gancho seria acionado. Por exemplo, você pode usá -los para adicionar um segredo que você deve fornecer como parâmetro para acionar com êxito o gancho. Confira a página Regras do gancho para obter uma lista detalhada das regras disponíveis e seu uso.
Webhook fornece suporte limitado a análise dos dados do formulário multipart. Os dados do formulário multipartida podem conter dois tipos de peças: valores e arquivos. Todos os valores de formulário são adicionados automaticamente ao escopo payload . Use as configurações parse-parameters-as-json para analisar um determinado valor como JSON. Todos os arquivos são ignorados, a menos que correspondam a um dos seguintes critérios:
Content-Type é application/json .parse-parameters-as-json . Em ambos os casos, a peça de arquivo fornecida será analisada como JSON e adicionada ao mapa payload .
O Webhook pode analisar o arquivo de configuração de ganchos como um modelo Go ao receber o parâmetro -template CLI. Consulte a página Modelos para obter mais detalhes sobre o uso do modelo.
Webhook por padrão serve ganchos usando HTTP. Se você deseja que o WebHook sirva de conteúdo seguro usando HTTPS, você pode usar o sinalizador -secure enquanto inicia o Webhook. Os arquivos que contêm um certificado e a chave privada correspondentes para o servidor devem ser fornecidos usando os sinalizadores -cert /path/to/cert.pem e -key /path/to/key.pem . Se o certificado for assinado por uma autoridade de certificado, o arquivo certificado deverá ser a concatenação do certificado do servidor seguido pelo certificado da CA.
A versão TLS e os sinalizadores de seleção de suíte cifra estão disponíveis na linha de comando. Para listar as suítes cifras disponíveis, use o sinalizador -list-cipher-suites . O sinalizador -tls-min-version pode ser usado com -list-cipher-suites .
O Webhook pode estar atrás de um "proxy reverso" - outro servidor voltado para a Web, como o Apache HTTPD ou NGINX, que aceita solicitações de clientes e os encaminha para [webhook] [h]. Você pode ouvir Webhook em uma porta TCP regular ou em um soquete de domínio UNIX (com o sinalizador -socket ) e configurar seu proxy para enviar solicitações para um nome ou sub -caminho do host específico sobre essa porta ou soquete para Webhook.
Observe que, ao executar nesse modo, a regra de gatilho ip-whitelist não funcionará conforme o esperado, pois verificará o endereço do proxy , não o cliente . As restrições de IP do cliente precisarão ser aplicadas dentro do proxy, antes de decidir se deve encaminhar a solicitação ao webhook.
Se você deseja definir os cabeçalhos CORS, pode usar o -header name=value enquanto inicia o Webhook para definir os cabeçalhos CORS apropriados que serão devolvidos a cada resposta.
systemdEm plataformas que usam o Systemd, o Webhook suporta o mecanismo de ativação do soquete . Se o Webhook detectar que foi lançado a partir de um soquete gerenciado pelo SystemD, ele usará automaticamente isso em vez de abrir sua própria porta de escuta. Consulte a página Systemd para obter detalhes completos.
Você pode usar uma das seguintes imagens do Docker ou criar o seu próprio (leia esta discussão):
Confira a página Exemplos de gancho para obter exemplos mais complexos de ganchos.
Consulte o repositório Webhook-Contrib para obter uma coleção de ferramentas e ajudantes relacionados ao Webhook que foram contribuídos pela comunidade Webhook.
Confira os problemas existentes para ver se outra pessoa também teve o mesmo problema ou abra um novo.
O Digitalocean é uma plataforma de computação em nuvem simples e robusta, projetada para desenvolvedores.
O BrowSerstack é uma ferramenta de teste de navegador cruzada baseada em nuvem que permite aos desenvolvedores testar seus sites em vários navegadores em diferentes sistemas operacionais e dispositivos móveis, sem exigir que os usuários instalem máquinas, dispositivos ou emuladores virtuais.
Apoie este projeto, tornando -se um patrocinador. Seu logotipo aparecerá aqui com um link para o seu site.
Este projeto existe graças a todas as pessoas que contribuem. Contribuir!.
Obrigado a todos os nossos apoiadores!
A licença do MIT (MIT)
Copyright (c) 2015 Adnan Hajdarevic [email protected]
A permissão é concedida, gratuita, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "software"), para lidar com o software sem restrição, inclusive sem limitação os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, mobilizar o software e/ou vender cópias do software e permitir que as pessoas a quem
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em partes substanciais do software.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.