Saltar al contenido

Activar automáticamente Git Pull para un sitio web en Github Push

Solución:

Servir su sitio desde un “directorio de trabajo” de git se considera una mala práctica; consulte las razones aquí y aquí.

La mejor manera de hacer esto es configurar un repositorio de git “básico” en su servidor con un gancho “posterior a la recepción”. Este artículo es lo que seguí cuando hice esto recientemente, la idea básica es:

  1. Cree un repositorio “básico” con git init --bare

  2. Editar hooks/post-receive en su repositorio básico para copiar el repositorio a la raíz de su web: GIT_WORK_TREE=/var/www/yoursite git checkout -f

  3. En su máquina local, agregue el repositorio básico como remoto.

  4. Usar git push <remotename> para enviarlo a su sitio en vivo.

Bien, me las he arreglado para resolver esto. Resulta que no hay una función nativa en Git para activar una búsqueda remota (como empujar el código al repositorio y hacer que el repositorio active un origen de extracción en el servidor web).

La forma en que resolví esto fue cargar un script PHP en mi servidor web bajo el vhost predeterminado. Dentro de ese archivo lo tengo configurado para ejecutarse shell_exec("cd /path/to/my/site/root" && sudo git pull origin master". Luego está configurado para enviarme un correo electrónico con la salida del mensaje a través de STDOUT para informarme si la extracción se completó con éxito o no.

Luego configuré Github con un webhook para que cada empuje al repositorio active una llamada de webhook al archivo que simplemente he direccionado como http://server.domain.com/github-deploy.php.

Actualmente, realizo algunos controles de seguridad no revelados para asegurarme de que nadie más pueda acceder al archivo y, con el tiempo, probablemente agregaré controles de IP para asegurarme de que las solicitudes al archivo solo provengan de IP en el bloque de direcciones de Github.

Una nota importante que debo agregar aquí es que la única forma de hacer que esto funcione es permitir que el usuario de Apache acceda como sudoer en el servidor, pero limítelo a poder ejecutar el sudo comando para iniciar Git, de lo contrario, se activará un mensaje de acceso denegado. Sin embargo, al restringirlo a git y no pasar ninguna entrada del script de llamada al shel_exec comando Creo que he podido compensar cualquier preocupación sobre la seguridad.

Eventualmente, probablemente implemente esto como un enlace de servicio con Github, pero por ahora esto es suficiente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *