Je voudrais créer un webhook dans Gitlab pour mettre à jour automatiquement un référentiel miroir sur Github, chaque fois qu'un événement Push
se produit. J'ai vérifié cela page , mais je n'ai pas compris comment cela se faisait.
Ma version de 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?
Vous n'avez pas besoin d'un webhook pour cela. Un crochet post-réception régulier fonctionnera très bien.
Pour créer et utiliser un tel hook, il vous suffit de vous connecter sur le serveur sur lequel votre gitlab est installé et de créer une clé ssh pour l'utilisateur git.
Sudo -u git ssh-keygen -f /home/git/.ssh/reponame_key
(ne saisissez aucune phrase secrète lorsque vous y êtes invité)
Accédez à votre compte github et ajoutez la clé publique (elle a été créée en tant que /home/git/ssh/reponame_key.pub
) à votre projet en tant que clé de déploiement. jetez un oeil à https://help.github.com/articles/managing-deploy-keys si vous avez besoin d'aide pour cela.
Une fois cela fait, il vous suffit de configurer la connexion entre votre serveur git et github: ajoutez un alias à la configuration ssh de l'utilisateur git (ajoutez les lignes suivantes à /home/git/.ssh/config
- créez-le s'il n'est pas présent)
Host reponame
IdentityFile /home/git/.ssh/reponame_key
HostName github.com
User git
Ajoutez maintenant la nouvelle télécommande (en utilisant l'alias que vous venez de créer) à votre référentiel:
cd /home/git/repositories/namespace/reponame.git
git remote add --mirror github reponame:youruser/reponame.git
Maintenant que tout est en place, vous devrez créer le crochet réel:
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!
(Remplacez le nom, l'espace de noms et votre utilisateur en fonction de vos comptes réels et profitez-en).
Dernière note: si vous voulez que votre nom et votre avatar soient validés sur github, assurez-vous que l'adresse e-mail que vous utilisez sur gitlab est également l'une des adresses encrées sur votre compte github. Sinon, vous verrez votre nom d'utilisateur gitlab.
Si vous n'hébergez pas votre propre GitLab, GitLab.com a introduit cette fonctionnalité directement, sans aucune solution de contournement.
https://yourgithubusername:[email protected]/agaric/guts_discuss_resource.git
—Comme indiqué dans les commentaires, il est beaucoup mieux en termes de sécurité d'utiliser votre jeton d'accès GitHub ici au lieu des informations de connexion; mettra à jour la réponse lorsque j'aurai testé.Pour le traitement des WebHooks, j'utilise le serveur Web sinatra.
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 les événements Push (ou autres) sur http://localhost:4567/pew
dans GitLab et depuis ce moment sur chaque commit gitlab enverra des informations de commit à url.