Filtrar repositorios sin usar en Github

Github API listar repositorios de Organización

Cuando creas una cuenta organizacional en Github y van pasando los años, la probabilidad de que muchas personas tanto internas como externas hayan pasado por tu empresa. Esto mismo pasa con los repositorios, muchos de ellos quedan huerfanos y ya no tiene sentido que existan debido a que su código tampoco está en uso.

Utilizando las APIs de GITHUB es muy sencillo filtrar los repositorios por la última actualización que tuvieron, lo que hace mucho más sencillo el proceso de archivar estos repositorios.

En este mini post mostraré una forma «sencilla» de facilitar la eliminación de los repositorios de tu organización de GitHub sin uso, sin embargo no automatizaremos esta eliminación.

Leer más

API Privada con Serverless Framework, AWS y VPCs.

Api Gateway Private Endpoint

Generalmente cuando hablamos de APIs pensamos en la forma como otros desarrolladores se pueden conectar a nuestros sistemas, productos, o servicios. Sin embargo, cuando empiezas a desacoplar tus sistemas te das cuenta que el utilizar APIs para el desarrollo interno puede ser igual o más útil para el negocio.

Este ejemplo sencillo muestra como poder crear un API privada usando Serverless Framework y Amazon Web Services. Ojo, pestaña, y ceja, lo que estoy haciendo con este ejemplo no es hacer privada un API a través de autentificación y autorización, eso siempre se puede agregar sobre el API como una capa de seguridad aún mayor, en este caso estamos haciendo privada la conexión para que solo pueda ser accedida desde nuestra VPC a través de un AWS PrivateLink.

Ya han pasado un poco más de dos años desde que AWS lanzó esta  funcionalidad, sin embargo no había tenido la oportunidad y necesidad de utilizarla anteriormente. Pueden leer el Post original de AWS acá : https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/

El código de este ejemplo puede ser encontrado en GitHub : https://github.com/ctala/serverless-private-api-endpoint

Leer más

Tutorial : Full RESTfull API con AWS, Terraform, y Serverless Framework

Hace ya algunos años que he querido hacer un tutorial como este, en dónde de manera sencilla pueda explicar los distintos pasos de la creación de un API REST, o al menos como lo he aprendido a hacer basado en experiencia y errores.

Una de las razones del por qué nunca comencé con este proyecto es debido a que crear un API puede ser tan complejo como uno quiera, y nunca encontré el tiempo para realizarlo, por lo que decidí lanzar este tutorial por partes e iré publicando las distintas partes a medida que las vaya realizando.

En este tutorial crearemos un Full RESTfull API con seguridad basada en tokens utilizando AWS, Swagger, Terraform, DynamoDB, SSM, y Serverless Framework quién generará los recursos del API Gateway y Lambdas.

 

Estado Proyecto En Progreso
Fecha Inicio 17/05/2020
Fecha Actualización 17/05/2020
Fecha de Término
Capítulos listos 2/10
Link Youtube Playlist https://www.youtube.com/playlist?list=PLCjIDwuXOgwR64ScpUf6WLnW6j2jdkREX

 

Indice

  1. Entendiedo la necesidad. API de manejo de datos de usuarios y los datos requeridos.
  2. Conociendo las herramientas que se utilizarán y el por qué las usaremos.
  3. Diseñando la API utilizando Swagger. Antes de crear el API debemos saber que información recibirá y que información retornará.
  4. Generando la base de datos DynamoDB, y el recurso relacionado de SSM utilizando Terraform.
  5. Generando los endpoints utilizando Serverless Framework.
  6. Generando el CRUD de la aplicación. – Create, Read, Update, Delete –
  7. Asegurando nuestra API.

Extra

  1. Bloqueo de recursos en Terraform para impedir eliminaciones accidentales.
  2. Endpoint que lista los usuarios con paginación.
  3. Sincronizando DynamoDB con Redshift para realizar operaciones analiticas.

Leer más

Usando TravisCI y Github Package Repository (GPR)

TRAVIS CI

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 :

  1. Debes de tener una cuenta en GitHub
  2. Debes de tener una cuenta en TravisCI
  3. 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.

TRAVISCI y GPR

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.

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

De StartUp a una ScaleUp con Pago Fácil y Consorcio Financiero

Tomás Zavala, de Consorcio, y Cristián Tala, de Pago Fácil

Hoy en particular ha sido un día bastante movido y no solo por todas las reuniones y posibles negocios, sino por las felicitaciones que hemos recibido gracias a la inyección de capital de Consorcio Financiero. (Revisar noticia en El Mercurio, Diario Financiero, 24Horas, y La Tercera) Ya llevamos un poco más de dos años trabajando … Leer más