CI/CD - Demo

Qué es GitHub Actions

Descripción de la herramienta GitHub Actions

Resumen

GitHub Actions es una plataforma de integración y despliegue continua CI/CD. Esta permite automatizar el proceso de build, tests y deploy de una aplicación. Podemos crear workflows (flujos de trabajo) que hagan el build, corran los tests o hagan el deploy a producción sobre cada pull request en el repositorio asociado.

Los workflows también pueden ser creados para cuando otros eventos suceden en el repositorio. Un ejemplo sería crear un workflow para cuando alguien crea un issue nuevo asignarle las etiquetas correctas.

Componentes de GitHub Actions

Workflows

Es un proceso automatizado modificable que corre uno o mas jobs. Se define en un archivo YAML que se encuentra en la carpeta github/workflows y corre cuando lo dispara un evento, a mano o en cierto día y hora.

Los workflows contienen jobs que pueden correr secuencialmente o en paralelo ya que cada uno corre en su propia máquina virtual.

Eventos

Un evento es una actividad específica que dispara el workflow. Hay muchos tipos de eventos.

EventoDescripción del Disparador
branch_protection_ruleSe dispara cuando una regla de protección de ramas es creada, editada o eliminada.
check_runSe dispara cuando una ejecución de verificación es creada, completada o solicitada de nuevo.
check_suiteSe dispara cuando una suite de verificaciones es creada, completada o solicitada de nuevo.
createSe dispara cuando se crea una rama o etiqueta.
deleteSe dispara cuando se elimina una rama o etiqueta.
deploymentSe dispara cuando se crea un deployment (despliegue).
deployment_statusSe dispara cuando el estado de un deployment cambia (por ejemplo, éxito o fallo).
discussionSe dispara cuando se crea, edita, cierra o reabre una discusión.
discussion_commentSe dispara cuando se crea, edita o elimina un comentario en una discusión.
forkSe dispara cuando alguien hace un fork del repositorio.
gollumSe dispara cuando se realizan cambios en las páginas Wiki del repositorio.
issue_commentSe dispara cuando se crea, edita o elimina un comentario en un issue o en un pull request (para pull_request_comment se usa issue_comment).
issuesSe dispara cuando se abre, edita, cierra, reabre o elimina un issue.
labelSe dispara cuando se crea, edita o elimina una etiqueta (label) en el repositorio.
merge_groupSe dispara cuando se procesa un grupo de merges (fusión de múltiples pull requests).
milestoneSe dispara cuando se crea, edita, cierra o elimina un hito (milestone).
page_buildSe dispara cuando GitHub Pages genera una nueva página o la vuelve a construir.
projectSe dispara cuando se crea, actualiza o elimina un proyecto del repositorio.
project_cardSe dispara cuando se crea, actualiza o elimina una tarjeta de proyecto.
project_columnSe dispara cuando se crea, actualiza o elimina una columna de proyecto.
publicSe dispara cuando un repositorio se hace público.
pull_requestSe dispara cuando se abre, cierra, reabre, edita o fusiona un pull request, o cuando se sincronizan cambios a él.
pull_request_reviewSe dispara cuando un pull request es revisado o cuando se solicitan, edita o descartan revisiones.
pull_request_review_commentSe dispara cuando se crea, edita o elimina un comentario en un pull request durante una revisión.
pull_request_targetSimilar a pull_request, pero se usa para ejecutar acciones en el contexto del repositorio de destino en lugar del fork, para seguridad en los forks.
pushSe dispara cuando se hace un push a una rama del repositorio, incluyendo nuevos commits o tags.
registry_packageSe dispara cuando se publica o elimina un paquete en GitHub Packages.
releaseSe dispara cuando se publica, edita, borra o pre-lanza una release.
repository_dispatchSe dispara cuando una acción es activada manualmente por una API externa.
scheduleSe dispara a intervalos programados definidos en el workflow (cron).
statusSe dispara cuando cambia el estado de un commit (ej. éxito o fallo en verificaciones externas).
watchSe dispara cuando alguien comienza a observar (star) un repositorio.
workflow_callPermite llamar a otros workflows como si fueran funciones (reutilización de workflows).
workflow_dispatchPermite iniciar un workflow manualmente desde la interfaz de GitHub Actions.
workflow_runSe dispara cuando otro workflow ha terminado su ejecución.

Jobs

Un job o trabajo es una serie de pasos que corren en el mismo runner. Cada paso puede ser una shell script o una acción a ser ejecutada.

Para hacer que un diferentes jobs se ejecuten en secuencia uno de ellos debe depender del otro.

Actions

Una acción es una aplicación personalizada para la platforma que ejecuta una tarea. Permite reducir la cantidad de código repetido en un workflow.

Podemos escribir nuestras propias acciones o buscar y seleccionar aquellas que se encuentran GitHub Marketplace.

Runner

Un runner es un servidor que corre el workflow cuando este se dispara. Cada runner puede correr solo un job a la vez.

GitHub provee runners con Ubuntu, Windows y macOS, cada workflow corre en una nueva máquina virtual.

Si necesitamos un OS diferente o un requerimiento específico del hardware podemos hostear nuestros propios runners.

On this page