Skip to content

Instantly share code, notes, and snippets.

@plencovich
Last active October 24, 2016 11:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save plencovich/9c5463ff682a376732595ff79b47dd70 to your computer and use it in GitHub Desktop.
Save plencovich/9c5463ff682a376732595ff79b47dd70 to your computer and use it in GitHub Desktop.
Configuración para realizar push a production o develop o testing, según preferencias.

Git Push to Production / Testing

Requisitos:

  • Acceso SSH al servidor que desean actualizar con git push
  • Tener una clave pública para no tener que ingresar contraseña cada vez que realizan la acción

Generar clave pública

Si ya accedes a tu servidor mediante SSH y no ingresas la clave, omití esto y salta la Configuración de Git

  • Generar clave en tu equipo local: ssh-keygen -t rsa deberás ingresar donde guardar la clave y el passphrase, te recomiendo dejarlo todo por default, osea 3 enter seguidos
  • Si dejaste todo por default, te habrá generado la clave pública en /home/{tu_usuario}/.ssh/id_rsa.pub
  • Para copiar la clave al servidor tenés dos opciones:
    1. Utilizando el cmd ssh-copy-id ssh-copy-id user@server
    2. De forma manual cat ~/.ssh/id_rsa.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  • Aparecerá algo similar a esto, donde tenes que ingresar tu contraseña por única vez y responder yes
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
  • Ya puedes conectarte por SSH sin necesidad de tu contraseña.

Configurar Git en server Production o Testing

  • Acceder por SSH a nuestro servidor
  • Debemos saber en que ubicación nos pone el servidor al ingresar, si queresmos saber en que ruta estamos, escribimos pwd y nos devolverá el path de nuestro usuario, ejemplo: /home/rosarina
  • Creamos un carpeta que se encargará de recibir nuestro push mkdir site.git && cd site.git
  • Ejecutamos el cmd git init --bare donde le estamos indiciando la carpeta sólo tendrá control de versiones y ningún archivo de origen.
  • Ejecutamos cmd: cd hooks
  • Creamos un archivo llamado post-receive con el comando cat > post-receive o nano post-receive o con el editor que te guste. Y le guardamos el siguiente contenido:
#!/bin/sh
git --work-tree=/var/www/dominio/public_html --git-dir=/home/rosarina/site.git checkout -f
cd /var/www/dominio/public_html/code
bower update
gulp minify-js

La explicación de eso es: --work-tree indica el directorio donde se encuentra alojado el sitio a actualizar --git-dir indica el directorio que creamos para recibir el push

Opcionales: Luego realiza un cambio de directorio, apuntando al work-tree Ejecuta la actualización de bower si es necesario, sino quitar esa linea. Ejecuta la minificación de archivos, en este caso con gulp

  • Le damos permisos de ejecución al archivo post-receive con el cmd: chmod +x post-receive
  • Salimos de SSH, aquí finaliza nuestra tarea en servidor

En nuestro equipo local dentro de la carpeta del sitio web, debemos agregar un servidor remoto para realizar el push, entonces escribimos el cmd: git remote add test ssh://user@server{:port}/home/rosarina/site.git

De esta forma le estamos indicando un nuevo servidor para trackear nuestro repositorio. El puerto es opcional, sólo para aquellos servidores que no utilizan el 22 por seguridad.

Y listo! Hemos configurado para realizar: git push {remote_name} {branch}

👍 Adentro!

by Diego Plenco

@aricore
Copy link

aricore commented Sep 16, 2016

Por fin un buen tuto APB :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment