Capítulo 1. Lo básico
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Bienvenido a Aprendiendo Acciones de GitHub. Me alegro de que estés aquí y de todo lo que estás a punto de aprender. Éste es un momento increíble para trabajar en el campo del software. Desde contenedores a clusters y nubes, desde automatización a IA generativa, desde seguridad a SREs, las oportunidades de crear y contribuir a interesantes proyectos de software nunca han sido mayores. Y gracias a potentes plataformas como GitHub, esa creación y contribución nunca ha sido tan fácil de hacer.
GitHub ha liderado el desarrollo de un ecosistema para gestionar los componentes del software y permitir la colaboración, como atestigua el gran número de proyectos de código abierto gestionados en sus repositorios. Y ha proporcionado continuamente valor adicional a los usuarios mediante mejoras en sus interfaces, seguimiento de contribuciones y problemas, mecanismos para publicar y compartir información, y mucho más.
Durante la última década, o un poco más, la creación eficaz de software no ha consistido sólo en escribir el código. También se ha tratado (y se trata) de tecnologías de entrega mejores y más rápidas. Las capacidades de integración continua/entrega continua (también conocidas como CI/CD), DevOps y prácticas afines se dan ahora en gran medida por sentadas y son fáciles de conseguir. Pero históricamente, con GitHub, aún necesitabas realizar algún tipo de integración con una herramienta independiente para proporcionar un canal de entrega u otro tipo de automatización significativa. Aunque hace tiempo que hay formas de añadir procesos ampliados de CI/CD, a GitHub le ha faltado una solución verdaderamente integrada para permitir CI/CD y un ciclo de vida de desarrollo de software (SDLC) de extremo a extremo dentro de su ecosistema. La respuesta ha llegado en forma de Acciones de GitHub.
Entonces, ¿cómo lo consigue Acciones GitHub? ¿Cómo aporta un valor real por sí misma y frente a otras soluciones? Y, probablemente lo más importante para ti, ¿cómo puedes aprenderlo fácilmente y empezar a utilizarlo para tus propias necesidades?
Cuando estás aprendiendo una nueva tecnología, es importante (o al menos útil) tener un contexto básico antes de sumergirte en los detalles técnicos. Así que en este capítulo, trataré brevemente alguna información básica en torno a las siguientes cuestiones:
- ¿Qué son las Acciones de GitHub?
- ¿Cuáles son los casos de uso de las Acciones de GitHub?
- ¿Cuáles son los costes?
- ¿Cuándo tiene sentido pasarse a las Acciones de GitHub?
Al final de este capítulo, tendrás un contexto sólido para enmarcar el resto de tu aprendizaje sobre las Acciones de GitHub. Ahora, empecemos.
Prerrequisitos
Este libro asume que ya tienes conocimientos básicos de Git y GitHub. Si no es el caso, hay una serie de recursos gratuitos que te ayudarán a entender ambos.
Si ya tienes un conocimiento superficial de las Acciones de GitHub, puedes pasar al Capítulo 2 para empezar a profundizar en detalles más técnicos. Pero si eres nuevo en la tecnología o necesitas poder tomar una decisión informada sobre si tiene sentido para tu proyecto o equipo, te recomiendo que leas el material aquí.
¿Qué son las Acciones de GitHub?
Puedes definir las Acciones de GitHub de esta manera: GitHub Actions es un proceso SDLC de extremo a extremo centrado en GitHub. Proporciona una plataforma y un marco de automatización que antes faltaba en GitHub y que ha tenido que añadirse con otras soluciones como Jenkins o Travis CI.
Hay mucho contenido en esa afirmación. Pero centrémonos en dos partes que constituyen el núcleo de la funcionalidad: la plataforma y el marco de automatización.
Plataforma de automatización
Para el usuario final, las Acciones de GitHub son una forma de crear y ejecutar flujos de trabajo automatizados vinculados a eventos de GitHub. Lo más habitual es pensar en esto en el contexto de CI/CD. Por ejemplo, realizas un cambio a través de una pull request, y GitHub pone en marcha un proceso de entrega continua. Antes de las Acciones de GitHub, habrías necesitado alguna herramienta o proceso externo para responder a una notificación de GitHub de que se había producido la solicitud de extracción y, a continuación, procesarla. Y la automatización posterior a la solicitud de extracción y la notificación inicial se habría implementado a través de esa herramienta externa.
Con Acciones, ahora tienes los medios para crear esta automatización dentro de un contexto gestionado por, y dentro de, GitHub. Puedes definir el qué, el cuándo y el cómo de las respuestas automatizadas a eventos como pushes o pull requests. Por ejemplo, cuando se produce un push en una rama de tu repositorio, coge automáticamente el último código e intenta construirlo. Si se produce un pull request para una rama diferente, construye y prueba automáticamente el código. Si se produce un fallo, actualiza una incidencia de GitHub. Si no hay ningún fallo, procede automáticamente a publicar una nueva versión.
Convenientemente, puedes crear y almacenar tus definiciones de automatización y flujos de trabajo junto con tu código en el repositorio de GitHub. Y también puedes editarlos allí. En resumen, las acciones facilitan la automatización dentro de GitHub porque forman parte de GitHub. Se basan en un marco proporcionado por GitHub que añade estructura y flujo. Hablaré de ello a continuación.
Marco
Hacer que una plataforma de automatización pase de ser una colección desordenada de mecanismos a un proceso organizado y consumible requiere imponer estructura y flujo. Sin ellos, simplemente tienes una colección de herramientas. Con ellas, puedes montar una automatización verdaderamente útil para realizar cualquier conjunto de tareas que sea necesario hacer.
Para las Acciones, este marco se compone de un conjunto básico de componentes relacionados en GitHub. Estos componentes pueden juntarse para ejecutar automatizaciones sencillas o complejas de forma comprensible y predecible. Y esta automatización se almacena en el repositorio como código.
Hablaré más sobre estos componentes individuales en el Capítulo 2. Pero para tener una visión general rápida, funciona así: En respuesta a la aparición de un evento coincidente, se activa una definición de flujo de trabajo almacenada en el repositorio, que a su vez disparatrabajos en sistemas designados llamados corredores. Los trabajos se componen de secuencias de pasos que invocan una acción predefinida o ejecutan un comando en el shell del SO del corredor.
Aunque antes existían capacidades similares en GitHub a través de mecanismos como las llamadas a la API, no eran tan fáciles de ensamblar a un nivel superior. A menudo, los desarrolladores tenían que invertir un tiempo y un esfuerzo considerables para aprender a encadenar las llamadas a la API adecuadas y/o las integraciones con otras herramientas externas (como Jenkins, Travis CI, etc.). O tenían que utilizar secuencias de comandos y programación personalizadas para poder llegar al objetivo final deseado. Esto era especialmente cierto si querían poder gestionar procesos a través de GitHub. (Otra solución era replicar el repositorio fuera de GitHub para que lo utilizaran los productos).
Las acciones implementan un marco nativo en GitHub que proporciona una experiencia más fluida y flexible. Esta flexibilidad se ve reforzada por el Mercado de Acciones, un registro público donde se pueden publicar y compartir acciones. Si quieres crear flujos de trabajo para realizar actividades comunes (como revisar código o construir con una herramienta de construcción determinada), puedes elegir entre las acciones existentes en el mercado. Si quieres o necesitas una lógica más amplia, para la que aún no existe una acción, puedes codificar tu propia acción personalizada utilizando una estructura bien definida. Luego puedes publicarla y compartirla con otros a través del Mercado, si lo deseas. Este enfoque proporciona una medida de flexibilidad, reutilización y extensibilidad que antes no estaba disponible con GitHub. Un beneficio secundario es que puede permitir una rápida creación de prototipos e implementación mediante la combinación de acciones para diversos casos de uso. Hablaré de estos temas en la siguiente sección.
Acciones frente a acciones
Puede que notes que a veces el término acciones va en mayúsculas y otras no. Esto se debe a que hay que hablar tanto del marco/plataforma más amplio como de las piezas de funcionalidad más pequeñas y predefinidas. A ambas se las denomina con el mismo término. Siguiendo una recomendación de GitHub, me referiré a la plataforma/marco más amplio como GitHub Actions o Acciones ("A" mayúscula) y a las unidades individuales de funcionalidad como acciones ("a" minúscula).
¿Cuáles son los casos de uso de las Acciones de GitHub?
Cuando el CI/CD apareció por primera vez en escena, las herramientas dedicadas, como Jenkins, eran el principal medio para crear canalizaciones. Estas herramientas eran flexibles; podría decirse que demasiado flexibles. Tenías que esforzarte mucho para unir las partes individuales en una canalización. Poco a poco, con la adopción generalizada de CI/CD, el concepto de canalización se ha ido imponiendo como estructura predefinida. Y también lo ha hecho la capacidad de definir canalizaciones que van más allá de lo básico de crear pruebas sencillas. Los procesos CI/CD actuales pueden ser muy complejos e incluir pruebas avanzadas, múltiples niveles de integración e implementaciones/lanzamientos automatizados. GitHub Actions te permite crear flujos de trabajo tan complejos como sea necesario para gestionar este tipo de operaciones sin salir nunca del ecosistema de GitHub. Además, te permite crear tantos flujos de trabajo diferentes como necesites para casos de uso de automatización adicionales.
Aunque GitHub Actions no utiliza el término pipeline en sus procesos, el enfoque general del flujo de trabajo que utiliza es un concepto similar. Los flujos de trabajo encadenan unidades de trabajo más pequeñas llamadas tareas. Los trabajos son lo que a menudo puedes ver en otras aplicaciones como etapas, es decir, partes de un proceso mayor que realizan una función distinta y separada. De hecho, si vienes de trabajar con otra herramienta de automatización, puedes pensar que el flujo general de Acciones de GitHub es una canalización, lo que significa que algún cambio o evento provoca una serie de acciones automatizadas que se producen automáticamente en respuesta.
Los principales casos de uso serían en respuesta a algo que ocurra en GitHub. Pero también hay formas de que los flujos de trabajo sean iniciados por eventos fuera de ese entorno, iniciados en un horario determinado, o incluso iniciados manualmente a través de la interfaz Acciones en GitHub. Tendré más que decir sobre estas diferentes formas de iniciar un flujo de trabajo en el Capítulo 2 y también en el Capítulo 8.
Aunque CI o CI/CD es el propósito principal que me viene a la mente, los flujos de trabajo y las acciones pueden utilizarse para automatizar casi cualquier proceso. Hay dos lugares principales en los que puedes buscar ideas sobre para qué se pueden utilizar las acciones: los flujos de trabajo iniciales y el Mercado de Acciones.
Flujos de trabajo frente a acciones
Para que quede claro, los flujos de trabajo son los scripts o pipelines que controlan el flujo y la secuencia de actividad en las Acciones de GitHub. Las acciones individuales son las funciones a las que se puede llamar para realizar tareas específicas desde los flujos de trabajo (como revisar el código).
Flujos de trabajo iniciales
Para ayudar a los usuarios a arrancar utilizando Acciones, cuando empieces a crear un nuevo flujo de trabajo, GitHub te presentará ejemplos de flujos de trabajo iniciales. La Figura 1-1 muestra un ejemplo. No tienes por qué utilizar uno de ellos, pero si se adaptan a tu propósito o se acercan a él, puedes hacer clic en el botón Configurar y estar trabajando en un nuevo flujo de trabajo muy rápidamente.
En el momento de escribir esto, las principales categorías que tienen flujos de trabajo de inicio son:
- Implementación
- Un conjunto de flujos de trabajo de ejemplo para crear objetos desplegables (como contenedores) y luego desplegarlos en varias plataformas en la nube.
- Seguridad
- Principalmente un conjunto de flujos de trabajo de análisis de código utilizando varias plataformas de seguridad y sus herramientas
- Integración continua
- Un gran número de flujos de trabajo que cubren las áreas de construcción, pruebas y/o publicación para un gran número de lenguajes de programación y herramientas diferentes
- Automatización
- Algunos ejemplos sencillos para la automatización básica, incluido un tipo hola mundo, uno que demuestra cómo activar un flujo de trabajo manualmente, y un par que tratan otras construcciones de GitHub como pull requests y issues
- Páginas
- Flujos de trabajo para empaquetar/implementar sitios utilizando herramientas comunes como Gatsby, Astro, Jekyll, etc.
Puedes consultar la lista completa y el código de los flujos de trabajo iniciales en https://github.com/actions/starter-workflows.
Mercado de acciones
A diferencia de los flujos de trabajo que llaman a acciones, puedes encontrar un útil conjunto de acciones existentes a las que llamar en el GitHub Marketplace, en la sección Acciones. Eso está disponible en GitHub Marketplace. La Figura 1-2 muestra un ejemplo de esta área en GitHub.
Se trata de unidades totalmente funcionales que puedes seleccionar y utilizar en tus propios flujos de trabajo. Piensa que son como los plug-ins u otros módulos adicionales que añaden funcionalidad en otras aplicaciones. Como verás en un capítulo posterior, puedes acceder al Mercado de Acciones desde el entorno integrado de GitHub para crear un flujo de trabajo. Puedes buscar y encontrar fácilmente acciones aquí para ahorrarte tiempo y esfuerzo en lugar de tener que codificar las tuyas propias. (La creación de tus propias acciones se trata en el Capítulo 11).
Como ejemplos de los tipos de funcionalidad que puedes encontrar, el Marketplace cuenta con categorías para interactuar con IDEs, trabajar en tareas de localización, hacer desarrollo móvil e incluso trabajar con tareas de gestión de proyectos a través de aplicaciones como JIRA. Las acciones del Mercado pueden proceder de GitHub o de otras fuentes, como particulares, organizaciones o empresas que quieran integrarse con Acciones.
Cuando estás creando un nuevo flujo de trabajo, el Mercado de Acciones es un lugar estupendo para encontrar acciones existentes que ya pueden hacer lo que necesitas, ahorrándote así el esfuerzo de codificar la funcionalidad de otro modo. Y además son gratuitas. De hecho, puedes empezar a utilizar las Acciones de GitHub de forma gratuita. Pero hay costes asociados a ciertos niveles de uso. Daré más detalles al respecto en la siguiente sección.
¿Qué costes conlleva?
Una de las primeras preguntas que vienen a la mente cuando cualquier persona, equipo u organización de empieza a pensar en migrar a una nueva tecnología es el coste. Con las Acciones de GitHub, es posible que simplemente puedas optar a la versión gratuita. Pero si no es así, es importante que tengas al menos un conocimiento básico de cómo funciona el modelo de pago para que no te lleves sorpresas.
El modelo libre
Las Acciones de GitHub son gratuitas si una o ambas de las dos condiciones siguientes de son verdaderas:
- Los repositorios que utilizas con las acciones son públicos.
- Los sistemas en los que ejecutas las acciones (los corredores) son los tuyos propios (en lugar de utilizar los proporcionados por GitHub).
Eso significa que si te parece bien que tus repositorios de GitHub sean visibles para todo el mundo, o si puedes alojar los sistemas que ejecutarán el código contenido en los pasos del flujo de trabajo, puedes utilizar la tecnología de forma gratuita.
GitHub no te cobrará por utilizar ejecutores autoalojados, pero tendrás que instalar y ejecutar la aplicación del ejecutor en tus propios servidores. Esto es necesario para permitir que las Acciones de GitHub se comuniquen con tus servidores para ejecutar tus flujos de trabajo. (Los ejecutores, incluido el proceso para crear el tuyo propio, se tratan en el Capítulo 5.)
Si el modelo gratuito no se adapta a tu forma de trabajar, pasarás al modelo de pago.
El modelo de pago
Los repositorios privados son aquellos con acceso restringido. Los clientes empresariales/corporativos de GitHub pueden utilizar con frecuencia este modelo, ya sea restringiendo el acceso en el sitio público de GitHub o utilizando una instancia de GitHub interna o en la nube restringida para su uso.
Hay dos tipos de elementos por los que pagas con las Acciones de GitHub:
- Almacenamiento: Las acciones te permiten almacenar artefactos y paquetes en los recursos de GitHub. A partir de cierto punto, la cantidad de almacenamiento que estés utilizando para artefactos y paquetes empezará a costarte.
- Actas: Las acciones requieren tiempo de procesamiento en los sistemas virtuales.
Artefactos y paquetes
Los artefactos se refieren a objetos que subes o generas a través de tus flujos de trabajo en GitHub. Los Paquetes de GitHub son una forma cómoda de hacer accesibles cosas como contenedores y dependencias.
Para un repositorio privado, empiezas con una cierta cantidad de almacenamiento (para artefactos subidos durante el procesamiento de flujos de trabajo) y minutos en los corredores que son gratuitos. Una vez agotados, es posible que puedas pagar y utilizar más, o que se te corte el acceso, dependiendo de cómo pagues/facture GitHub y de los límites de gasto que hayas establecido por defecto. (Los artefactos se tratan con más detalle en el Capítulo 7.)
Si pagas/facturas mensualmente una cantidad regular, cuando hayas agotado el almacenamiento y los minutos gratuitos, por defecto, se acabó. No podrás crear nuevos artefactos ni realizar procesamientos adicionales.
Si, en cambio, sólo recibes una factura de GitHub por la cantidad de recursos que hayas utilizado durante un periodo de facturación y pagas esa cantidad variable cada vez, por defecto puedes seguir utilizando (y pagando) más minutos y/o almacenamiento sin límites.
Límites de gasto por defecto
En la discusión anterior se hace referencia alos límites de gasto por defecto. Dentro de GitHub, si tienes acceso a y autoridad para hacerlo, esos límites de gasto por defecto pueden cambiarse a través de la configuración del tipo de cuenta que tengas (usuario, organización o empresa). Cambiarlos para una organización o empresa requiere que seas propietario o gestor de facturación.
Para el uso de máquinas en un sistema proporcionado por GitHub, el coste de computación se mide en los minutos que utilizas en los corredores. Esto se acumula a medida que utilizas más computación, pero se restablece a 0 cada mes. La cantidad de almacenamiento que utilizas se acumula a medida que almacenas más artefactos, pero no se restablece cada mes. Así que sigues pagando el coste de almacenamiento mientras mantengas los artefactos en GitHub.
La Tabla 1-1 de la documentación de GitHub muestra el desglose de los minutos gratuitos y el almacenamiento gratuito que obtienes al mes, en función de tu tipo de cuenta. Esta información es actual en el momento de escribir este artículo y está sujeta a cambios. Consulta siempre la documentación oficial para obtener la información más reciente sobre precios.
Plan | Almacenamiento | Minutos (al mes) |
---|---|---|
GitHub Gratis | 500 MB | 2,000 |
GitHub Pro | 1 GB | 3,000 |
GitHub gratuito para organizaciones | 500 MB | 2,000 |
Equipo GitHub | 2 GB | 3,000 |
Nube empresarial de GitHub | 50 GB | 50,000 |
El uso de almacenamiento se calcula para cada mes basándose en el uso horario durante el mes.
Redondeo de uso
Para los cálculos de facturación, el uso de almacenamiento se redondea al megabyte más cercano, y el uso de minutos se redondea al minuto más cercano.
Otro factor clave que debes tener en cuenta es que las Acciones de GitHub cobran más por los trabajos ejecutados en un sistema proporcionado por GitHub si requiere un sistema Windows o macOS para ejecutarse. Así que, en un escenario de pago, tu coste por utilizar uno de esos sistemas frente a un sistema Linux se incrementa y pagas una prima, como se muestra en la Tabla 1-2.
Sistema operativo | Multiplicador de minutos |
---|---|
Linux | 1 |
macOS | 10 |
Windows | 2 |
La Tabla 1-3 muestra un ejemplo de cómo se compararían los costes por minuto de un proceso ejecutado en diferentes tipos de sistemas (tomado de la documentación de GitHub).
Sistema operativo | Tarifa por minuto (USD) |
---|---|
Linux | $0.008 |
macOS | $0.08 |
Windows | $0.016 |
Información sobre costes actuales
La información de las tablas anteriores es actual en el momento de redactar este documento y está sujeta a cambios. Para obtener la última información actualizada sobre los costes en torno a las Acciones de GitHub, consulta la documentación de GitHub.
El precio que pagas por el uso es, sin duda, un factor a tener en cuenta si estás pensando en pasarte a las Acciones de GitHub. Pero no debería ser el único. En la sección final de este capítulo, hablaré de cómo decidir cuándo tiene sentido pasarse a GitHub Actions.
¿Cuándo tiene sentido pasarse a las acciones de GitHub?
Aparte del precio, ¿qué otros factores merece la pena tener en cuenta para pasarse a GitHub Actions y utilizarlo? Aquí tienes algunos que pueden ser útiles.
Inversión en GitHub
Por definición, las Acciones de GitHub están estrechamente vinculadas al ecosistema de GitHub. Sólo pueden funcionar cuando se ejecutan a través del motor de GitHub. Así que cualquiera que necesite trabajar con Acciones tendrá que estar familiarizado y sentirse cómodo trabajando con GitHub como interfaz y entorno.
Y, si utilizas tus propios ejecutores para ejecutar flujos de trabajo y acciones, tienes que sentirte cómodo teniendo la aplicación del ejecutor instalada en tus sistemas.
Uso de Acciones Públicas
Como ya hemos comentado, GitHub Actions mantiene un Marketplace para acciones contribuidas. Como ocurre con cualquier lugar público en el que puedes descargar componentes para tirar de ellos, debes asegurarte de que eres consciente de lo que hacen esas acciones y de que cumplen tus requisitos de seguridad. En resumen, la responsabilidad de la adecuación, el propósito y la seguridad al utilizar una acción pública es tuya.
Consejos útiles de seguridad
El capítulo 9 de este libro trata de la seguridad. Pero GitHub también tiene consejos sobre el uso seguro de las acciones. Consulta la documentación de GitHub para más detalles.
Crear tus propias acciones
Tienes flexibilidad para crear y utilizar tus propias acciones. Hay un par de tipos diferentes, como comento en el Capítulo 11. Si ya has invertido en crear funcionalidad personalizada de otra forma, tendrás que aprender la estructura y sintaxis de las acciones. A continuación, considera cómo podrías migrar a enfoques más basados en acciones o hacer que un flujo de trabajo invoque tu funcionalidad existente, si es factible hacerlo.( Enel Capítulo 14 se tratan los enfoques para la migración).
Gestión de artefactos
La gestión de artefactos de GitHub Actions es práctica para almacenar y compartir artefactos de forma rápida y sencilla. Pero no es un sistema de gestión de paquetes como GitHub Packages o Artifactory. Hay un periodo de retención incorporado, tras el cual se eliminan los artefactos. Si esto no se ajusta a tus necesidades, tendrás que establecer otra forma de gestionar artefactos y conectar tus flujos de trabajo a ella.
Gestión de acciones
Las Acciones de GitHub proporcionan un marco para crear y utilizar acciones para automatizar casi cualquier cosa. Si estás en un entorno corporativo/empresarial, puede que no quieras que todo el mundo cree y extraiga acciones para repositorios compartidos. Permitirlo sin los controles adecuados podría abrir agujeros de seguridad. Los controles pueden consistir en asegurarse de que el conjunto de acciones utilizadas está aprobado y es manejable. También debería haber un proceso de actualización regular para garantizar que las acciones públicas utilizadas se mantienen al día y que su uso se revisa según sea necesario.
Si los empleados están creando acciones y compartiéndolas para un uso más amplio, debería existir algún tipo de revisión de código y normas. En resumen, puesto que las acciones se escriben con código basado en repositorios de GitHub, también deberían aplicarse los mismos tipos de buenas prácticas que utilizarías con otros repositorios de GitHub.
Aplicación de políticas para acciones
Para obtener información en sobre cómo establecer políticas dentro de una empresa u organización, consulta la documentación del administrador de empresa.
En general, la cuestión de hasta qué punto invertir en Acciones de GitHub y utilizarlas se reduce a hasta qué punto tú o tu organización o empresa queréis obtener los beneficios de la nueva funcionalidad, podéis migrar cualquier funcionalidad existente que necesitéis y os sentís cómodos teniendo vuestro código y la automatización de gestionados en este entorno.
Conclusión
En este capítulo, he presentado GitHub Actions y he compartido información básica sobre para qué sirve la plataforma, sus casos de uso y costes, y los factores a tener en cuenta al pasarse a ella. GitHub Actions proporciona un marco completo para automatizar el contenido que gestionas en GitHub. Si has invertido en el ecosistema de GitHub o estás considerando pasarte a él, los flujos de trabajo y las acciones proporcionan una buena opción para implementar la automatización, como CI/CD, sin tener que depender de otra aplicación. Como con cualquier framework, la automatización puede ser simple o compleja. Y aunque el motor subyacente lo proporciona GitHub, hay una comunidad cada vez mayor de usuarios que proporcionan acciones y flujos de trabajo ya hechos a los que recurrir y que reducen la inversión en configuración/personalización necesaria.
Ahora que ya se han explicado los fundamentos de las Acciones de GitHub, en el próximo capítulo me sumergiré más en ellas para ayudarte a entender cómo funcionan.
Get Aprender las acciones de GitHub now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.