El flujo de trabajo perfecto, con Git, GitHub y SSH

En esta lección, nos centraremos en el flujo de trabajo. Más específicamente, usaremos los útiles enlaces de servicio de GitHub para actualizar automáticamente un proyecto en nuestro servidor personal cada vez que enviemos actualizaciones a un repositorio de GitHub..


Prefiero un video tutorial?


Paso 1 - Crea un Git Repo

Ciertamente necesitamos algún tipo de proyecto para jugar, ¿verdad? Vamos a hacer eso ahora mismo. Usando la herramienta que prefiera (recomendaría Structurer), cree un nuevo directorio, llamado proyecto impresionante, y agrega un index.html expediente. Siéntase libre de rellenar esto con un poco de marcado galimatías por el momento.

Con nuestro directorio de prueba en su lugar, vamos a crear nuestro primer Git commit.

Si no está familiarizado con Git, le recomiendo que primero revise "Control de versión fácil con Git".

Abra la línea de comando:

 cd ruta / a / awesomeProject git init git add. git commit -m 'First commit'

Aquellos que estén familiarizados con Git deben sentirse como en casa. Estamos creando un repositorio de Git, agregando todos los archivos al área de preparación y luego estamos creando nuestro primer compromiso..


Paso 2 - Subiendo a GitHub

El siguiente paso es subir nuestro proyecto a GitHub. De esa manera, podemos llamar fácilmente a git pull para descargar este proyecto desde cualquier computadora / servidor que deseemos.

Nuevamente, si no está familiarizado con GitHub y aún no ha creado una cuenta, lea Terminal, Git y GitHub para el resto de nosotros.

Comienza creando un nuevo repositorio Git..

A continuación, deberá completar algunos detalles sobre su proyecto. Así de simple:

Y finalmente, dado que ya estamos trabajando con un repositorio de Git existente, solo necesitamos ejecutar:

 git remote add origin [email protected]: Tu-nombre de usuario / awesomeProject.git git push -u master de origen

Con eso fuera del camino, nuestro proyecto impresionante ya está disponible en GitHub. Eso fue fácil!


Paso 3 - SSH

Ahora, ciertamente necesitamos algún tipo de vista previa en vivo para nuestro proyecto, idealmente almacenado en nuestro propio servidor. Pero esto puede ser un dolor a veces. Envíe sus actualizaciones a GitHub, inicie sesión en su servidor, transfiera manualmente el directorio actualizado, etc. Por supuesto, esto solo toma un momento, pero cuando realiza múltiples cambios a lo largo del día, esto puede convertirse rápidamente en una carga.

Pero un paso a la vez. Abordaremos este dilema en el Paso 4. Por ahora, simplemente detengamos nuestro repositorio Git en nuestro servidor. Para ello, necesitamos SSH en.

Dependiendo de su anfitrión, sus credenciales SSH variarán ligeramente. Busque en Google "SSH de su nombre de host" y seguramente encontrará las instrucciones necesarias. Una vez que estés listo, avancemos:

Usaremos mi servidor personal como ejemplo:

 ssh [email protected] 

Y con esas dos líneas, estamos en!

Luego, nosotros discos compactos al directorio padre de donde deseamos almacenar proyecto impresionante. Para mí, esto será: cd domains / demo.jeffrey-way.com / html /. Por supuesto, modifíquelo según su propia estructura de directorios..

Git Clone

Vamos a clonar el repo de GitHub ahora.

 git clone [email protected]: Your-User-Name / awesomeProject.git

Dé ese comando unos segundos, pero, antes de que lo sepa, ese directorio ahora está disponible en su servidor y, en mi caso, podría verse en: http://demo.jeffrey-way.com/awesomeProject.


Paso 4 - Creando una conexión

El problema inherente en este punto es que no hay una conexión específica entre nuestro repositorio de GitHub y el directorio almacenado en nuestro servidor, al menos no una conexión automatizada. Por ejemplo, si actualizamos nuestros archivos de origen en nuestra máquina local y luego enviamos los cambios a GitHub:

 git add index.html git commit -m 'Imagen agregada de gallina bailarina' git push origin master

Estos cambios no se reflejarán en nuestro servidor. ¡Por supuesto que no! Para hacerlo, debemos, una vez más, SSH en nuestro servidor, discos compactos al proyecto impresionante directorio, y realizar otro git pull para traer los archivos fuente actualizados.

¿No sería fantástico si, cada vez que enviamos actualizaciones a GitHub, esos nuevos archivos de origen se actualizaran automáticamente en nuestro servidor de vista previa en vivo??

Resulta que podemos hacerlo fácilmente con los ganchos de servicio de GitHub..

Puede acceder a esta página presionando el botón "Administrador" desde su repositorio de GitHub, y luego haciendo clic en "Enganches de servicio". La opción "Post-Receive URL" indicará a GitHub que envíe una solicitud POST a la página especificada cada vez que presione su repositorio de GitHub. esto es exactamente lo que necesitamos!

"Accederemos a estas URL con solicitudes POST cuando nos presione, y le pasaremos información sobre el impulso".

Para hacer que esto funcione, necesitaremos crear un archivo más que maneje el proceso de realizar el git pull. Agregar un nuevo archivo, llamado github.php (o cualquier cosa que desee, preferiblemente más vaga), y agregue:

  

Así que ahora estás pensando: "Jeff se ha vuelto loco. No puedes poner un script Bash en una cadena de PHP". ¿Bien? Sí, puedes, una vez que te des cuenta de que esas no son comillas simples arriba, son contraatacas.

Cuando encierres una secuencia en tics, en PHP, se tratará como un script de Bash. De hecho, es idéntico a usar la función bash_exec.

Guarde ese archivo y cárguelo en el proyecto impresionante directorio en su servidor. Cuando haya terminado, copie la url en ese archivo y péguela en el cuadro de texto "Post-Receive URL". En mi caso, la url sería http://demo.jeffrey-way.com/awesomeProject/github.php.

Con esto en su lugar, cada vez que empujar a su repositorio de GitHub, ese archivo será llamado, y el proyecto impresionante El directorio en su servidor se actualizará automáticamente, sin que usted necesite mover un dedo. Bonita ingeniosa ay?


También puede disfrutar de:

  • Consiguiendo la Caída de GitHub
  • Terminal, Git y GitHub para el resto de nosotros
  • Fácil control de versiones con Git
  • Conseguir bien con Git - eBook