Jose Alexis Correa Valencia
@jalexiscv, hace 2 meses..
Cover 2 5E3831C014A9B

Sincronizando una aplicación web cada vez que hacen cambios en GitHub


¿Cómo actualizar aplicación web cada vez que hago cambios en GitHub?. Es muy probable que alguna vez nos hallamos preguntado esto. Sería genial si cada vez que actualizo los cambios en mi repositorio, estos se “subieran” de manera automática a mi servidor web. Tal vez muchos estén haciendo esto de manera manual actualizando sus repositorios y después subiendo los archivos al servidor utilizando FTP como procedimientos aislados. Acto que tambien conlleva algunas desventajas ya que se puede perder el control de las versiones, ya que al ser un proceso manual, es posible que no todos los cambios se vean reflejados en el sitio web, y termines con distintas versiones de archivos mezclados. GitHub permite ejecutar ciertos scripts después que realizas push a tu repositorio, estos son los llamados Post-Receive Hooks, y es lo que vamos a utilizar para automatizar todo este proceso. Estos son los pasos que necesitas realizar:

Nota: El WebHook que se creara utilizando PHP, requiere que este habilitada la función shell_exec. Ya que se ejecutara el GIT instalado en la maquina desde una instrucción mediante el intérprete de comandos.

Requisitos

  1. Php4, Php5 o Php7.
  2. Git instalado en el servidor.
  3. Shell_exec de Php habilitada.
  4. Ruta del repositorio a clonar.
  5. Usuario y contraseña del repositorio a clonar si este es privado.
  6. Ruta de repositorios en el servidor de trabajo.

Nota: Se habla de ruta de repositorios en plural debido a que al clonar un repositorio remoto este generalmente coloca el contenido del repositorio, en el lugar o ruta que se hallaba activa al momento de accionar la clonación y creando un directorio con el nombre del proyecto clonado. De modo que es una buena practica tener una ruta especifica donde se clonaran esta clase de proyectos.

Procedimientos.

  1. Clonar con GIT localmente el proyecto desde el repositorio remoto. git clone https://github.com/{user}/{repo}.git
  2. Crear el archivo que se utilizara como WebHook, utilizando el codigo fuente que se incluye en esta publicación.
  3. Copiar la dirección con la ruta publica al archivo.

Ahora, cada vez que hagas cambios en tu repositorio y los actualizes en GitHub, estos se van a ver reflejados de manera automática en tu servidor web. Este proceso va a crear una carpeta con el nombre de tu repositorio en la raiz del servidor web. Además, en la carpeta logs va a quedar un registro con todos los commits por cada repositorio que utilize este WebHook.Si te preguntas como funciona todo esto, lo que en realidad hace el WebHook update-server.php es que cada vez que actualizas el repositorio en GitHub, este comprueba que el repositorio no exista en tu servidor, si ya existe solamente lo actualiza y sino, lo clona en la carpeta con el mismo nombre.Trataré de agregar más hooks útiles a este repositorio para que también los puedan utilizar de la misma manera.

Codigo fuente del Actualizador

Este es el codigo fuente del archivo que se ejecuta como WebHook cada vez que el repositorio en GitHub se actualiza. Basicamente verifica si el repositorio local existe o no, si no existe clona el repositorio remoto y si si existe simplemente lo actualiza.

Fuentes
    Comentario
    Image
    Comentarios