Déployer avec git
Introduction.
L'objet de ce court article est d'explorer les possibilités offertes par git pour déployer du code.
Dans mon cas les trois sites écrits en markdown
- boizot.ch construit avec Material pour MkDocs
- esperanto construit avec Material pour MkDocs
- blog construit avec hablo.
En deux mots cela consiste à créer une destination distante sur laquelle on poussera les données.
Initialisation sur le système distant
Cette initialisation consiste en deux actions.
- création d'un dossier
- création d'un script.
Le dossier
On créera sur la machine distante un dossier git.
:~ / mkdir boizot.git
:~ / cd boizot.git
:~/ git init --bare
Initialized empty Git repository in /home/xxxx/srv/boizot.ch.git/
Contenu du dossier.
drwxr-xr-x 2 xxxx xxxx 4096 Mar 20 15:08 branches
-rw-r--r-- 1 xxxx xxxx 66 Mar 20 15:08 config
-rw-r--r-- 1 xxxx xxxx 73 Mar 20 15:08 description
-rw-r--r-- 1 xxxx xxxx 23 Mar 20 15:08 HEAD
drwxr-xr-x 2 xxxx xxxx 4096 Mar 20 15:08 hooks
drwxr-xr-x 2 xxxx xxxx 4096 Mar 20 15:08 info
drwxr-xr-x 4 xxxx xxxx 4096 Mar 20 15:08 objects
drwxr-xr-x 4 xxxx xxxx 4096 Mar 20 15:08 refs
hook : post-receive.
Dans le dossier hooks on créera un script post-receive qui copiera les données dans le dossier que l'on publie.
Voici un exemples très simple.
#!/bin/bash
# Variables
TARGET="/home/xxxx/www/boizot.ch"
GIT_DIR="/home/xxxx/srv/boizot.git"
BRANCH="gh-pages"
# git cmd
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
exit $?
Ne pas oublier de donner des droits d'exécutions.
Commande à partir du répertoire git local.
A noter qu'il est préférable de gerer l'accés ssh avec des clefs ...
création d'une destination
Avec la commande suivante dans le dossier git.
[xxxx@Pib-Nixos:~/src/tttt]$ git remote add ipv4 ssh://xxxx@xxxx.ch/home/xxxx/srv/tttt.git
Mise à jour.
[xxxx@Pib-Nixos:~/src/xxxx]$ git push ipv4 master
Enumerating objects: 565, done.
Counting objects: 100% (565/565), done.
Delta compression using up to 4 threads
Compressing objects: 100% (525/525), done.
Writing objects: 100% (565/565), 5.61 MiB | 13.52 MiB/s, done.
Total 565 (delta 339), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (339/339), done.
remote: Already on 'master'
To ssh://xxxx.ch/home/xxxx/srv/tttt.git
* [new branch] master -> master
Créé: March 29, 2021