Empujando desde GitHub a un server web

Deseo mover todos mis sitios a GitHub para get todos los beneficios obvios. No soy un gran admirador de la command-line, así que me gusta GitHub porque me permite evitar tocar todo eso. Configurar un repository en GitHub y luego sincronizarlo con mi computadora es bastante fácil. Necesito poder enviar desde GitHub al server web automáticamente, así que cuando actualizo algo localmente en la twig principal, lo sincronizo con GitHub y se publica en el sitio. De search en Google el tema, parece que la mayoría de las técnicas requieren la línea de command o parecen bastante complejas. Quiero hacer esto con aproximadamente 15-20 sitios (muchos de los cuales están alojados en diferentes serveres de diferentes clientes). Quiero encontrar una opción que esté dentro de mi set de habilidades y no tome 2-3 horas por sitio. ¿Alguien sabe de la mejor y más fácil manera de configurar esto?

La parte que es compleja es el webhook en GitHub

Todos los repositorys de GitHub tienen la opción de comunicarse con un server web cada vez que se envía el repository.

Eso significa que su website debe tener un process para escuchar los posts JSON enviados por GitHub al recibir una confirmación.

Puede ver varios ejemplos de esos oyentes, como este webhook-deployer , con un auto.php (para un server php):

 <?php // Prevent accidental XSS header("Content-type: text/plain"); // Run the script if ( $_POST['payload'] ) { shell_exec("./pull.sh"); } 

Ese proyecto de GitHub recomienda una key SSH sin frase de contraseña, lo cual estoy de acuerdo al principio (para probarlo).
Sin embargo, especialmente para proyectos privados, lo mejor es ejecutar un agente ssh-agent y administrar una contraseña secreta key ssh protegida.
Como comenta janos:

  • Si el repository de GitHub es público, entonces él ni siquiera necesita uno.
  • Si el repository es privado, entonces lo necesita, pero esto no debe tomarse tan a la ligera. Si es posible, debería usar un agente key.
    Si eso es demasiado complicado, entonces podría usar una key SSH dedicada sin frase de contraseña solo para esta implementación, y esa key nunca debería salir de la PC de implementación.

Sé que este ticket es antiguo, pero para aquellos que lo encuentren de alguna manera, revisen dploy.io . Es un service alojado hecho específicamente con el propósito de desplegar su repository desde GitHub / Bitbucket a su server. Es compatible con los commands SFTP / FTP / S3 / Heroku / SSH y más.

Descargo de responsabilidad: yo trabajo en dploy.io

Es posible que desee echar un vistazo a este script PHP:
https://github.com/JohannesHoppe/easy-git-deploy
(Hace un clon git, git pull, git push para ti)

Desde hace varios años administro todas mis instalaciones de wordpress con ese script.

Sugerencia : si está utilizando un entorno de alojamiento compartido, los límites del script pueden interrumpir la primera ejecución. En ese caso, inicie session a través de SSH y realice el primer clon manualmente:

 git clone 'https://user:passwort@//github.com/user/repo.git' 

Aquí también puede confirmar manualmente la huella digital de la key SSH.

Segunda pista: debe asegurar el directory con un file .htaccess / .htpasswd.