Aller au contenu

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

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