GitHub – installation automática de installation con server remoto

Actualmente, mi website de producción está alojado en Azure. Yo uso git y presiono todos mis commits a GitHub. Con la magia de los git hooks Azure tiene la capacidad de extraer de GitHub cuando alguien empuja una determinada twig a GitHub.

¿Cómo puedo replicar esto con mi propio server de almacenamiento alojado en el sitio? En otras palabras, ¿cómo puedo establecer un repository en GitHub, y cuando lo presiono, a través de git hooks, envío una señal, solicite o lo que sea necesario para realizar una extracción automática en mi server local?

Sé que Git no es un software de implementación, pero si tengo que escribir un mecanismo en mi server on-prmise para que esto suceda, me gustaría saber por dónde empezar. Si es útil, utilizamos la tecnología de Microsoft, por lo que estamos ejecutando nuestro server de ensayo en Windows Server, mientras que nuestra producción está en Azure.

Entiendo que tendré que usar la URL de callback en mi server para luego realizar lo que sea necesario. Me gustaría saber qué methods usan las personas para lograr esto. Por ejemplo: en mi URL de callback, ¿cómo podría llamar a un script para ejecutar un command pull / fetch / clone bash? u otro método.

Si necesita más información, siéntase libre de preguntar.

Ampliando mi comentario,

  1. Debería definir / crear una url de callback en su extremo, que deberá ser de acceso público.

  2. github haría un golpe a esta url a través de un git hook cada vez que se realiza un empuje a la twig en cuestión.

  3. Puede agregar authentication para el hit en el gancho, si es necesario.

  4. Esta llamada informará a su server que se ha realizado una transferencia a la twig específica en github.

  5. Ahora su server debería comenzar una tarea de implementación que realiza la extracción / clonación.

Con respecto a esta tarea de implementación, hay muchas forms de hacerlo, y los detalles más finos variarán según cómo lo haga.

Una forma sería introducir una herramienta de continuous integration como Jenkins en su stack, que también podría usar para comstackciones regulares y de testing en diferentes entornos.

Otra forma podría ser ejecutar un script bash simple que haga cd $REPO_DIR && git pull origin branchname && service apache2 etc restart .