Comment créer un webhook Gitlab pour mettre à jour un miroir repo sur Github?

je voudrais créer un webhook au sein de Gitlab pour mettre à jour automatiquement un dépôt miroir sur Github, chaque fois qu'un push événement se produit. J'ai vérifié ce page, mais je n'ai pas compris comment c'est fait.

ma version Gitlab est 6.5. Voici la page de configuration:

inserir a descrição da imagem aqui

Que dois-je mettre dans L'URL? Où dois-je placer le script pour mettre à jour le référentiel?

32
demandé sur Yamaneko 2014-02-23 05:11:52

3 réponses

Vous n'avez pas besoin d'un webhook. Un crochet post-réception régulier fonctionnera très bien.

pour créer et utiliser un tel crochet, vous n'avez qu'à vous connecter sur le serveur où votre gitlab est installé et à créer une clé SSH pour l'utilisateur git.

sudo -u git ssh-keygen -f /home/git/.ssh/reponame_key

(ne tapez pas de phrase de passe lorsqu'on vous le demande)

allez sur votre compte github et ajoutez la clé publique (elle a été créée comme /home/git/ssh/reponame_key.pub) à votre projet comme clé de déploiement. jetez un oeil à https://help.github.com/articles/managing-deploy-keys si vous avez besoin d'aide avec cela.

une fois que c'est fait, il vous suffit de configurer la connexion entre votre serveur git et celui de github: ajouter un alias à la configuration ssh de l'utilisateur git (ajouter les lignes suivantes à /home/git/.ssh/config - créer si il n'est pas présent)

Host reponame  
IdentityFile /home/git/.ssh/reponame_key  
HostName github.com  
User git 

Maintenant, ajoutez la nouvelle télécommande (en utilisant l'alias que vous venez de créer) à votre dépôt:

cd /home/git/repositories/namespace/reponame.git

git remote add --mirror github reponame:youruser/reponame.git

maintenant que tout est en place, vous avoir pour créer la boucle:

cd /home/git/repositories/namespace/reponame.git/hooks

echo "exec git push --quiet github &" >> post-receive

chmod 755 post-receive

la dernière commande est très importante car git vérifiera si un hook est exécutable avant de l'exécuter.

C'est ça!

(remplacer reponame, namespace et youruser selon vos comptes réels et enjoy).

dernière note: si vous voulez que votre nom et votre avatar soient près de s'engager sur GitHub, assurez-vous que l'adresse email que vous utilisez sur gitlab est une des adresses reliées à votre compte GitHub. Vous verrez votre nom d'utilisateur gitlab autrement.

41
répondu novalore 2016-01-20 10:26:43

si vous n'hébergez pas votre propre GitLab, GitLab.com a introduit cette fonctionnalité directement, sans aucune solution de rechange.

  1. de l'intérieur d'un projet utilisez l'icône d'engrenage pour sélectionner Dépôt Miroir
  2. Faites défiler vers le bas jusqu'à Pousser à un dépôt distant
  3. cocher dépôt miroir à distance: mise à jour automatique des branches, tags et propagations du miroir distant à partir de ce dépôt toutes les heures.
  4. Entrée le dépôt que vous voulez mettre à jour; pour GitHub vous pouvez inclure votre nom d'utilisateur et mot de passe dans L'URL, comme suit: https://yourgithubusername:yourgithubpassword@github.com/agaric/guts_discuss_resource.git
26
répondu mlncn 2016-07-11 08:55:16

pour le traitement WebHooks j'utilise sinatra Web server.

require 'sinatra'
post '/pew' do
  puts JSON.parse request.body.read
  # here can be placed signal code to run commit processing script
end

enregistrer le webhook pour pousser les événements(ou les autres)http://localhost:4567/pew au sein de GitLab et depuis ce moment sur chaque gitlab de commit va envoyer des informations de commit à url.

1
répondu Nikolay Ruban 2014-06-25 13:27:44