Pousser automatiquement les commits de Gitlab dans GitHub

J’utilise pour mes projets un gitlab interne.
Certains de mes projets sont aussi disponible sur mon github.

Je voulais donc que gitlab pousse directement mes commits dans github. Pourquoi gitlab et non pas mon ordinateur ? Car si je souhaite développer à partir d’une autre machine ou bien si un de mes collègues décide de contribuer à un de mes projets hébergé sur mon gitlab, je veux que github reflète les commits effectués sur mon instance gitlab locale et ce par projet.

J’utilise les packages fourni par les repositories de gitlab

Ici je vais modifier mon projet appelé « Zimbra-Collaboration-Products-Comparaison », dans les commandes ci-dessous on retrouvera en rouge le nom de mon projet.
Tout d’abord on commence par créer une clef ssh pour notre utilisateur git :

sudo -u git ssh-keygen -f /var/opt/gitlab/.ssh/Zimbra-Collaboration-Products-Comparaison_key

Veillez à ne pas mettre de passphrase

Une fois la clef créée, copier-coller la clef publique (/var/opt/gitlab/.ssh/Zimbra-Collaboration-Products-Comparaison_key.pub) dans le projet hébergé sur github :
Gitlab-GitHub-1

Veillez bien à cliquer sur « Allow Write Access »

Ensuite sur votre instance gitlab, on va configurer des hôtes ssh relatifs àvos projets avec des clefs ssh spécifiques pour chaque hôte.

On modifie donc le fichier de configuration ssh de l’utilisateur git :

/var/opt/gitlab/.ssh/config

On ajoute donc les informations suivantes :

Host Zimbra-Collaboration-Products-Comparaison
IdentityFile /var/opt/gitlab/.ssh/Zimbra-Collaboration-Products-Comparaison_key
HostName github.com
User git

Et enfin, on configure notre dépot local pour qu’il pousse les commits automatiquement:

cd /var/opt/gitlab/git-data/repositories/Zimbra-Collaboration-Projects/Zimbra-Collaboration-Products-Comparaison.git
git remote add --mirror github Zimbra-Collaboration-Products-Comparaison:wolfyzvf/Zimbra-Collaboration-Products-Comparaison

Petite explication :
1. Zimbra-Collaboration-Products-Comparaison : nom de l’hôte dans la configuration ssh
2. wolfyzvf : Nom d’utilisateur github
3. Zimbra-Collaboration-Products-Comparaison : nom du dépôt dans github

Puis on utilise les customs hooks de gitlab:

mkdir /var/opt/gitlab/git-data/repositories/Zimbra-Collaboration-Projects/Zimbra-Collaboration-Products-Comparaison.git/custom_hooks
cd /var/opt/gitlab/git-data/repositories/Zimbra-Collaboration-Projects/Zimbra-Collaboration-Products-Comparaison.git/custom_hooks
echo '#!/bin/bash \ exec git push --quiet github' > post-receive
chmod 755 post-receive
chown git:git post-receive

et voila il ne reste plus qu’à commiter !

Références :
Stackoverflow
Gitlab

2 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.