El objetivo de esta práctica es extender el package NodeJS desarrollado en la pŕactica 4, publicado en npm con una nueva funcionalidad que permita que los usuarios con conocimientos de NodeJS puedan extender la conducta del ejecutable para que este realice el despliegue en plataformas distintas de las ya consideradas. Además, la creación del repositorio en el que se alojará el gitbook se procurará de forma automática a través de la API de Github.
Se deberá desarrollar una nueva funcionalidad que permita:
- Crear un token para el programa haciendo uso de la Authorizations API.
- Guardar el token en ~/.gitbook-start/config.json y usarlo para cualesquiera posteriores comunicaciones con la API de GitHub.
- Obtener el email y el nombre del autor.
- Crear el repositorio del libro en GitHub.
- Generar el libro.
- Hacer un push del repositorio inicial, incluyendo las gh-pages.
- Mejorar el plugin gitbook-start-heroku-... para que haciendo uso de la API de Heroku cree la aplicación en Heroku, intentando prescindir del heroku-toolbelt
- Mejorar el plugin gitbook-start-iaas-... para que haga uso de versiones de ssh enteramente escritas en JavaScript intentando prescindir de OpenSSH y del uso de comandos de la bash
Los plugins realizados para los distintos despliegues son:
Al ejecutar el comando gitbook-start -d < directorio > ... sin introducir la opción de -u < url > se mostrará el prompt y pedirá las credenciales del usuario para la creación de un nuevo repositorio.
Importante: Si al intentar crear el gitbook ($ gitbook-start -d < directorio> ....) se muestra el error "bad credentials" es posible que exista un token antiguo y desactualizado en la máquina que ya no posibilita el acceso a GitHub. Es necesario borrar este token y volver a ejecutar el comando ($ gitbook-start -d < directorio>...).
1- Descargar el paquete inicial: gitbook-start
$ npm install -g gitbook-start-josue-nayra
2- Crear el libro mediante el comando:
$ gitbook-start -d <directorio> --autor <autor> --name <nombre_libro> --url <url_repo>
Opciones disponibles para la creación del libro:
-d o --directorio <directorio en el que se desplegará el libro>
--autor <autor del libro>
--name <nombre del libro>
--url <url del repositorio en github>
--help
--version
Se construye así la estructura inicial por gitbook-start, es decir, la jerarquía de directorios conteniendo los scripts y ficheros markdown para el libro.
Nota: Si no se introduce la opción de -u < url > se mostrará el prompt y pedirá las credenciales del usuario para la creación de un nuevo repositorio. También se pedirá el nombre del repo y comprobará si éste existe.
3- Colocarse en la carpeta que contiene el libro.
$ cd <directorio en el que se ha desplegado el libro>
4- Instalar las dependencias necesarias mediante el comando:
$ npm install
5- Instalar los plugins requeridos como dependendecias con la opción --save.
$ npm install --save gitbook-start-iaas-ull-es-josue-nayra
$ npm install --save gitbook-start-heroku-josue-nayra
6- Para la actualización de nuestro repositorio podemos ejecutar una de las tareas descritas en el gulpfile: gulp push --mensaje .
**7- Generamos token. **
Para ello accedemos a los settings de nuestra cuenta personal en Github, hacemos click en "Personal access token" y finalmente generamos un nuevo token.
Setting de nuestra cuenta en Github
8- Una vez generado, lo copiamos y lo añadimos al fichero config.json en el directorio oculto /.gitbook-start
Fichero config.json:
{
"token": "<token generado>"
}
9- Ejecutar la opción --deploy especificando la máquina remota dónde queremos hacer el despliegue:
$ gitbook-start --deploy [iaas-ull-es|heroku] [Opciones]
Además de llamar a los métodos initialize() de cada plugin de despliegue, se nos ha creado un nuevo repositorio que contendrá nuestro Gitbook a través de Github. Si ejecutamos el comando $ git remote -v podremos observar que se ha añadido un nuevo repositorio remoto "origin".
Para conocer mejor las opciones disponibles para cada plugin de despliegue podemos acceder a los paquetes publicados en npm para despliegues en iaas-ull-es o en Heroku. Los enlaces podemos encontrarlo en las siguientes secciones.
10- Una vez ejecutado el comando anterior, se generará automáticamente en el gulpfile.js una tarea llamada "deploy-[heroku|iaas-ull-es]" que permitirá al usuario actualizar el contenido de dicha máquina.
gulp.task("deploy-<máquina en la que realizar el despliegue>", function(){
require(path.join(basePath, 'node_modules','<plugin de depliegue>')).deploy(...);
});
11- Ahora el usuario podrá ejecutar dicha tarea gulp y actualizar los cambios en el Gitbook desplegado.
$ gulp deploy-[heroku|iaas-ull-es]
- push
Tarea habilitada para que el usuario pueda actualizar el repositorio que contiene el gitbook. Está disponible una opción --mensaje para especificar el mensaje del commit.
$ gulp push --mensaje <mensaje del commit>
- instalar_recursos
Tarea que permite al usuario instalar plugins y dependencias necesarias para su gitbook.
& gulp instalar_recursos
- deploy
Tarea deploy genérica que actualiza las gh-pages del gitbook.
$ gulp deploy
- deploy --iaas
Tarea generada posteriormente a la realización y ejecución del comando gitbook-start --deploy, que permite al usuario realizar posteriores despliegues y actualizaciones de su gitbook en la máquina remota con gulp. Por ejemplo, en el caso de que el usuario despliegue en el IAAS, después de haber desplegado con la opción gitbook-start --deploy iaas-ull-es, en el gulpfile se generará una tarea con el nombre deploy-iaas-ull-es.
$ gulp deploy-<máquina en la se ha desplegado previamente>
- Josué Toledo Castro Github personal
- María Nayra Rodríguez Pérez Github personal