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 :
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