Descargo de responsabilidad
: Este artículo está a punto de nerd en algún código.
Hace unos meses, escribí sobre cómo cambiar mi editor de código ayudó a mejorar mi flujo de trabajo personal. Desde entonces, hemos realizado varios cambios en Brolik para mejorar nuestro flujo de trabajo como empresa. Algunos de estos cambios incluyen agregar
Git
,
Sass
,
Compass
, y
Github
en nuestro sistema para el desarrollo y implementación.
Si bien agregar a Sass y Compass fue una integración bastante perfecta, Git ciertamente fue una propuesta aterradora al principio, no solo para mí, sino también para mis compañeros de trabajo. Si bien soy muy "técnico", tienden a inclinarse más al lado de diseño de la industria, lo que significa que se aleja de la norma y agregó GIT a un flujo de trabajo puede ser difícil.
Tan pronto como superamos la curva de aprendizaje incluida con Git, nos encontramos con otro obstáculo potencial: Git y GitHub ofrecen excelentes características de control de versiones y administración, pero ¿cómo podemos incorporarlo en la implementación de nuestros sitios en vivo para que tengamos estas mismas características en el servidor remoto?
En un flujo de trabajo normal con GIT, un equipo podría trabajar con sus repositorios locales y sincronizarse con un repositorio remoto para mantenerse bajo control con el equipo. Pero esto todavía requiere que alguien ftp todos los archivos hasta el servidor pruebe o impulse los cambios en vivo. Esta es una pérdida de tiempo innecesaria, y cuando el tiempo es dinero, perder el tiempo nunca es algo bueno.
Después de una extensa investigación sobre los webhooks de GitHub y ejecutar comandos de shell en el servidor, encontré varios scripts que, después de combinar algunos, nos permitirían mantener controlada nuestra versión de sitios en nuestras máquinas locales y el servidor remoto. Después de algunas modificaciones menores a los archivos, descubrí que tenía un solo archivo que podría cargarse en cualquier servidor remoto y con una personalización mínima mantendría ese servidor en sincronía con el repositorio. El archivo sincronizaría automáticamente cualquier cambio que se haya empujado al repositorio de GitHub para mantenerlo en su estado más actualizado.
Si no está familiarizado con los webhooks de GitHub, puede leer más sobre ellos
aquí
. La breve explicación es cada vez que se envía un empuje al repositorio remoto en GitHub, publicará datos JSON en el archivo que establece en el webhook que contiene toda la información sobre la confirmación. Sin embargo, usamos este archivo para determinar qué sucede exactamente en el servidor del sitio web; Es necesaria una configuración para que el archivo funcione correctamente.
Instalación y configuración
Antes de ingresar al archivo real, se requiere una configuración en el servidor para que pueda funcionar como un repositorio de trabajo. Los servidores de hoy generalmente vienen en alguna forma del núcleo Linux, lo cual es excelente porque generalmente ya tienen instalado GIT. En el caso de que su servidor no tenga instalado GIT, es fácil de instalar en un servidor de Linux. Lo primero que tendrá que hacer es SSH en su servidor web a través de Terminal. Generalmente el comando es:
$> ssh username@domain.com
Contraseña: [su contraseña FTP]
Si esto no funciona para usted, consulte con su host para cualquier parámetro especial que deba establecerse antes de que pueda entrar. Si bien nunca es inteligente ir a hurgar dentro del terminal de su servidor con acceso raíz, es posible que deba hacerlo si necesita instalar GIT. Sin embargo, por el momento, solo use su cuenta FTP estándar. Y si está teniendo dificultades para usar
S
YstemCtl
, entonces puede considerar visitar la página de inicio de Linode para obtener más información sobre esto.
Una vez que esté en el servidor, puede tratarlo como lo haría con cualquier computadora normal con GIT. Tendrá que generar una clave pública y vincularla a su repositorio. Esto permitirá que el servidor ejecute los comandos GIT utilizando el comando PHP
Shell_Exec
.
Una vez que tenga la clave pública configurada con GitHub, navegue a su carpeta de dominio (a menudo es dominios/suyo.com/o simplemente html). Si ve los archivos aquí, debería ver una carpeta llamada public_html o html. Esta es la carpeta donde sus archivos deben ir, o en este caso el repositorio, para que aparezca en la web. Si la carpeta está vacía, simplemente puede eliminarla usando el comando:
$> rm –rf public_html
Para aquellos de ustedes que no saben lo que esto hace, elimina de manera recursiva la carpeta y todos sus subcontos y carpetas. Esto es permanente, por lo que si tiene miedo de causar problemas en el servidor, recuerde hacer una copia de seguridad (la forma más fácil de hacerlo es solo usar
Filezilla
o cualquier otro programa FTP y descargar una copia primero).
Una vez que su directorio de trabajo se haya ido, puede clonar su repositorio. Asegúrese de clonar la rama correcta y clonarla en la carpeta correcta. Puede encontrar el enlace a su repositorio en GitHub.
Copie eso e incluya en el siguiente comando:
$> Git Clone –B [Nombre de la rama] git@[enlace desde github] public_html
Si el repositorio es grande, puede llevar algún tiempo descargar. Una vez que esté completo, es posible que deba cambiar su pensamiento sobre la relación entre su computadora, el servidor de alojamiento y GitHub. Es mejor explicarlo diciendo que ahora debe considerar que su servidor de alojamiento es otra computadora en su red Git. Una vez que puedes hacer esto, el disparo de problemas se vuelve mucho más fácil.
Una vez que su servidor está configurado como repositorio de Git, está listo para configurar el .Gitignore!
Gitignore
Configurar este archivo es una de las cosas más importantes que debe hacer antes de agregar archivos a su repositorio. Debido a la forma en que funciona. Gitignore, es mejor hacerlo a primera hora. Si no está familiarizado con cómo funciona un archivo .Gitignore, puede leerlo aquí.
Los archivos más importantes para agregar al archivo .gitignore serían los siguientes:
-
archivo de configuración de la base de datos (nombre de usuario, contraseña)
-
archivo que contiene una url base (si usa enlazes perma o bonitos)
-
tractum.php
-
cualquier ploter o archivo que se actualiza dinámicamente en el servidor || la mayor cantidad de problemas. Si alguna vez ha usado Git y GitHub antes, sabe que no puede hacer una extracción GIT si tiene archivos modificados en su repositorio. El mismo concepto se aplica aquí. Su servidor no puede tener ningún archivo que no sean seguidos o modificados, o de lo contrario no realizará la extracción.
#4 on that list can cause the most problems. If you’ve ever used Git and GitHub before, you know that you can’t make a git pull if you have modified files on your repository. The same concept applies here. Your server can’t have any files that are untracked or modified or else it won’t perform the pull.
Una vez que su .Gitignore está completo, puede ftp de manera segura, el archivo tractum.php y cualquier otro archivo que deba estar en el servidor pero que no se rastree por Github.
Configuración de tractum.php
All of this setup leads to the file that’s actually going to be handling the pulling on the remote server. The file will execute a single command on the server of “git pull” allowing the server to pull down any changes made. If you head over to the
project repository
Puede ver y descargar los archivos. Hay dos archivos incluidos, tractum.php, que es el archivo principal para manejar cada acción, y capere.php, que se puede usar si tiene múltiples servidores.
Cuando abre tractum.php, notará varias configuraciones en la parte superior que se puede configurar para su proyecto. Rápidamente ejecutaré lo que son y su función en el archivo.
$ ProjectName
- Esto aparece en un encabezado de correo electrónico cuando se envía una alerta de correo electrónico. Debido a que Github enviará un webhook cuando se le haga un empuje, independientemente de la rama, tenemos que especificar a qué rama estamos sincronizados.
$branch
– The name of the branch your server is connected to. Because GitHub will send out a Webhook when a push is made to it regardless of the branch, we have to specify which branch we’re synced to.
$ Correo electrónico
- Puede establecer esto en cualquier cosa que desee. En Brolik, usamos (correo electrónico). Esto significa que cada vez que alguien comete una confirmación en la que el mensaje contiene "(correo electrónico)", todos recibirán un correo electrónico que les alertará sobre la confirmación, así como una lista de todos los archivos editados.
$ SecondaryBranch []
y
$ SecondaryUrl []
= - Si está utilizando un entorno de desarrollo y un Servicio en vivo, puede agregar el Otro Servidor, usted puede agregar el Otro Servidor, usted puede agregar el Otro Servicio. Por ejemplo, si usa Dev.YourSite.com y SUSITE.com, con múltiples ramas llamadas "maestro" y "desarrollo", establecería tractum.php en el servidor de dev, establecerá $ ramá en "desarrollo", establece $ SecondAryBranch a "maestro" y $ SecondAryBranchURL [] a http://wwww.yoursite.com/ [ubicación de Capere.php] ahora, en cualquier momento, se realiza en cualquier momento un empuje, se hace a http://wwwwwwwwww.Yoursite.com/ [ubicación de Capere.php], en cualquier momento, en cualquier momento, se realiza un empuje en cualquier momento. Tractum.php enviará una solicitud a Capere.php que actualizará el suyo.com, y cada vez que se realice un empuje para "desarrollo", tractum.php lo manejará.
$ Team []
- Aquí puede establecer la dirección de correo electrónico de cualquier persona que esté trabajando en el proyecto. Aquellos agregados a esta lista recibirán una actualización de correo electrónico en cualquier momento en que $ correo electrónico se incluya en el mensaje de confirmación.
Las dos últimas variables que deben establecerse son
$ sal
y
$ pass
. Para que se generen estos, navegue a tuyeerver.com/tractum.php?passgen=tileurpasswortwordfont>
== El archivo le dará el enlace al que necesita para establecer su webhook de GitHub, así como la sal y la contraseña del archivo.
Y está terminado! || 125
If everything was done correctly, any changes you make on your local repository and push up to GitHub will automatically be pulled down onto the remote server, removing that unnecessary process of FTPing.
Para obtener más información y acceso a los archivos, diríjase a
-Server-Autopull || hora 128
. If you have questions or want to share your process for FTPing/publishing, leave a comment below.