Git - GitLab

Alban Vidal

19 Avril 2019

Logiciel de gestion de versions

VCS - Exemples

Quelques exemples projets utilisant des VCS

CVS

Subversion (SVN)

Mercurial, Bazaar et Git

Bazaar (bzr)

Git

Forges Web

Système de gestion de développement colaboratif

Forges web d’hébergement Git :

GitHub

GitLab

À l’origine, GitLab était un logiciel libre.

Ensuite scindé en deux versions :

GitLab CE peut donc être installé pour faire de l’auto-hergement

(notes)

FramaGit

Démo time !

LAB de démo

Un nginx est devant srv1 et srv2 en loadbalencer

Installation des paquets

# Admin - Git
apt update && apt install git

# Serveurs - Git et Apache2
apt update && apt install git apache2

Présentation GitLab

Clé SSH d’admin

Création d’une clé au format ed25519 contenant :

ssh-keygen -t ed25519 -N "" -C "${USER}_$(hostname)_$(date +%F)" -f ~/.ssh/id_ed25519_${USER}_$(hostname)_$(date +%F)
# Lien symbolique pour ssh
ln -s ~/.ssh/id_ed25519_${USER}_$(hostname)_$(date +%F) ~/.ssh/id_ed25519

# Récupération de la clé publique
cat ~/.ssh/id_ed25519_${USER}_$(hostname)_$(date +%F).pub

Ajout clé SSH dans GitLab

Pour faciliter l’authentification, nous ajoutons une clé SSH dans le profile de l’utilisateur

Settings => SSH Keys

Y ajouter la clé précédemment générée dans le conteneur labadm

Création de deux projets

Plateforme utilisé - Framagit

Configuration Git - Admin

Définition nom et adresse de courriel

git config --global user.name "Alban Vidal"
git config --global user.email "alban.vidal@zordhak.fr"

# Vérification
git config --global --list
# ou
cat ~/.gitconfig

Configuration Git - srv*

Définition nom et adresse de courriel

git config --global user.name "${HOSTNAME}"
git config --global user.email "${USER}-${HOSTNAME}@demo"

# Vérification
git config --global --list

Clône des des dépôts - Admin

# Préparation répertoire git
mkdir /srv/git

# En SSH
git clone git@framagit.org:alban.vidal/demo-conf.git /srv/git/demo-conf
git clone git@framagit.org:alban.vidal/demo-www.git /srv/git/demo-www

ls -l /srv/git

Clône des des dépôts

Sur srv1 et srv2

Sans clé de déploiement nous ne pourrons pas clôner en SSH

# Préparation répertoire git
mkdir /srv/git

# En HTTPS
git clone https://framagit.org/alban.vidal/demo-conf.git /srv/git/demo-conf
git clone https://framagit.org/alban.vidal/demo-www.git /srv/git/demo-www

ls -l /srv/git

Création des vHosts

Depuis labadm

cd /srv/git/demo-conf
mkdir sites-available
echo -e "<VirtualHost *:80>\n\tServerName demo-1.zordhak.fr\n\tDocumentRoot /var/www/demo-1\n</VirtualHost>" > sites-available/demo-1.conf
echo -e "<VirtualHost *:80>\n\tServerName demo-2.zordhak.fr\n\tDocumentRoot /var/www/demo-2\n</VirtualHost>" > sites-available/demo-2.conf

ls -l sites-available/

# Status du dépôt local
git status

Envoie dans serveur Git (Conf)

Depuis labadm

# Ajout des deux nouveaux fichiers dans l'index
git add sites-available

# Enregistrer les modifications dans le dépôt local
git commit -m "XXXXX - Ajout des vHosts demo-1 et demo-2"
git status

# Envoie les modifications sur le serveur
git push origin master

git status

Ajout des fichiers Web

Depuis labadm

cd /srv/git/demo-www
mkdir demo-1 demo-2

echo "Site 1" > demo-1/index.html
echo "Site 2" > demo-2/index.html

git status

Envoie dans serveur Git (Web)

Depuis labadm

# Ajout des deux nouveaux fichiers dans l'index
git add demo-1 demo-2

# Enregistrer les modifications dans le dépôt local
git commit -m "XXXXX - Ajout des sites demo-1 et demo-2"

# Envoie les modifications sur le serveur
git push origin master

git status

Récupération des données

Sur srv1 et srv2

cd /srv/git/demo-conf
ls -l

# Récupération des mises à jour
git pull

# Status du dépôt local
git status

# Idem www
cd /srv/git/demo-www
git pull
ls -l

Créations de liens

Sur srv1 et srv2

rm -rf /etc/apache2/sites-available

# Création liens symboliques vers Git
# Apache2
ln -s /srv/git/demo-conf/sites-available/ /etc/apache2

# Sites
ln -s /srv/git/demo-www/demo-1 /var/www/
ln -s /srv/git/demo-www/demo-2 /var/www/

# Vérifications
ls -l /etc/apache2
ls -l /var/www

Activation sites dans apache

Sur srv1 et srv2

a2dissite 000-default
a2ensite demo-1
a2ensite demo-2

# Rechargement apache2
systemctl reload apache2

# Démo Web
# https://demo-1.zordhak.fr/
# https://demo-2.zordhak.fr/

Modification d’un fichier

Retour sur le ct labadm

cd /srv/git/demo-www

# Ajout d'une ligne
echo "bla bla" >> demo-1/index.html

git status
git add demo-1/index.html
git commit -m "XXXXXX - ajout ligne bla bla"
git push origin master

Récupération de la modification

Sur srv1 et srv2

cd /srv/git/demo-www

cat demo-1/index.html
git pull
cat demo-1/index.html

# Voir les modifications
git diff HEAD~1
git diff HEAD~2

Annulation d’une modification locale

Retour sur le ct labadm

cd /srv/git/demo-www

echo "erreur" >> demo-1/index.html
git status
# Voir la différence
git diff
# annulation
git checkout demo-1/index.html
git status
cat demo-1/index.html

Quelques commandes supplémentaires

# Logs des commits
git log

# Logs des deux derniers commits
git log -1

# Afficher le ou les derniers commits
git show
git show -2

# Afficher un commit via son numéro
git show [n° de commit]

Retour sur l’interface GitLab

Notes

Penser à TOUJOURS faire un git pull avant de faire un commit

Quelques notes perso

Format Markdown

Liens

Liens - suite

FIN


Présentation au format reveal

Paquets requis

apt install git pandoc texlive-latex-recommended texlive-xetex

Présentation au format reveal (2)

Téléchargement de reveal.js et présentation au format MD

git clone https://github.com/hakimel/reveal.js.git
wget https://doc.zordhak.fr/git -O Présentation_git.md

Compilation

Compiler au format HTML

pandoc -t revealjs -s Présentation_git.md -o Présentation_git.html

Compiler au format HTML (tout en un)

pandoc -t revealjs -s Présentation_git.md -o Présentation_git.html --self-contained

Compiler au format PDF

pandoc Présentation_git.md -o Présentation_git.pdf -V documentclass=report --table-of-contents