Introduction


Git(lab?) est un outil de gestion de versions comme subversion. GitHub est une instance publique de l'outil Git, beaucoup de logiciels libres y mettent à dispo leurs sources. Il permet à plusieurs développeurs de travailler sur un même projet, aux utilisateurs de remonter des bugs et ça peut servir au SysAdmin pour déployer des applications. Mais le SysAdmin peut aussi s'en servir pour y diffuser ses petits scripts :-)

Comme tous les articles de la rubrique Tips, il est succinct au départ mais je continuerai de l'alimenter au fur et à mesure.

Créer le repository sur github.com


On peut créer un repo en ligne de commande depuis le serveur où l'on a notre script à diffuser. Dans la pratique, je préfère créer le repo sur github.com puis le cloner sur le serveur avant d'y ajouter mes fichiers.

Une fois connecté et sur la page de votre compte, cliquez sur l'onglet Repositories puis cliquez sur New :
github_repo1.png

Saisissez le nom du projet, il sert aussi à générer l'URL du repo. Ajoutez un readme et une licence puis validez la création :
github_repo2.png

Configurer son repository local


On installe le binaire git sinon ça va pas très bien marcher :
yum install git

On a donc créé une forme d'ossature de notre projet Git, il faut la télécharger sur notre machine. Cette étape est à faire avant d'ajouter nos fichiers.
Dans notre home, par exemple, clonez le projet, ce qui va créer un dossier au nom du projet :
cd <home_dir>
git clone https://github.com/<mon_uid>/<mon_repo>
cd <mon_repo>/
git status

Il y a un petit peu de configuration à faire, c'est l'identité de la personne qui fera les commits :
git config --global user.mail <mon_email>
git config --global user.name <mon_nom>


J'ai des problèmes avec l'authentification normale quand je suis dans un shell, j'utilise donc la méthode d'échange de clés SSH.
Il faut générer une clé publique sur la machine et y définir une passphrase :
ssh-keygen -t rsa -C "<mon_email>"

Puis la copier coller dans l'interface web de GitHub, je vous ai fais une série de screens afin de trouver rapidement le chemin jusqu'à la gestion des clés :
github_repo3.png

github_repo4.png

github_repo5.png

Il reste à saisir un nom pour identifier notre machine et copier/coler la clé publique qui se trouve dans votre home :
cd
cat .ssh/id_rsa.pub


Nous avons finit la configuration du repo en local et sur GitHub. Ajoutons des fichiers !

Premier commit


Avant de faire un commit, il faut modifier notre projet.
On se place à la racine de notre projet et on y copie tous nos ptits fichiers :
cd /<mon_home>/<mon_repo>
cp -p <mes_fichiers> .

Si on fait un git status à ce moment, il va nous lister les nouveaux fichiers comme n'étant pas dans le projet.
Il faut simplement les ajouter (on peut ajouter un seul fichier à la fois) :
git add *

Puis, on prépare le commit, il s'agit simplement de mettre un libellé indiquant ce que fait le commit.
Dans la majorité des cas, nous, on mettra "First release" :-)
git commit -m "<Ma_release>"
git push git@github.com:<mon_uid>/<mon_repo>.git


Et voila ! Enfin, on va peut être aller plus loin, nan ?

Les fichiers de configuration


Alors si vous travaillez comme un bourrin, comme moi quoi, vous testez surement votre script en même temps que vous l'écrivez. Il y a donc des infos confidentielles dedans : adresses mails/IP, paramètres de connexion mysql/ldap/etc.
Il suffit de créer un fichier externe avec tous vos paramètres, on inclura une version sample dans le projet et on ne synchronisera pas notre fichier contenant les vrais paramètres.
On va créer un fichier .gitignore à la racine du projet et qui va servir de black liste, les fichiers listés dans .gitignore ne seront jamais synchronisés :
cd /<mon_home>/<mon_repo>
vim .gitignore


Avec comme contenu :
<mon_fichier>.conf

Puis on copie notre fichier de conf vers un fichier d'exemple que l'on va rendre générique :
cp -p <mon_fichier>.conf <mon_fichier>.conf.sample
vim <mon_fichier>.conf.sample

Supprimer des fichiers sur le repo


On va à la racine de notre projet, on retire les fichiers du projet puis on commit :
cd <mon_projet>
git rm <mon_fichier>
git status
git commit -m "Suppression <mon_fichier>"
git push git@github.com:<mon_uid>/<mon_repo>.git

Mettre à jour sa version locale


Si vous avez modifié votre projet en dehors de votre version locale, cette dernière n'est donc plus synchronisée avec la version distante. Avant de travailler, il faut donc la mettre à jour :
cd <mon_projet>
git pull


Conclusion


GitHub est un outil de diffusion de codes sources et de développement collaboratif. En tant que sysAdmin lambda, on va utiliser 5% de fonctionnalités mais on a pas besoin de plus pour sauvegarder/versionner ses scripts et les partager.