GIT - Desplegar aplicaciones con Hooks

Inicializar repositorio y directorios

Inicializar un repositorio donde realizaremos el despligue mediantes ‘push’.

git init --bare /var/repos/repositorio.git

Crear el directorio donde se realiza el despligue de la aplicacción.

mkdir -p /var/www/app

Configuración hook

Utilizar el hook ‘hooks/post-receive’

#!/bin/bash

# Directorio despliegue
DEPLOY_DIR="/var/www/app"
# Directorio repositorio
REPO_DIR="/var/repos/repositorio.git"
# Rama de producción
PROD_BRANCH="produccion"

while read oldrev newrev ref
do
    echo "Recibiendo ref $ref..."
    if [ "$ref" == "refs/heads/$PROD_BRANCH" ]; then
        echo "Desplegando rama $PROD_BRANCH en $DEPLOY_DIR ..."
        git --work-tree=$DEPLOY_DIR --git-dir=$REPO_DIR checkout -f $PROD_BRANCH
        echo "Despliegue completado."
    else
        echo "No se realiza despligue sobre la rama $PROD_BRANCH."
    fi
done

Es necesario dar permisos de ejecución al fichero ‘post-receive’

chmod ug+x hooks/post-receive

Pushear a la rama correspondiente

git push origin produccion

Si fuera necesario añadir el repositorio con un nombre

git remote add deploy [email protected]:/var/repos/repositorio.git