Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Suivre et partager ses sources avec GitLab:
un exemple avec LATEX
Matthieu Boileau, Alexis Palaticky
CNRS - Université de Strasbourg
16 mars 2016
&
1 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Outline
1 Intérêt et applications de git
2 GitLab comme serveur git
3 Démonstration
4 Conclusion
2 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Pourquoi utiliser un suivi de version ?
• Enregistrer les modifications d’un jeu de fichiers au cours du temps
• Rester réversible :
− pouvoir retourner à une version antérieure,
− comparer avec une version antérieure
• Documenter les modifications (date, auteur et message
d’accompagnement)
• Un logiciel de suivi de version (VCS pour Version Control System en
anglais) comme Git gère très bien tout projet qui se présente sous la forme
de fichiers sources
• C’est le meilleur moyen de collaborer sur des sources !
3 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Pourquoi utiliser un suivi de version ?
Ce que Git gère très bien : Ce que Git gère mal :
3 les scripts ou code de calcul 7 les gros fichiers binaires
3 les documents LATEX 7 les documents Microsoft Office ou
3 les fichiers texte de OpenOffice
configuration 7 le texte formaté en général
3 les sources html 7 les bases de données (type mysql)
3 etc. 7 etc.
4 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Comparaison avec Owncloud
Owncloud Git
Type de fichiers
3 tous types 3 suivi pour les fichiers sources
7 pas de suivi pour les binaires
7 pas adapté aux gros fichiers
(sauf avec git-lfs)
Suivi de version
7 très limité 3 outil avancé
Partage
7 modèle centralisé 3 modèle distribué
uniquement
7 synchronisations au- 3 on contrôle les synchronisations
tomatiques uniquement
Prise en main
3 très simple 7 demande un apprentissage
5 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Un suivi de version distribué
• les clients possèdent un miroir complet de la base de données du serveur
• on peut travailler en mode déconnecté et synchroniser quand on le souhaite
• indirectement, on crée des sauvegardes multiples
(Source: Pro Git book [Link]
6 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Git en pratique
Git en ligne de commande dans le
Terminal :
git add
git commit −m "My commit m e s s a g e "
git status
git log
git push
git pull
git checkout
git diff
etc .
7 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Git en pratique
Avec une interface graphique très simple comme GitHub Desktop, on couvre
≈ 90% de l’utilisation courante de git :
8 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Les quatre statuts des fichiers suivis
• Le cycle de vie d’un fichier suivi avec Git
(Source: Pro Git book [Link]
• Les fichiers qui ne sont pas des sources (fichiers objets, fichiers de
compilations, exécutables, etc.) peuvent être ignorés.
9 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Git et le système des branches
• Git permet de créer et fusionner très facilement des branches
• un système de branches permet de préserver une version stable (branche
master) sans limiter les développements (branche develop)
• les branches sont particulièrement utiles pour le travail collaboratif et par
sujet (topic).
(Source: Pro Git book [Link]
10 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Travail collaboratif avec Git : le workflow typique d’une petite équipe
En pratique :
• Côté serveur : GitLab
• Côté clients (John et Jessica) :
ligne de commande ou client
graphique (GitHub Desktop,
par exemple)
(Source: Pro Git book [Link]
11 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Installation et administration
12 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Quelques précisions sur GitLab :
• GitLab ? Outil opensource de gestion de projets git (licence MIT)
• Pourquoi GitLab à l’IRMA ?
– Besoin de travail collaboratif sur du code ou des publications
– Pour avoir la maîtrise sur le paramétrage et la création des comptes
– Gérer des fonctionnalités avancées comme l’intégration continue
Les différentes versions
- GitLab Community Edition (CE) : version libre
- GitLab Enterprise Edition (EE) : version payante
- GitLab Continus Integration (CI) : intégrée dans CE et EE depuis
GitLab 8.0
- [Link]
13 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
GitLab à l’IRMA
- [Link]
- Serveur sauvegardé en interne (VDP et Netbackup)
- Mise à jour de GitLab et mises à jour systèmes régulières
- Serveur accessible de l’extérieur, possibilité de comptes externes
14 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Installation de GitLab : les recommandations de [Link]
Les OS supportés
- Ubuntu
- Debian
- CentOS
- Red Hat Enterprise Linux (use the CentOS packages and instructions)
- Scientific Linux (use the CentOS packages and instructions)
- Oracle Linux (use the CentOS packages and instructions)
15 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Installation de GitLab : les recommandations de [Link]
Les OS non supportés
- OS X
- Fedora
- Gentoo
- FreeBSD
- Windows
16 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Installation de GitLab : les recommandations de [Link]
La configuration hardware
- 1 core works supports up to 100 users but the application can be a bit
slower
- 2 cores is the recommended number of cores and supports up to 500 users
- 2GB RAM is the recommended memory size and supports up to 100 users
- 4GB RAM supports up to 1,000 users
17 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Installation de GitLab à l’IRMA
- Gitlab-ce version 8.4.4
- Machine virtuelle dédiée (Ubuntu Serveur Ubuntu 14.04.4 LTS)
- 2 processeurs
- 8 Go de ram
- 60 Go de HD
18 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Prérequis
- curl
- openssh-server
- ca-certificates
- postfix
Installation
apt−g e t install c u r l o p e n s s h −s e r v e r ca− c e r t i f i c a t e s postfix
curl h t t p s : / / p a c k a g e s . g i t l a b . com/ i n s t a l l / r e p o s i t o r i e s / g i t l a b /
g i t l a b −c e / s c r i p t . deb . s h | s u d o b a s h s u d o apt−g e t i n s t a l l
g i t l a b −c e
gitlab-ce contient toutes les dépendances nécessaires : Nginx, Ruby, Postgres...
19 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Configuration
• Un fichier central : /etc/gitlab/[Link].
C’est dans ce fichier que l’on définit les principaux paramètres :
- url du serveur
- certificats électroniques
- jonction avec un annuaire LDAP...
• Après chaque modification de [Link], il faut valider par la commande
gitlab-ctl reconfigure
20 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Exemple de l’installation du certificat Digicert :
- Copie des fichiers du certificat dans : /etc/gitlab/ssl
- Modification du fichier /etc/gitlab/[Link]
external_url ’[Link]
nginx[’redirect_http_to_https’] = true
nginx[’ssl_certificate’] = "/etc/gitlab/ssl/fichier_certificat.pem"
nginx[’ssl_certificate_key’] = "/etc/gitlab/ssl/fichier_certificat.key"
- Validation de la nouvelle configuration pour prise en compte des
modifications : gitlab-ctl reconfigure
21 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Sauvegarde de la base
- Une commande à placer dans une crontab :
gitlab-rake gitlab:backup:create
- Résultat :
Dépôt d’un fichier xxxxxx_gitlab_backup.tar dans
/var/opt/gitlab/backups
22 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Restitution de la base
- Stopper les proccess de connexion à la base :
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
- Restitution :
gitlab-rake gitlab:backup:restore BACKUP=xxxxxx
- Démarrage de GitLab :
gitlab-ctl start
- Vérification de GitLab :
gitlab-rake gitlab:check SANITIZE=true
23 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Mises à jour de GitLab
- Elles sont fréquentes
- Utilisation de la commande apt-get install
- Déclenchement automatique d’une sauvegarde de la base avant la mise à
jour
- Parfois la mise à jour échoue :
Err [Link]
trusty/main gitlab-ce amd64 8.4.3-ce.0 Operation too slow.
Less than 10 bytes/sec transferred the last 120 seconds
24 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
L’interface d’administration de GitLab :
- Overview de l’Admin aera
25 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
L’interface d’administration de GitLab :
- La gestion des utilisateurs
27 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
L’interface d’administration de GitLab :
- Une nouveauté : l’affichage de messages pour les utilisateurs
29 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
L’interface d’administration de GitLab :
- Le menu settings :
Nombre de projets par défaut pour les utilisateurs...
Statut par défaut du projet (private, public)...
31 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
L’interface d’administration de GitLab :
- Tableau de bord :
Pour observer et mesurer l’activité du serveur gitlab
33 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
Connaître les nouveautés de GitLab :
- S’abonner à la newsletter :
[Link]
35 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Gitlab comme serveur git
Exploitation par l’utilisateur
36 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
Les fonctionnalités de GitLab :
- Création rapide de projets avec gestion des droits (Public, privé,...)
- Historique des commits
- Outils annexes : statistiques, wiki
- Notifications par mail
- Intégration continue
37 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
Les fonctionnalités de GitLab :
- Création rapide de projets avec gestion des droits (Public, privé,...)
38 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
Les fonctionnalités de GitLab :
- Historique des commits
42 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
Les fonctionnalités de GitLab :
- Outils annexes : statistiques, wiki
44 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
GitLab comme serveur git
Les fonctionnalités de GitLab :
- Notifications par mail
47 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Démonstration
• Objectif : montrer l’intérêt d’utiliser Git pour collaborer sur un
document LATEX
• Programme de la démo :
– création et partage de projet dans GitLab
– importation d’un article en LATEX
– modifications, synchronisation (push, pull)
– notifications par mail
– édition collaborative (avec et sans conflits)
– compilation des différences (git latexdiff)
49 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Démonstration
Imaginons une collaboration fictive entre Johann Bernoulli et Leonhard Euler
sur l’appendice II d’un ouvrage réel : le Methodus Inveniendi.
Johann Bernoulli Leonhard Euler
(1667 - 1748) (1707 - 1783)
Le Methodus Inveniendi
d’Euler (1744)
C’est parti !
50 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Documentation et bonnes pratiques
Documentation
• Pro Git book (version française) :
[Link]
• la documentation officielle de Git :
[Link]
• un manuel concis : [Link]
ProGit book : une • la doc GitLab et son aide contextuelle :
référence (libre) [Link]
Quelques recommandations
• En LATEX, ne pas écrire plus d’une phrase par ligne
• Faire de nombreux commits (Git est fait pour ça) contenant des
modifications petites et cohérentes plutôt que l’inverse
• Utiliser les branches !
51 / 52
Intérêt et applications de git GitLab comme serveur git Démonstration Conclusion
Documentation et bonnes pratiques
Pour ceux qui sont intéressés :
un tutoriel vidéo de 15 min pour suivre
des sources LATEX avec GitLab.
Merci de votre attention !
info@[Link]
52 / 52