2011-09-05 23 views
24

Tenemos un VPS en linode y un código alojado en gitHub. ¿Cómo lo configuramos? Así que cuando pulsamos a gitHub, también se mueve automáticamente a nuestro servidor de linode. Estamos usando PHP en el servidor de linode.Desplegar automáticamente desde GitHub al servidor On Push

Gracias.

+0

Podría obtener más ayuda publicando esto en http://serverfault.com/ – sashang

Respuesta

21

Probablemente desee utilizar GitHub's post-receive hooks.

En resumen, GitHub PUBLICARÁ una URL suministrada cuando alguien presiona al repositorio. Simplemente escriba un script PHP corto para ejecutar en su linode VPS y extraerlo de GitHub cuando reciba dicho POST.

+0

Esto suena genial, pero ¿cómo se "extrae de github" de PHP? –

+1

Supongo que existe alguna biblioteca, pero en el peor de los casos, más uso de 'exec' que ideal –

+0

¡Gracias por la información adicional de Kristian! –

13

Escribí un pequeño servidor Github-Auto-Deploy en python, que hace exactamente lo que quiere.

  • Introduzca su dominio a un nuevo post-receive service hook en Github
  • partido rutas de repositorios locales con direcciones URL de repositorio en el fichero de configuración
  • El servidor recibirá las peticiones de GitHub y correr git tirón en la ruta al repositorio local de
  • También ejecuta un script de shell para la implementación posterior si proporciona uno
+2

tu lib me inspiró para comenzar una implementación mía. https://github.com/danneu/captain-githook. buenas cosas, amigo. – danneu

3

Terminé creando mi propia herramienta de implementación rudimentaria (al igual que Karl pero en PHP) que woul d despliegue automáticamente nuevas actualizaciones del repositorio - https://github.com/jesalg/SlimJim - Básicamente escucha el github post-receive-hook y usa un proxy para activar un script de actualización.

2

Tal vez estoy fuera de contexto, pero yo prefiero que elegir manualmente dónde empujar de mi línea de comandos, por ejemplo: git push linode

Para hacer esto creo un contenedor de depósito en mi servidor linode y creé un gancho posterior a recibir que las cajas de mi carpeta a la última empujó cometer

crear un contenedor git repo mkdir /var/repo && cd /var/repo git --bare init

Crear el gancho posterior a recibir en /var/repo/hooks/ touch post-receive nano post-receive chmod +x post-receive

posterior a recibir el contenido #!/bin/sh git --work-tree=/var/www/ --git-dir=/var/repo checkout -f

En su repositorio local git remote add linode [email protected]<linode ip|domain>:/var/repo git push linode

su código y actualmente se implementa

+0

Interesante. Gracias por eso. Seguiría la recomendación de Linode de no usar el usuario @root. Esto requiere permisos más flexibles en el directorio de git repo y en/var/www. Encontré información relevante sobre cómo hacer eso aquí: http://stackoverflow.com/a/6448326/2112538 –

0

Puede hacer referencia a este tutorial:
Automatically Updating Your Website Using GitHub's Service Hooks:

En resumen se explica los siguientes pasos:

Cree un archivo php en la carpeta .git en su servidor con los siguientes contenidos.

<?php `git pull`;?> 

Configure su servidor para las teclas SH S de existir.Algo así como:

key. cat ~/.ssh/id_rsa.pub 

Configuración del gancho servicio en GitHub. Introduzca URL web hook:

http://your.domain.com/path/to/yourfile.php 

Cuando todo está preparado. El archivo desplegará todo el trabajo en su servidor cada vez que presione hacia GitHub.

Cuestiones relacionadas