Synchroniser son serveur web avec github

Github est un bon moyen de partager ses sources, et intégré dans un workflow, c’est un outil puissant et très efficace. C’est aussi un bon moyen de déployer ses fichiers et sources sur son serveur personnel.
Ne serait-il pas merveilleux si, à chaque fois que vous poussez des mises à jour vers GitHub, que ces nouveaux fichiers seraient automatiquement mis à jour sur votre serveur en direct?

Je vais prendre pour aquis le fait que vous maitrisez Git, que la ligne de commande n’est pas votre ennemie (il n’y aura pas grand chose à y faire promis !) et que vous avez déjà un repo contenant des fichiers.

1ère étape : Génerer sa clé ssh.

Commencez par vous connecter en SSH à votre serveur personnel.

$: ssh -l votrelogin adresseduserveur
<entrez votre mot de passe>
$: cd ~/.ssh
$: ls -al
<Liste les fichiers dans votre répertoire .ssh>

Si vous pouvez voir des fichiers nommés id_rsa.pub ou id_dsa.pub,
vous pouvez passer directement à l’étape #2.

Sinon :

$: ssh-keygen -t rsa -C "[email protected]"
<cela va créer une clé ssh avec votre email comme label>
#Generating public/private rsa key pair.
# Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Presser entrer]
<A ce moment le serveur va vous demander une passphrase, non obligatoire.>

Le serveur va répondre quelque chose comme ceci :

Your identification has been saved in /Users/you/.ssh/id_rsa.
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]

Il faut maintenant ajouter la clé à ssh-agent.

$: ssh-add ~/.ssh/id_rsa

Ceci fait, il faut copier la clé dans votre presse-papier, la commande pbcopy s’en charge très bien.

$: pbcopy < ~/.ssh/id_rsa.pub

Maintenant, il faut se rendre sur Github pour déclarer cette nouvelle clé.

  • Aller dans la partie SSH Keys.
  • Cliquer sur Add SSH key
  • Mettez une description pour la clé, par exemple « Serveur Perso »
  • Collez la clé ( CTRL-V, CMD-V, Clic-droit : coller)
  • Cliquez sur Add key
  • Confirmez votre choix en entrant votre mot de passe github.

##2ème étape : Tester sa clé SSH.

Très bien, on a généré la clé, il faut maintenant tester pour voir si elle fonctionne bien et communique correctement avec Github.

Retour dans le terminal :

$: ssh -T [email protected]

Vous allez très certainement voir un message tel que :

The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

Tapez en toutes lettres yes.

Vous devriez voir ceci apparaitre :

Hi username! You’ve successfully authenticated, but GitHub does not
# provide shell access.

Si vous avez des problèmes, github fourni un lien pour vérifier que tout est correct ici

##3ème étape : Cloner le repo.

Pour le moment, on a une clé SSH qui permet de communiquer direct vers github. Maintenant, cd vers le répertoire parent de l’endroit où nous voulons stocker le clone du repo github.

Par exemple :

$: cd /mondomaine/repertoire-ou-je-veux-stocker-la-chose

En n’oubliant pas que Git crée un répertoire pour le repo, et y glisse les fichiers à l’intérieur.

Une fois à l’endroit ou l’on souhaite stocker les fichiers sources.
Cloner le repo :

$: git clone [email protected]:votrenom/votrerepo.git

L’adresse peut être aisément trouvée sur la colone de droite de votre repo sur github : ssh clone url.

Le serveur devrait vous rappatrier tout les fichiers de votre repo maintenant. Une fois l’opération terminée, vérifiez si les fichiers sont bien présents. ( ls est votre ami). Si c’est le cas, parfait ! Il ne nous reste plus qu’un étape !

4ème et dernière étape : activer la synchro

Très bien, votre repo est cloné. Il faut maintenant paramétrer github pour qu’a chaque mise à jour de votre part, il notifie le serveur, et que celui-ci télécharge les nouvelles données.

Direction votre serveur de nouveau

  • Allez dans le répertoire de votre repo.
  • Créez un nouveau fichier nommé github-sync.php
  • Ouvrez le fichier et collez-y ceci :
<?php `git pull`;
  • Notez vous l’url d’accès direct à ce fichier par exemple : http://demo.demo.com/votrerepo/github-sync.php
  • Rendez vous sur github, dans les paramètres de votre repo.
  • Allez dans la partie Webhooks & Services
  • Cliquez sur Add Webhook
  • Remplissez la case Payload URL avec l’url d’accès direct à votre fichier de sync : http://demo.demo.com/votrerepo/github-sync.php
  • Dans Content Type sélectionner application/json
  • Laisser « Secret » vide.
  • Selectionnez dans les choix en dessous Just the push event
  • Cochez la case Active (c’est mieux…)
  • Puis finaliser en cliquant sur Add webhook.

Voila c’est terminé, dorénavant, lorsque vous « commiterez » sur votre github, votre serveur rappatriera tout seul les nouveaux fichiers !

Si jamais vous avez des questions, n’hésitez pas, j’essayerais d’y répondre assez rapidement !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *