Travis-CI es un sistema de Integración Continua, y es una herramienta muy importante en el mundo de la automatización de pasos a producción, mientras que GitHub Package Repository corresponde a un sistema de manejo de paquetes y dependencias relativamente nuevo proporcionado por GitHub.
Estamos modificando el flujo de automatización que tenemos de paso a producción, y un amigo me recomendó enormemente ( y reiteradamente ) que comenzara a usar TravisCI.
Hace bastante no escribía un blogpost, sin embargo pasé un par de horas que no tenía planeadas en invertir en esta conexión así que creo que amerita escribir algo al respecto.
Antes de iniciar :
- Debes de tener una cuenta en GitHub
- Debes de tener una cuenta en TravisCI
- Asumiré que la conexión entre ambos ya está realizada y tienes un proyecto que incluya un paquete alojado en GITHub Package Repository.
Creando variables de entorno encriptadas.
Creando variables de entorno a través de la línea de comandos.
Hay distintas formas de generar las variables de entorno encriptadas, en mi caso el que se acomodó a lo que necesitaba era teniendo la herramienta de línea de comandos de TravisCI instalada.
El siguiente comando será ejecutado desde la línea de comandos en el root folder del proyecto que tengamos con travis.
travis env set GITHUB_TOKEN MIGITHUBTOKEN --private
Esto generará una variable de entorno global en el proyecto en Travis, pero no generará ningún cambio en el archivo de proyecto que tenemos.
Creando variables de entorno desde la página web.
Si seleccionamos nuestro proyecto en TravisCI y vamos a Settings, podemos encontrar una sección en dónde alojan las variables de entorno. En este caso podemos ver la variable que creamos en la sección anterior, además de poder crear una variable nueva asociada a un branch.
Generando automáticamente el archivo .npmrc
Ahora que ya tenemos nuestro token de GitHub como variable de entorno en nuestro proyecto de Travis, es necesario ocuparla para generar el archivo de configuración para descargar el paquete desde el repositorio de GitHub (GPR).
En el archivo de configuración de travis (.travis.yml) agregamos los siguiente.
language: node_js node_js: - 10 cache: directories: - node_modules before_install: - echo "BEFORE INSTALL - ADD PRIVATE REPO" - npm config set registry https://npm.pkg.github.com/OWNER - echo "GENERATING AUTH" - echo //npm.pkg.github.com/:_authToken=$GITHUB_TOKEN > .npmrc install: - echo "INSTALL" - npm install
En el ejemplo anterior, antes de instalar los paquetes, se está agregando el repositorio de github y el usuario al que pertenece el paquete. Este en el caso de nosotros es el repositorio de la empresa. No olviden cambiar OWNER con el nombre de la cuenta de GITHUB.
Una vez agregado el repositorio, generamos el archivo de configuración .npmrc con el token de github que será necesario para descargar el paquete sin tener errores de permisos.
Conclusión
La verdad es un proceso bastante sencillo y que agrega un montón de valor al paso productivo de proyectos privados. No se justificaban las horas requeridas para hacerlo haberlo logrado, pero que bueno que finalmente funcionó.
Espero que les sirva para que no pasen por el mismo tiempo de aprendizaje.