Acciones de GitHub para aplicaciones Node.js

Rate this content
Bookmark

Las Acciones de GitHub ofrecen una solución conveniente y completa para construir pipelines de CI. Las acciones consisten en pasos componibles controlados por archivos YAML que se guardan en tu repositorio de código. Ven y aprende cómo realizar tareas que son comúnmente requeridas en bases de código Node.js modernas, como la instalación de paquetes, el linting, la ejecución de pruebas como parte de las solicitudes de extracción, la construcción de imágenes Docker y la implementación cuando el código se fusiona en la rama principal.

FAQ

Las Acciones de GitHub son una forma de ejecutar tareas de integración continua relacionadas con tu base de código, especialmente útil si tu código ya está alojado en GitHub.

La facturación de las Acciones de GitHub se basa en minutos. Por ejemplo, con una cuenta gratuita obtienes 2000 minutos al mes y con una cuenta Pro 3000 minutos al mes.

Las Acciones de GitHub se definen utilizando archivos YAML que se guardan en el directorio .github dentro de una carpeta llamada workflows en tu repositorio.

Un flujo de trabajo en las Acciones de GitHub se compone de uno o más trabajos, y un trabajo está compuesto por uno o más pasos, permitiendo ejecutar código en paralelo o secuencialmente según las dependencias definidas.

En un flujo de trabajo de GitHub Actions, puedes configurar un entorno de Node.js utilizando la acción 'setup-node', especificando la versión de Node.js que deseas instalar.

Sí, es posible ejecutar GitHub Actions de forma manual si se proporciona el campo 'workflow_dispatch' en el archivo YAML del flujo de trabajo, lo que permite activar el flujo de trabajo desde la interfaz de usuario de GitHub.

Los secretos en las Acciones de GitHub son una forma de establecer pares clave-valor que se mantienen ocultos y se utilizan para configurar aspectos sensibles del proyecto sin exponerlos en el código.

Para reutilizar configuraciones en los flujos de trabajo de GitHub Actions, puedes crear acciones personalizadas que encapsulen patrones comunes, lo que permite compartir configuraciones entre varios proyectos o repositorios.

Thomas Hunter II
Thomas Hunter II
32 min
01 Jul, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Las Acciones de GitHub permiten realizar tareas de integración continua, definidas en archivos YAML, que pueden ser versionadas y revisadas a través de solicitudes de extracción. Los flujos de trabajo pueden ser activados por eventos como solicitudes de extracción o fusiones, y los pasos pueden hacer referencia a repositorios externos de GitHub. Se pueden construir y desplegar contenedores Docker utilizando las Acciones de GitHub, con la configuración y el despliegue definidos en archivos YAML. Los valores pueden ser utilizados y compartidos entre las Acciones de GitHub, y los componentes internos de Node.js pueden ser instrumentados para el monitoreo de rendimiento.

Available in English: GitHub Actions for Node.js Apps

1. Introducción a las Acciones de GitHub

Short description:

Hola, soy Thomas Hunter y bienvenidos a mi charla, Acciones de GitHub para aplicaciones Node. En esta charla, daré una visión general de las acciones de GitHub, que te permiten ejecutar tareas de integración continua relacionadas con tu base de código. Las acciones de GitHub se definen utilizando archivos YAML y se pueden versionar y revisar a través de solicitudes de extracción. Son componibles, lo que te permite construir gráficos de dependencia y ejecutar código en paralelo. Los pasos pueden hacer referencia a repositorios externos de GitHub.

Hola, soy Thomas Hunter y bienvenidos a mi charla, Acciones de GitHub para aplicaciones Node. Y el contenido de esta charla se basa en un libro que publiqué recientemente llamado Sistemas Distribuidos con Node. Bien, vamos a sumergirnos en ello. Primero, vamos a ver una visión general de las acciones de GitHub. Es posible que te preguntes qué es una acción de GitHub. Bueno, es una forma de ejecutar tareas de integración continua relacionadas con tu base de código. Y es realmente conveniente si tu código ya está alojado en GitHub, lo cual parece ser el caso de la mayoría de los repositorios en estos días. La forma en que funciona es que finalmente asigna una máquina virtual para ti en algún lugar, y luego ejecuta un montón de código para ti una vez que se ha activado una acción de GitHub. Y en cuanto a la facturación, se basa en minutos. Si tienes una cuenta gratuita, obtienes 2000 minutos al mes, una cuenta Pro 3000 minutos al mes. Y si tienes cuentas pagadas, puedes obtener diferentes niveles y también puedes pagar por ellos. Y así se proporciona una integración continua que se define utilizando código. Y estas acciones de GitHub se definen utilizando archivos YAML que se guardan en el repositorio. Por lo tanto, se encontrarán en el directorio de GitHub dentro de una carpeta llamada flujos de trabajo. Y luego puedes crear varios archivos YAML para cada flujo de trabajo que quieras definir. Por lo tanto, se confirman. Se versionan, puedes hacer solicitudes de extracción, verificar y revisar que se vean bien. Y sinceramente, en comparación con el uso de un sistema como Travis CI o CircleCI, este enfoque no va a ser muy diferente. Sin embargo, algo bueno es que no tienes que crear una nueva cuenta. No tienes que autorizarlo, configurarlo y todas esas cosas. Ya que todo está bajo el techo de GitHub, todo funciona junto de manera bastante fluida.

Una buena cualidad de estos flujos de trabajo es que son componibles. Por lo tanto, un flujo de trabajo está compuesto por uno o más trabajos y luego un trabajo está compuesto por uno o más pasos. Estos diferentes trabajos se ejecutan en diferentes máquinas virtuales. Puedes especificar dependencias. Puedes decir que este trabajo depende de ese otro trabajo. Y al definirlos de esa manera, puedes construir algún tipo de gráfico de dependencia y ejecutar código en paralelo. Y los pasos individuales se ejecutan secuencialmente. Por lo tanto, los pasos pueden hacer referencia a repositorios externos de GitHub. Y por ejemplo, esta línea que se usa aquí, representa código que verías dentro de uno de estos archivos de flujo de trabajo. Y esto significa que se está utilizando

2. GitHub Actions y Ejemplo de Flujo de Trabajo

Short description:

Y eso en realidad se traduce en un repositorio de GitHub. Otra cosa que puedes hacer es definir la configuración utilizada por estos flujos de trabajo. Es una forma de establecer pares clave-valor que puedes usar dentro de tus flujos de trabajo. Si adoptas las Acciones de GitHub, considera crear acciones para patrones de organización comunes. Veamos un ejemplo de flujo de trabajo para una solicitud de extracción. La salida de estos flujos de trabajo es contextual dentro de la solicitud de extracción. Ahora, veamos un archivo de flujo de trabajo. Representa el esqueleto necesario para diferentes flujos de trabajo. Tenemos un flujo de trabajo llamado PR lint test.yaml. Especifica el disparador para ejecutar este flujo de trabajo. Tenemos una cláusula de trabajos con un trabajo de construcción definido.

acciones slash set up dash node en V2.1.4. Y eso en realidad se traduce en un repositorio de GitHub. En este caso, es la organización de acciones, que es mantenida por GitHub, y luego el repositorio de configuración de node y eso. Y luego ese símbolo de arroba allí, eso hace referencia a una etiqueta. Y esto significa que queremos usar la etiqueta V2.1.4.

Otra cosa que puedes hacer es definir la configuración utilizada por estos flujos de trabajo. Y esa configuración termina en la configuración del proyecto. Y esa configuración se llama un secreto. Esos secretos se mantienen ocultos a los ojos de aquellos que no deberían verlo necesariamente. Pero en esencia, es una forma de establecer pares clave-valor que puedes usar dentro de tus flujos de trabajo.

Otra cosa que debes considerar hacer si adoptas las GitHub Actions es crear acciones para patrones de organización comunes. Por ejemplo, si tu empresa tiene tal vez una docena de repositorios de node, y todos terminan implementando microservicios dentro de tu infraestructura, tendría sentido crear GitHub Actions que luego puedas compartir entre todos esos proyectos.

Muy bien, ahora veamos un ejemplo de flujo de trabajo, este es uno que vamos a usar para una solicitud de extracción. Y al igual que otras soluciones de CI, si las has usado, es que la salida de estos termina siendo contextual dentro de la solicitud de extracción. En este caso, podemos ver que hay una solicitud de extracción mal elaborada sin descripción. Pero podemos ver en la parte inferior que se han publicado los resultados del flujo de trabajo. Por lo que son muy convenientes para ver contextualmente dentro de una solicitud de extracción.

Así que veamos un archivo de flujo de trabajo. Esto representa un poco de esqueleto, que necesitarás usar en estos diferentes flujos de trabajo. Pero no es tan malo. En este caso, tenemos un flujo de trabajo llamado PR lint test.yaml. Lo primero que hacemos es definir un nombre. Esto se mostrará en la interfaz de usuario de GitHub. En este caso, el nombre es linter y prueba de aceptación. Luego tenemos esta cláusula on aquí, que especifica esencialmente el disparador para ejecutar este flujo de trabajo. Y lo que esto dice es que cuando se hace una solicitud de extracción contra la rama principal, se debe iniciar este flujo de trabajo. También se observa ese campo colgante llamado workflow dispatch. Y al proporcionarlo, puedes activar manualmente este flujo de trabajo también utilizando la interfaz de usuario. Después de eso, tenemos esta cláusula de trabajos. Y dentro de ella tenemos un trabajo de construcción definido.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
Aprenda más sobre cómo aprovechar las características predeterminadas de los espacios de trabajo de npm para ayudarlo a administrar su proyecto monorepo, mientras también explora algunas de las nuevas características de npm cli.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
¿Sabes qué está pasando realmente en tu carpeta node_modules? Los ataques a la cadena de suministro de software han explotado en los últimos 12 meses y solo están acelerándose en 2022 y más allá. Profundizaremos en ejemplos de recientes ataques a la cadena de suministro y qué pasos concretos puedes tomar para proteger a tu equipo de esta amenaza emergente.
Puedes consultar las diapositivas de la charla de Feross aquí.
Automatizando Todo el Código y las Pruebas con GitHub Actions
React Advanced Conference 2021React Advanced Conference 2021
19 min
Automatizando Todo el Código y las Pruebas con GitHub Actions
Top Content
Las tareas de código como linting y pruebas son partes críticas del flujo de trabajo de un desarrollador que nos ayudan a mantenernos cuerdos, como prevenir problemas de sintaxis o estilo y fortalecer nuestra lógica de negocio central. Hablaremos de cómo podemos usar GitHub Actions para automatizar estas tareas y ayudar a mantener nuestros proyectos funcionando sin problemas.
Ajustando DevOps para las Personas sobre la Perfección
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Ajustando DevOps para las Personas sobre la Perfección
Top Content
La demanda de DevOps ha aumentado en los últimos años a medida que más organizaciones adoptan tecnologías nativas de la nube. La complejidad también ha aumentado y una mentalidad de "cero a héroe" deja a muchas personas persiguiendo la perfección y FOMO. Esta sesión se centra en cambio en por qué tal vez no deberíamos adoptar una práctica tecnológica y cómo a veces los equipos pueden lograr los mismos resultados priorizando a las personas sobre la automatización y controles de operaciones. Veamos las cantidades y el ajuste fino de todo como código, solicitudes de extracción, DevSecOps, Monitoreo y más para priorizar el bienestar del desarrollador sobre la perfección de la optimización. Puede ser una decisión válida desplegar menos y dormir mejor. Y finalmente examinaremos cómo la práctica manual y la disciplina pueden ser la clave para productos y experiencias superiores.
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Node Congress 2022Node Congress 2022
34 min
Hacia una Biblioteca Estándar para Runtimes de JavaScript
Top Content
Puedes revisar las diapositivas de la charla de James aquí.
ESM Loaders: Mejorando la carga de módulos en Node.js
JSNation 2023JSNation 2023
22 min
ESM Loaders: Mejorando la carga de módulos en Node.js
El soporte nativo de ESM para Node.js fue una oportunidad para el proyecto de Node.js de lanzar soporte oficial para mejorar la experiencia de carga de módulos, permitiendo casos de uso como la transpilación sobre la marcha, la sustitución de módulos, el soporte para cargar módulos desde HTTP y la monitorización.
Aunque CommonJS tiene soporte para todo esto, nunca fue oficialmente compatible y se hacía mediante hackeo del código de ejecución de Node.js. ESM ha solucionado todo esto. Analizaremos la arquitectura de la carga de ESM en Node.js y discutiremos la API del cargador que lo admite. También veremos características avanzadas como la concatenación de cargadores y la ejecución fuera de hilo.

Workshops on related topic

Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Construye y Despliega un Backend con Fastify y Platformatic
JSNation 2023JSNation 2023
104 min
Construye y Despliega un Backend con Fastify y Platformatic
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente APIs GraphQL y REST con un esfuerzo mínimo. La mejor parte es que también te permite aprovechar todo el potencial de Node.js y Fastify cuando lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y complementos adicionales. En el masterclass, cubriremos tanto nuestros módulos de código abierto como nuestra oferta en la nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/).
En este masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la nube de Platformatic.
0 a Auth en una Hora Usando NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 a Auth en una Hora Usando NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones
Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.
Tabla de contenidos- Una breve introducción a los conceptos básicos de autenticación- Codificación- Por qué importa la autenticación sin contraseña
Requisitos previos- IDE de tu elección- Node 18 o superior
Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
WorkshopFree
Matt Landers
Will Johnston
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
Despliegue de aplicaciones React Native en la nube
React Summit 2023React Summit 2023
88 min
Despliegue de aplicaciones React Native en la nube
WorkshopFree
Cecelia Martinez
Cecelia Martinez
Desplegar aplicaciones React Native manualmente en una máquina local puede ser complejo. Las diferencias entre Android e iOS requieren que los desarrolladores utilicen herramientas y procesos específicos para cada plataforma, incluidos los requisitos de hardware para iOS. Los despliegues manuales también dificultan la gestión de las credenciales de firma, las configuraciones de entorno, el seguimiento de las versiones y la colaboración en equipo.
Appflow es la plataforma de DevOps móvil en la nube creada por Ionic. Utilizar un servicio como Appflow para construir aplicaciones React Native no solo proporciona acceso a potentes recursos informáticos, sino que también simplifica el proceso de despliegue al proporcionar un entorno centralizado para gestionar y distribuir tu aplicación en múltiples plataformas. Esto puede ahorrar tiempo y recursos, permitir la colaboración, así como mejorar la confiabilidad y escalabilidad general de una aplicación.
En este masterclass, desplegarás una aplicación React Native para su entrega en dispositivos de prueba Android e iOS utilizando Appflow. También aprenderás los pasos para publicar en Google Play y Apple App Stores. No se requiere experiencia previa en el despliegue de aplicaciones nativas, y obtendrás una comprensión más profunda del proceso de despliegue móvil y las mejores prácticas para utilizar una plataforma de DevOps móvil en la nube para enviar rápidamente a gran escala.