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:
Que dois-je mettre dans L'URL? Où dois-je placer le script pour mettre à jour le référentiel?
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.
si vous n'hébergez pas votre propre GitLab, GitLab.com a introduit cette fonctionnalité directement, sans aucune solution de rechange.
- de l'intérieur d'un projet utilisez l'icône d'engrenage pour sélectionner Dépôt Miroir
- Faites défiler vers le bas jusqu'à Pousser à un dépôt distant
- 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.
- 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
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.