web-dev-qa-db-fra.com

Comment créer un webhook GitLab?

J'ai lu que GitLab est capable d'envoyer des messages à d'autres serveurs via des "hooks web" mais je ne trouve pas on en créerait un.

Quelqu'un peut me diriger dans la bonne direction?

38
leech

Toutes les réponses que j'ai trouvées dans la documentation officielle et sur Stack Overflow pour trouver les hooks web sont incorrectes. La page admin area > hooks Ne contient PAS crochets Web . Il contient des crochets système , qui se déclenchent lorsque vous créez/supprimez des projets et des utilisateurs et des choses comme ça. Ce n'est pas ce que tu veux.

Pour trouver vos hooks web, rendez-vous sur la page specific project > settings > web hooks (on sidebar in GitLab 6.1.0). Ceux-ci se déclencheront après réception pour le projet en question. Vous pouvez utiliser un service comme RequestBin pour voir à quoi ressemble la charge utile et pour vous assurer que vous les déclenchez correctement à des fins de débogage.

62
Jamey

Avec la version 8.16.1, j'ai trouvé les crochets Web sous

specific project > settings > integrations

enter image description here

23
derwiwie

Pour les hooks au niveau du groupe:

visite: https://gitlab.com/groups/<yourgroup>/hooks

Pour les hooks de niveau projet de groupe:

visite: https://gitlab.com/yourgroup/yourproject/hooks

5
Blair Anderson

Vous pouvez voir un exemple de hook système GitLab, avec une création web_hook.rb dans ce projet GitHub .

Dans gitlab, en tant qu'administrateur, allez dans l'onglet "Hooks", créez un hook comme: http://your.ip.goes.here:80

ou changez le port sur la ligne 175 du script.

Pour les crochets Web, voir Jamey 's réponse plus précise .

Vous pouvez inspecter le résultat d'un webhook avec un service comme RequestBin .
Un autre exemple d'interprétation de webhook: cette question .

Sachez cependant que quelques problèmes persistent avec le webhook gitlab:

4
VonC

Je recommande d'utiliser GitLabForm - configuration comme outil de code pour GitLab - pour configurer les webhooks avec du code comme ceci:

project_settings:
  my_group/my_project:
    hooks:
      hooks:
      'http://127.0.0.1:5000/hooks/my-hook-endpoint':
        Push_events: false # this is set to true by GitLab API by default
        merge_requests_events: true
        token: some_secret_auth_token

Divulgation: J'ai écrit cet outil et mon entreprise l'a source ouverte.

3
Greg Dubicki