625 - GitHub Actions es brutal pero un Rabbit Hole

625 - GitHub Actions es brutal pero un Rabbit Hole

Descubre cómo #GitHub Actions puede automatizar tus flujos de trabajo, desde publicar blogs y podcasts hasta gestionar versiones de software

1:25
-3:15

Espera, no te vayas todavía. Esto también es para ti. Soy consciente que cuando has leído el título puedes haber pensado que este episodio está dirigido exclusivamente a desarrolladores de software, ingenieros, devops, administradores de sistemas, pero nada mas lejos de la realidad. Si bien, seguro que es utilizado principalmente por estos perfiles, la cuestión es que tu también le puedes sacar mucho partido. Por ejemplo, ¿sabes que puedes alojar una página web completamente gratis en GitHub?. Si, es eso de las páginas estáticas como Hugo y similares. Pues con las GitHub Actions puedes hacer el trabajo de forma automática. Por que esto de las GitHub Actions va precisamente de automatizar flujos de trabajo. Y lo mismo te digo de publicar tu propio blog como de publicar tu propio podcast. Así, en este episodio de hablo de mi inmersión en GitHub Actions, una experiencia brutal, pero además te contaré algunos workflows que son para seres humanos.

GitHub Actions es brutal pero un Rabbit Hole

Empecemos por el principio

Antes de nada, tengo que ponerte en contexto, sobre que es esto de GitHub Actions, para que tengas claro el concepto y sus posibilidades. GitHub Actions es una herramienta integrada en GitHub que te va a permitir automatizar, personalizar y ejecutar distintas operaciones en tus repositorios de GitHub en base a los eventos que se produzcan en ellos. Básicamente, vas a poder hacer que se realicen determinadas tareas de forma completamente automática cuando haces un push, o cuando abras una pull request, o cuando alguien abra una issue. Pero no solo esto, sino que además puedes programar tareas para que se realicen en base a un cron.
Utilizando la opción del cron es precisamente como con Alberto, del podcast Papá Friki es como montamos la automatización de su podcast, pero en ese caso concreto en GitLab, en lugar de en GitHub, y con el modelo de esa plataforma. De la misma manera que lo hicimos en GitLab, lo podríamos hacer en GitHub utilizando en este caso las GitHub Actions. Así, no solo puedes tener tu blog alojado en GitHub, sino que también podrías tener tu podcast y mas, como veremos mas adelante.

Los workflows

Los workflows son la pieza clave de las GitHub Actions. Un workflow es un proceso automatizado que se compone de uno o varios jobs (o trabajos), y cada uno de esos job, a su vez está compuesto de varios steps o pasos. Estos jobs se ejecutan en un orden determinado y se pueden ejecutar en diferentes sistemas operativos. Los flujos de trabajo se definen en un archivo de configuración YAML que se encuentra en la carpeta .github/workflows de tu repositorio. Estos flujos de trabajo se ejecutan en respuesta a eventos específicos en nuestro repositorio, como por ejemplo, un push a la rama principal, la creación de un Pull Request, etc. O también pueden activarse de forma manual o programada.
Con esta parrafada anterior, puede ser que esto te tire para atrás. Pero, la cuestión es que existe todo un Marketplace de acciones que puedes añadir a tus workflows sin ni siquiera tener que escribir una sola línea de código. Así, por ejemplo, si quieres publicar tu blog, o tu podcast, o tu página web, o lo que sea, simplemente tienes que añadir una acción que se encargue de ello. Y si no la encuentras, la puedes crear tu mismo, y compartirla con el resto de la comunidad.
Por ejemplo, y saliendo de lo habitual. te indico algunos acciones mas o menos interesantes o curiosas que se pueden hacer con GitHub Actions,

Mis primeros workflows con GitHub Actions

Beneficios y retos que he ido encontrando

Una vez que empecé a usar GitHub Actions, rápidamente me di cuenta de los beneficios. Uno de los mayores es la automatización de tareas repetitivas. Por ejemplo, cuestiones completamente absurdas y sencillas como es el número de la versión de nuestro software, poderla actualizar de forma completamente automática. Esto es una tontuna, pero son pequeñas tareas que tenemos que hacer, que en ocasiones, las vamos dejando.
Otra de las operativas interesantes que he introducido es la posibilidad de controlar las operaciones que se realizan al hacer un git push mediante el propio mensaje de commit. Por ejemplo, si en el mensaje aparece #patch subo la versión de development.
Tengo pendiente la automatización de las versiones de las aplicaciones de Ubuntu. Recientemente actualicé my-weather-indicator por un error que me reportaron de las dependencias. El problema de nuevo recayó en el asunto de ¿como crear un deb en ArchLinux?. En estás últimas actualizaciones lo estoy haciendo con un contenedor Docker, como no podía ser de otra manera, pero… ¿Lo podría hacer con las GitHub Actions? Pues efectivamente existe un workflow, que precisamente te permite subir a un PPA, igual que también puedes subir a PyPi o a Maven, o a Docker Hub.
Si, lo has leído bien. Si estás haciendo tus propias imágenes para lo que sea que necesites, el uso de GitHub Actions es algo que tienes que tener muy en cuenta, porque te permite olvidarte por completo de generar las imágenes. Es decir, simplemente tienes que preparar tu archivo Docker file, y subir ese archivo a tu repositorio, y las GitHub Actions se encargan de hacer la magia.
Luego ya está todo eso de la integración contínua, que por el momento no lo abordaré y lo dejaré solo para los artículos técnicos que iré publicando mas adelante.
Sin embargo, también he encontrado algunos desafíos. Uno de ellos es la curva de aprendizaje inicial. No tanto por los conceptos que se asimilan con facilidad. Y es que si bien, GitHub Actions tiene mucho potencial, configurar workflows complejos puede ser un poco abrumador al principio, especialmente si necesitas condiciones especiales o integraciones con otros servicios.
Otro reto ha sido optimizar los tiempos de ejecución. Dependiendo de la complejidad del workflow, puede llevar tiempo ejecutar todas las acciones. Sin embargo, te puedo asegurar que es bastante más rápido que hacerlo en tu propio equipo. Esto te lo garantizo.

Consejos recursos útiles

Si estás pensando en empezar con GitHub Actions, aquí tienes algunos consejos interesantes,

  1. Empieza Simple: No intentes automatizar todo de golpe. Comienza con un workflow lo mas sencillo posible, aunque no cubra todos los aspectos de lo que necesites.
  2. Explora la Marketplace: GitHub Actions tiene una gran cantidad de acciones preconstruidas en su Marketplace. Utilizar estas acciones puede ahorrarte mucho tiempo.
  3. Lee la Documentación y Ejemplos: La documentación oficial de GitHub es excelente, y la comunidad ha compartido muchos ejemplos útiles. Aprovecha estos recursos.
  4. Usa Secrets para Manejar Credenciales: Si necesitas manejar claves API u otras credenciales, usa los secrets de GitHub para mantener tu información segura.
    Finalmente, quiero mencionar algunos recursos que me han sido de gran ayuda:

Conclusiones

Para concluir, mi inmersión en GitHub Actions ha sido una experiencia increíblemente positiva. Me ha permitido automatizar procesos clave en mi flujo de trabajo, ahorrando tiempo y aumentando la calidad de mi código. Si aún no has probado GitHub Actions, te animo a que lo hagas. Es una herramienta poderosa que puede transformar la manera en que trabajas.

Gracias por escuchar el episodio de hoy. Si te ha gustado, no olvides suscribirte al podcast y dejar una reseña. Y si tienes alguna pregunta o quieres compartir tu experiencia con GitHub Actions, no dudes en contactarme

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *