
WebHook est un outil configurable léger écrit en Go, qui vous permet de créer facilement des points de terminaison HTTP (crochets) sur votre serveur, que vous pouvez utiliser pour exécuter des commandes configurées. Vous pouvez également transmettre des données de la demande HTTP (telles que les en-têtes, la charge utile ou les variables de requête) à vos commandes. WebHook vous permet également de spécifier des règles qui doivent être satisfaites pour que le crochet soit déclenché.
Par exemple, si vous utilisez GitHub ou BitBucket, vous pouvez utiliser WebHook pour configurer un crochet qui exécute un script RedEploy pour votre projet sur votre serveur de mise en scène, chaque fois que vous poussez les modifications à la branche principale de votre projet.
Si vous utilisez Matter Most ou Slack, vous pouvez configurer une "intégration Webhook sortante" ou "Slash Commande" pour exécuter diverses commandes sur votre serveur, qui peut ensuite vous rendre compte directement à vous ou à vos canaux en utilisant les "intégrations Webhook entrantes", ou le corps de réponse approprié.
Webhook vise à ne rien faire de plus qu'il ne devrait le faire, et c'est:
Tout le reste est la responsabilité de l'auteur du commandement.
| Gateway webhook scriptable pour exécuter en toute sécurité vos builds, déploiements et scripts proxy personnalisés sur vos serveurs. | Une passerelle d'événement pour ingérer de manière fiable, vérifier, faire la file d'attente, transformer, filtrer, inspecter, surveiller et rejouer les webhooks. |
Pour commencer, assurez-vous d'abord de configurer correctement votre environnement GO 1.21 ou plus récent, puis exécutez
$ go build github.com/adnanh/webhookPour créer la dernière version du webhook.
Si vous utilisez Ubuntu Linux (17.04 ou version ultérieure), vous pouvez installer WebHook à l'aide de sudo apt-get install webhook qui installera la version emballée communautaire.
Si vous utilisez Debian Linux ("Stretch" ou version ultérieure), vous pouvez installer WebHook à l'aide sudo apt-get install webhook qui installera la version emballée de la communauté (merci @freeekanayaka) à partir de https://packages.debian.org/sid/webhook
Si vous utilisez FreeBSD, vous pouvez installer WebHook à l'aide de pkg install webhook .
Des binaires prédéfinis pour différentes architectures sont disponibles dans les sorties GitHub.
La prochaine étape consiste à définir certains crochets que vous voulez que WebHook serve. WebHook prend en charge les fichiers de configuration JSON ou YAML, mais nous nous concentrerons principalement sur JSON dans l'exemple suivant. Commencez par créer un fichier vide nommé hooks.json . Ce fichier contiendra un tableau de crochets que Webhook servira. Vérifiez la page de définition du crochet pour voir la description détaillée des propriétés qu'un crochet peut contenir et comment les utiliser.
Définissons un simple crochet nommé redeploy-webhook qui exécutera un script Redeploy situé dans /var/scripts/redeploy.sh . Assurez-vous que votre script bash a #!/bin/sh shebang sur le dessus.
Notre fichier hooks.json ressemblera maintenant à ceci:
[
{
"id" : " redeploy-webhook " ,
"execute-command" : " /var/scripts/redeploy.sh " ,
"command-working-directory" : " /var/webhook "
}
] Remarque: Si vous préférez YAML, le fichier hooks.yaml équivalent serait:
- id : redeploy-webhook
execute-command : " /var/scripts/redeploy.sh "
command-working-directory : " /var/webhook "Vous pouvez maintenant exécuter webhook en utilisant
$ /path/to/webhook -hooks hooks.json -verboseIl démarrera sur le port par défaut 9000 et vous fournira un point de terminaison HTTP
http://yourserver:9000/hooks/redeploy-webhookConsultez la page des paramètres de webhook pour voir comment remplacer l'IP, le port et d'autres paramètres tels que Hook HotReload, Verbose Sortie, etc., lors du démarrage du WebHook.
En effectuant une demande ou une demande HTTP GET ou POST à ce point de terminaison, votre script de redéploiment spécifié serait exécuté. Soigné!
Cependant, Hook défini comme celui-ci pourrait constituer une menace de sécurité à votre système, car toute personne qui connaît votre point de terminaison peut envoyer une demande et exécuter votre commande. Pour éviter cela, vous pouvez utiliser la propriété "trigger-rule" pour votre crochet, pour spécifier les circonstances exactes dans lesquelles le crochet serait déclenché. Par exemple, vous pouvez les utiliser pour ajouter un secret que vous devez fournir en tant que paramètre afin de déclencher avec succès le crochet. Veuillez consulter la page des règles de crochet pour une liste détaillée des règles disponibles et leur utilisation.
WebHook fournit une prise en charge limitée l'analyse des données de formulaire en plusieurs participants. Les données de formulaire en multiparant peuvent contenir deux types de pièces: les valeurs et les fichiers. Toutes les valeurs de formulaire sont automatiquement ajoutées à la portée payload . Utilisez les paramètres parse-parameters-as-json pour analyser une valeur donnée sous forme de JSON. Tous les fichiers sont ignorés à moins qu'ils ne correspondent à l'un des critères suivants:
Content-Type est application/json .parse-parameters-as-json . Dans les deux cas, la pièce de fichier donnée sera analysée en JSON et ajoutée à la carte payload .
WebHook peut analyser le fichier de configuration des crochets en tant que modèle GO lorsqu'il est donné le paramètre CLI -template . Voir la page Templates pour plus de détails sur l'utilisation du modèle.
WebHook par défaut sert des crochets à l'aide de http. Si vous souhaitez que WebHook serve de contenu sécurisé à l'aide de HTTPS, vous pouvez utiliser l'indicateur -secure tout en démarrant WebHook. Les fichiers contenant un certificat et la clé privée correspondante pour le serveur doivent être fournis à l'aide des indicateurs -cert /path/to/cert.pem et -key /path/to/key.pem . Si le certificat est signé par une autorité de certificat, le fichier CERT doit être la concaténation du certificat du serveur suivi par le certificat de l'AC.
La version TLS et les drapeaux de sélection de la suite de chiffres sont disponibles à partir de la ligne de commande. Pour répertorier les suites de chiffre d'affaires disponibles, utilisez l'indicateur -list-cipher-suites . L'indicateur -tls-min-version peut être utilisé avec -list-cipher-suites .
WebHook peut être exécuté derrière un "proxy inversé" - un autre serveur orienté Web tel qu'Apache HTTPD ou NGINX qui accepte les demandes des clients et les transmet à [WebHook] [H]. Vous pouvez faire écouter WebHook sur un port TCP ordinaire ou sur une prise de domaine UNIX (avec l'indicateur -socket ), puis configurez votre proxy pour envoyer des demandes de nom d'hôte ou de sous-chemin spécifique sur ce port ou ce socket sur WebHook.
Notez que lors de l'exécution dans ce mode, la règle de déclenchement ip-whitelist ne fonctionnera pas comme prévu, car elle vérifiera l'adresse du proxy , pas le client . Les restrictions IP du client devront être appliquées dans le proxy, avant qu'il ne décide de transférer la demande à WebHook.
Si vous souhaitez définir des en-têtes CORS, vous pouvez utiliser l'indicateur -header name=value lors du démarrage de WebHook pour définir les en-têtes CORS appropriés qui seront retournés à chaque réponse.
systemdSur les plates-formes qui utilisent SystemD, WebHook prend en charge le mécanisme d'activation du socket . Si WebHook détecte qu'il a été lancé à partir d'une prise gérée par Systemd, elle l'utilisera automatiquement au lieu d'ouvrir son propre port d'écoute. Voir la page Systemd pour plus de détails.
Vous pouvez utiliser l'une des images Docker suivantes ou créer la vôtre (veuillez lire cette discussion):
Consultez la page Exemples de crochets pour des exemples plus complexes de crochets.
Voir le référentiel Webhook-Contrib pour une collection d'outils et d'aides liés à WebHook qui ont été apportés par la communauté WebHook.
Consultez les problèmes existants pour voir si quelqu'un d'autre a également eu le même problème, ou en ouvrir un nouveau.
DigitalOcean est une plate-forme de cloud computing simple et robuste, conçue pour les développeurs.
Browserstack est un outil de test croisé basé sur le cloud qui permet aux développeurs de tester leurs sites Web sur divers navigateurs sur différents systèmes d'exploitation et appareils mobiles, sans obliger les utilisateurs à installer des machines, des appareils ou des émulateurs virtuels.
Soutenez ce projet en devenant un sponsor. Votre logo apparaîtra ici avec un lien vers votre site Web.
Ce projet existe grâce à toutes les personnes qui contribuent. Contribuer!.
Merci à tous nos bailleurs de fonds!
La licence du MIT (MIT)
Copyright (C) 2015 Adnan Hajdarevic [email protected]
L'autorisation est accordée gratuitement à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sublince et / ou de vendre des copies des conditions suivantes.
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les titulaires de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, ou en relation avec le logiciel ou l'utilisation ou d'autres transactions dans le logiciel.