Archivos de Categoría: Pajas mentales

Subir con GIT a varios repositorios a la vez

Resulta que el servidor de la oficina que tenemos para GIT no se le hacen copias de seguridad así que se me ha ocurrido que cada vez que hacemos un push se suba a otro repositorio a la vez que a “oficial” por si acaso. Una alternativa sería hacerlo en el hook post-receibe del servidor pero como ya lo tengo con otras historias, casi prefiero hacerlo desde local. Para ello al repositorio origin le añado la ruta de otro repositorio que tengo en online:

git remote set-url --add --push origin git@RUTA_REPOSITORIO_ONLINE/repositorio_backup.git

Y listo, ahora cada vez que hago un push me lo sube a dos repositorios

Podemos ver el listado de repositorios remotos y las acciones sobre ellos con el comando:

git remote -v

Configuración GIT para deploy

Estos son los pasos que sigo para configurar un GIT en el servidor para utilizarlo como repositorio y de paso poner en producción los cambios que subo la rama raíz del proyecto.
Lo primero es crear el repositorio en el servidor, este debe estar fuera de la carpeta web:

git init --bare repositorio.git

Una vez creado podemos acceder al directorio repositorio.git y comprobar que se ha montado correctamente con el comando:

git status

Después creamos un hook para que cada vez que haya un push sobre el repositorio, compruebe la rama desde la que se ha hecho y si es la rama master haga una copia en el directorio donde este alojada la web:

nano hooks/post-receive

Y en este fichero copiamos el siguiente código:


#!/bin/bash
while read oldrev newrev refname
do
branch=`echo $refname | cut -d/ -f3`
echo "**** push de la rama $branch ****"
if [ "master" == "$branch" ]; then
GIT_WORK_TREE=/RUTA/ABSOLUTA/DE/LA/WEB git checkout -f $branch
fi
done

Por último debemos dar permisos de ejecución al nuevo hook y con esto habremos terminado la configuración del servidor:

chmod +x hooks/post-receive

Ahora toca clonar el repositorio en local para poder trabajar con el. Nos posicionamos en la carpeta donde vayamos a desarrollar el proyecto y ejecutamos:

git clone ssh://USUARIO_SSH@SERVIDOR/RUTA_ABSOLUTA_AL_FICHERO_repositorio.git ./

Nos pedirá la contraseña de nuestro usuario de ssh y listo, ya podemos trabajar normalmente.

Comandos extra que pueden ser útiles:

En el caso de querer copiar en el servidor el contenido de una rama concreta a un directorio podemos ejecutar el comando:

git archive RAMA_A_COPIAR | tar x -C /RUTA_DE_DESTINO

Otro caso habitual es trabajar con ramas de test e integración. Para crear las ramas en remoto podemos ejecutar desde local:

git push --set-upstream origin NOMBRE_RAMA

Configuraciones de Docker que suelo usar

Casi siempre he estado trabajando con VMware pero llevo ya un tiempo usando Docker que resulta bastante más rápido de montar una máquina con las versiones de software que luego tenemos en producción.

Por ahora solo los tengo para PHP y MySQL, pero estoy viendo opciones para ColdFusion y SQL Server, cuando los tenga los publicare junto con estas configuraciones en mi GitHub

Ver mis configuraciones tipo de Docker