Tag Archives: deploy

Repositorio GIT con deploy automático

GIT Logo
Bueno, volvamos a lo técnico en el blog.
En ciertas ocasiones es conveniente mantener los archivos generados en una carpeta diferente a la de nuestro repositorio GIT, el caso más común para este patrón es dentro de un servidor web donde www-data es propietario de la carpeta mientras que en el repositorio GIT los permisos son aplicados para un grupo o usuarios diferentes.

Sitioweb: /var/www/sitioweb
Repositorio: /opt/repositorios/sitioweb.git

Servidor

Comenzamos creando el repositorio tipo bare para que contenga sólo el árbol de actualizaciones y no cree un subdirectorio .git, después haremos ciertos ajustes para poder realizar actualizaciones sin tener que hacer merge hacia el canal principal.

mkdir -p /var/www/sitioweb
mkdir -p /opt/repositorios/sitioweb.git
cd !$
git init --bare
git config core.worktree /var/www/sitioweb/.
git config core.bare false
git config receive.denycurrentbranch ignore

Ahora añadiremos una instrucción al script post-receive

Archivo: hooks/post-receive
#!/bin/sh
git checkout -f

Obviamente tenemos que darle permisos de ejecución

chmod +x hooks/post-receive

Local

En el equipo local sólo es necesario añadir el repositorio recién creado como destino y podemos añadir los archivos inmediatamente

git remote add webserv ssh://usuario@servidor/opt/repositorios/sitioweb.git
git push webserv master

Listo