Mostrando entradas con la etiqueta Git. Mostrar todas las entradas
Mostrando entradas con la etiqueta Git. Mostrar todas las entradas

miércoles, 6 de agosto de 2014

Auto-deploy con github y NodeJS

nodejs

Hace unos días estaba creando una aplicación en Velneo para actualizar otras aplicaciones utilizando GitHub como repositorio para mi fuente y me comentaron acerca de los auto-deploy con GitHub como una funcionalidad para mi aplicación así que me di a la tarea de investigar un poco cuales eran las mejores opciones para hacer funcional esta idea.


Luego de leer mucho, probar y demás... utilizando php, ruby, python, me decidí por NodeJS, ya que tiene una facilidad increible para crear "webserver's" sencillos, asi que es sumamente fácil poner en práctica un auto-deploy con github y sus webhooks utilizando alguna librería. Comenzaré entonces explicando paso a paso como lograr esto.


Debes tener en cuenta que para lograr esto, la máquina o servidor donde deseas hacer el auto-deploy debe tener una ip pública o algún dns para que por medio de los webhooks reciba la petición.


Cual es el funcionamiento de los webhooks? Bueno, cuando hacemos un push a un repositorio en github, este enviará una petición POST a la URL que hayamos configurado. Esta URL se especifica en la configuración del repositorio. Esta petición POST incluira una variable "payload" con información del ultimo commit del repositorio.


Luego de esto entonces nosotros nos encargaremos de ejecutar cualquier acción que deseemos al recibir esta petición, ya sea utilizando NodeJS directamente o algún script .sh


Bueno, comenzaremos con cumplir los requerimientos básicos, aquí probaremos con un servidor Centos, así que comenzaremos con instalar NodeJS y NPM



yum install nodejs npm -y

Con esto instalamos directamente los dos paquetes, y con "-y" aceptamos directamente y así no nos pide confirmación.


Luego tenemos que movernos a la carpeta donde crearemos nuestro script, en este caso la crearemos y nos moveremos dentro para instalar gith, que usaremos para escuchar y recibir el payload.



# Creamos la carpeta
mkdir nodeapp
# Nos movemos a la carpeta creada
cd nodeapp
# Instalamos gith en esta carpeta
npm install gith
# Abrimos un archivo para el contenido de nuestro script
nano script.js

ya que tenemos instalado gith, procedemos a crear nuestro script JS



// Escuchamos en el puerto que deseemos
var gith = require('gith').create( 9001 );
// Importamos execFile, para correr nuestro script de bash
var execFile = require('child_process').execFile;
// Usamos gith
gith({
// Repositorio
repo: 'xploshioOn/autodeploy'
// Le decimos que se ejecute esto cuando se agreguen, eliminen o modifiquen archivos
}).on( 'file:all', function( payload ) {
// Si la rama es la master
if( payload.branch === 'master' )
{
// Ejecutamos nuestro script
execFile('/nodeapp/script.sh', function(error, stdout, stderr) {
// Finalizó sin problemas
console.log( 'script completado' );
});
}
});

Comento la mayoría de las lineas para un mejor entendimiento de este.


Igualmente dejo un enlace a Gith para que puedan tener información completa de la librería.


Luego procedemos a jugar con nuestro script shell



nano /nodeapp/script.sh

#!/bin/bash
# Inicializamos git
git init
# Hacemos pull del repositorio
git pull

Esto teniendo en cuenta que nuestro repositorio haya sido clonado directamente y ya tenga el remote.origin.url bien...


Teniendo esta estructura, podemos agregar mas lineas a nuestro script JS o sh para ejecutar las acciones que creamos convenientes cada vez que se actualice nuestro repositorio en github o se haga un push.


Ahora luego de configurar el webhook en nuestro repositorio a http://nuestroservidor.com:9001, ya tenemos nuestro script que escucha, github que nos enviará una petición y al recibir ejecutará nuestro sh, solo nos queda una cosa por hacer, necesitamos que el script js se ejecute automatcamente y esté escuchando siempre. para eso utilizamos forever.



# Instalar forever globalmente 
sudo npm install -g forever
# Inicializamos nuestro script
forever start /nodeapp/script.js

puedes detenerlo con stop apuntando a la misma ruta o ver todos los scripts levantados con list.


En mi aplicación envío correos, para lo cual utilicé nodemailer en mi script node, e igualmente agregué un par de cosillas mas a mi script sh...


Espero les sirva y pues cualquier duda, o algún funcionamiento mas que necesiten, no duden en comentar.


Saludos.

jueves, 25 de octubre de 2012

Aprender lo Básico de Git y Github

Lo más basico de git y github


En este nuevo video hablaremos sobre Git y Github, para aprender a usar lo básico y poder empezar a utilizar Git con Github. El tutorial dura aproximandamente 40 minutos, es un poco extenso ya que es así. No es solo crearse una cuenta en Github y empezar a subir los repositorios, sino que hay que aprender algunas cosas, aunque sea lo básico.


Al instalar Git vamos a utilizar esto ->


bash de git en windows


Sí, para los que no lo conocen es el terminal (o consola, bash, linea de comandos, shell). El videotutorial esta hecho en Linux por lo que no vamos a utilizar la misma terminal que sale en la imagen, en realidad no visualmente, pero al final se podría decir que es lo mismo.


Algo que hay que tener en cuenta, es que hay que saber por lo menos 2 comandos para navegar entre directorios a través del terminal. Para eso se utilizan 2 comandos muy fáciles de usar, que son el comando cd y ls . En este enlace pueden ver información sobre comandos de Unix que los tienen que utilizar para posicionarse en los directorios, solo vean los 2 primeros.


También recuerden que para trabajar con un repositorio Git tienen que estar posicionados en la raiz del directorio, osea dentro de la carpeta del repositorio y ahí pueden escribir todos los comandos para nuestro repositorio Git, si por ahora no entienden esto pueden releerlo al final de ver el videotutorial.


También en el video digo que no es necesario ponerle un passphrase a la clave SSH (luego lo verán), pero aviso que el passphrase sería conveniente en el caso de que existan más personas que tengan acceso a tu disco duro y puedan sacar tu clave SSH.



El Video



Para Descargar en HD


En el caso de que lo quieras tener más a mano y poder analizarlo mejor.

http://depositfiles.com/files/okoh4ausa



Algunos enlaces ;-)


Sobre los comandos para Linux (para ver información sobre los comandos cd y ls que se utilizan siempre)


http://tuxpepino.wordpress.com/2007/05/08/comandos-indispensables-en-gnulinux/


Libro sobre Git para que vean información sobre Git más detalladamente y meditadamente.


http://git-
nscm.com/book/es


Sitio Oficial de Git


http://git-scm.com


Github


https://github.com


Mas Videos tutoriales de Git


http://www.youtube.com/playlist?list=PL353A30C7CCE5098F


Espero que les sirva el tutorial :D todavía estoy aprendiendo a hacer esto de los videos :D pero siempre son buenas las críticas mientras que sean constructivas y bien intencionadas.


Un saludo ;-)

miércoles, 3 de octubre de 2012

Trabajar con Git más Dropbox - Videotutorial

Trabajar con Git más Dropbox


En este pequeño video veremos como trabajar con Git más Dropbox para poder trabajar en equipo con la gente que deseamos.


En Internet existe una web que se llama GitHub que nos sirve para compartir nuestros repositorios Git con el resto del mundo. Pero a veces no queremos compartir nuestros repositorios con todo el mundo, sino sólo con algunas pocas personas. En este caso podemos utilizar Dropbox para subir nuestros repositorios de git a dropbox y compartir nuestros repositorios con la gente que deseamos.


También en el caso de una aplicación web o un tema para algún CMS siempre es mejor hacerlo en local en vez de estarlo modificando desde el servidor por medio de FTP. Es mejor para que los usuarios de nuestra web no estén presenciando los cambios en tiempo real, ya que esto es un poco perjudicador.


También tengo que señalar que para entender el video hay que tener algunos conocimientos básicos sobre Git, Shell Linux (o similares).



El Video



También puedes descargar el Video en HD


Descargar acá

Resumen


En nuestra carpeta de Dropbox creamos una carpeta para almacenar el repositorio.
mkdir /home/writkas/Dropbox/mi_repo

Entramos a la carpeta creada y inicializamos nuestro repositorio.
cd /home/writkas/Dropbox/mi_repo
git --bare init

Ahora sólo vamos al directorio donde queremos clonar, en mi caso iré a una carpeta que tengo en home que tiene el nombre de "git".
cd /home/writkas/git/
git clone /home/writkas/Dropbox/mi_repo

Y listo! esta clonado y podemos enviar y recibir cambios.

El video se alarga un poco para que sea más explicativo, pero el resumen ya esta.

También este es mi primer video tutorial, estaba un poco nervioso. Y pueden dejar sus críticas y consultas, que creen que le falto al video, que no se entendió bien, si les pareció aburrido, etc.