19 Avril 2019
Quelques exemples projets utilisant des VCS
Système de gestion de développement colaboratif
Forges web d’hébergement Git :
À 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)
Un nginx est devant srv1 et srv2 en loadbalencer
# Admin - Git
apt update && apt install git
# Serveurs - Git et Apache2
apt update && apt install git apache2
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
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
Plateforme utilisé - Framagit
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
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
# 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
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
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
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
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
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
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
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
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/
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
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
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
# 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]
Penser à TOUJOURS faire un git pull
avant de faire un
commit
apt install git pandoc texlive-latex-recommended texlive-xetex
git clone https://github.com/hakimel/reveal.js.git
wget https://doc.zordhak.fr/git -O Présentation_git.md
pandoc -t revealjs -s Présentation_git.md -o Présentation_git.html
pandoc -t revealjs -s Présentation_git.md -o Présentation_git.html --self-contained
pandoc Présentation_git.md -o Présentation_git.pdf -V documentclass=report --table-of-contents