Hoja de referencia de GitHub Actions: estructura estándar y una lista de las acciones más útiles.
Un poco sobre las acciones comunes de GitHub y su estructura.
GitHub Actions es una plataforma de automatización y CI/CD dentro de GitHub, utilizada para compilar, probar y desplegar tu código basándose en eventos como pushes, solicitudes de extracción (pull requests) o según un horario.
Además del GitHub estándar, puedes usar GitHub Actions en un servidor Gitea autoadministrado.

Las acciones abarcan herramientas oficiales, de la comunidad y de terceros, apoyando la automatización desde la compilación y pruebas hasta el despliegue, gestión de lanzamientos, QA y notificaciones.
Este resumen cubre la estructura de GitHub Actions, una descripción breve y las acciones más comunes utilizadas en flujos de trabajo de código abierto y comerciales. Es parte de Herramientas para Desarrolladores: La Guía Completa para Flujos de Trabajo de Desarrollo Moderno.
Estructura Básica de Configuración
Los flujos de trabajo (Workflows) de GitHub Actions se definen en archivos YAML ubicados en el directorio .github/workflows dentro del repositorio.
name: Workflow Name
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run tests
run: npm test
- El bloque on especifica los eventos detonantes.
- Cada job se ejecuta en su propio ejecutor (runner).
- steps pueden ejecutar comandos de shell o llamar a acciones reutilizables.
Componentes Principales del Flujo de Trabajo
| Componente | Descripción |
|---|---|
| Workflow | Proceso automatizado (YAML) activado por un evento |
| Event | Actividad que activa el flujo de trabajo (push, pull_request, etc.) |
| Job | Serie de pasos ejecutados en un runner, pueden correr secuencialmente o en paralelo |
| Step | Cada comando o acción en un job |
| Runner | VM o contenedor donde se ejecutan los jobs |
| Action | Extensión o complemento reutilizable que encapsula una tarea |
Eventos Detonantes
- push
- pull_request
- schedule (usando sintaxis cron)
- workflow_dispatch (activación manual, permite parámetros de entrada)
- release, issue, etc.
Ejemplo:
on:
push:
branches: [ main ]
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
Acciones Integradas Útiles
| Acción | Propósito | Parámetros Comunes |
|---|---|---|
| actions/checkout | Obtener el código del repositorio | ref, token, submodules, persist-credentials |
| actions/setup-node | Configurar entorno Node.js | node-version, cache, architecture, check-latest |
| actions/setup-python | Configurar Python | python-version, architecture |
| actions/cache | Cachear dependencias | path, key, restore-keys |
| docker/build-push-action | Compilar y publicar imágenes Docker | context, file, platforms, tags, push, build-args |
| actions/upload-artifact | Subir artefactos de compilación | name, path, if-no-files-found |
| actions/download-artifact | Descargar artefactos | name, path |
| github/email-actions | Enviar notificaciones por correo | to, subject, content, attachments |
| peter-evans/create-pull-request | Crear PRs mediante workflow | branch, title, body, labels, base |
| actions/github-script | Ejecutar JavaScript arbitrario en tu flujo | script, github-token |
Parámetros de Acción
Parámetros Generales para Cualquier Llamada a Acción:
- name: Some Action or Step
uses: owner/repo@ref
with:
param1: value
param2: value
env:
ENV_VAR: value
if: ${{ condition }}
run: command_to_run
shell: bash|pwsh|python|sh
continue-on-error: true|false
- with: argumentos pasados a la acción (consulta la documentación de la acción para todas las opciones)
- env: variables de entorno para el paso
- if: ejecución condicional
- run: comandos de shell (si no se usa una acción)
- shell: shell utilizada para ejecutar el paso
- continue-on-error: continuar incluso si el paso falla
Definición de Entradas Personalizadas para Acciones
En tu metadato de acción (action.yml):
inputs:
example-input:
description: 'An example input'
required: false
default: 'default-value'
Cuando se usa en un flujo de trabajo:
- uses: my/action@v1
with:
example-input: 'custom-value'
Se accede como variable de entorno INPUT_EXAMPLE_INPUT cuando se ejecuta la acción.
Ejemplo: Flujo de Trabajo con Parámetros Manuales
name: Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Deployment Environment'
required: true
default: 'production'
type: string
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy to environment
run: echo "Deploying to ${{ github.event.inputs.environment }}"
Marketplace de Acciones
- Miles de acciones reutilizables están disponibles en el GitHub Marketplace.
- Las categorías incluyen: despliegues en la nube, herramientas de notificación, marcos de prueba, análisis de código y más.
- Explora: actions/checkout, actions/setup-node, docker/build-push-action, actions/cache, actions/upload-artifact, y muchos otros.
Consejos Rápidos
- Coloca los archivos de flujo de trabajo en
.github/workflows. - Usa workflow_dispatch con inputs para ejecuciones manuales y parametrizadas.
- Usa la acción cache para acelerar la instalación de dependencias.
- Usa la matrix de jobs para probar múltiples versiones de SO/entornos de ejecución.
- Usa secretos para datos sensibles, referenciados como
${{ secrets.SECRET_NAME }}.
Esta hoja de referencia cubre lo esencial del uso, configuración y extensión de GitHub Actions para automatización, CI/CD y más. Para más detalles y actualizaciones, consulta siempre la documentación oficial de GitHub y los repositorios de acciones.
GitHub Actions Comunes
Aquí tienes una lista práctica de GitHub Actions frecuentemente utilizados que ayudan a automatizar CI/CD, pruebas, compilación, despliegue y tareas de flujo de trabajo:
Acciones Oficiales Principales
| Acción | Propósito | Parámetros Clave de Ejemplo |
|---|---|---|
| actions/checkout | Obtiene el código del repositorio | ref, submodules |
| actions/setup-node | Configura entorno Node.js | node-version, cache |
| actions/setup-python | Configura entorno Python | python-version |
| actions/setup-java | Configura JDK Java | distribution, java-version |
| actions/cache | Cachear dependencias y salidas de compilación | path, key, restore-keys |
| actions/upload-artifact | Sube artefactos de compilación | name, path |
| actions/download-artifact | Descarga artefactos del flujo de trabajo | name, path |
| actions/github-script | Ejecuta JavaScript usando contexto y API de GitHub | script |
| actions/create-release | Crea un lanzamiento de GitHub | tag_name, release_name |
| actions/upload-release-asset | Sube activos a un lanzamiento | upload_url, asset_path |
| actions/labeler | Aplica etiquetas automáticamente a issues/PRs | repo-token, configuration-path |
Acciones Populares de la Comunidad y de Terceros
| Acción | Propósito |
|---|---|
| docker/build-push-action | Compilar y publicar imágenes Docker |
| actions/setup-go | Configurar entorno Go |
| super-linter/super-linter | Linting de código automatizado universal |
| trufflesecurity/trufflehog | Escanear secretos y credenciales |
| peaceiris/actions-gh-pages | Desplegar sitios estáticos a GitHub Pages |
| JamesIves/github-pages-deploy-action | Desplegar proyectos a GitHub Pages |
| peter-evans/create-pull-request | Crear solicitudes de extracción automáticamente |
| softprops/action-gh-release | Crear y subir lanzamientos de GitHub |
| ad-m/github-push-action | Publicar cambios de vuelta al repositorio de GitHub |
| actions/setup-dotnet | Configurar SDK .NET |
| azure/login | Autenticar en Azure |
| google-github-actions/auth | Autenticar en Google Cloud |
Acciones de Pruebas, QA e Informes
| Acción | Propósito |
|---|---|
| actions/setup-ruby | Configurar entorno Ruby |
| codecov/codecov-action | Subir informes de cobertura de código a Codecov |
| coverallsapp/github-action | Subir resultados de cobertura a Coveralls |
| dorny/test-reporter | Adjuntar resultados de pruebas a GitHub Checks |
| stefanzweifel/git-auto-commit-action | Auto-commit y push de cambios de archivos |
Acciones de Despliegue y Notificación
| Acción | Propósito |
|---|---|
| appleboy/scp-action | Subir archivos usando SCP |
| SamKirkland/FTP-Deploy-Action | Desplegar archivos a través de FTP/FTPS |
| cypress-io/github-action | Ejecutar pruebas end-to-end de Cypress |
| slackapi/slack-github-action | Enviar mensajes a Slack |
| dawidd6/action-send-mail | Enviar correos durante la ejecución del flujo |
Utilidades y Gestión de Flujos de Trabajo
| Acción | Propósito |
|---|---|
| peter-evans/repository-dispatch | Activa flujos de trabajo de repositorios externos |
| fregante/setup-git-user | Configurar credenciales de usuario Git para commits |
| andymckay/labeler | Etiqueta issues y PRs basados en rutas |
| actions/configure-pages | Configurar publicación a GitHub Pages |
| EndBug/add-and-commit | Añadir y confirmar archivos dentro de un flujo |
| dangoslen/changelog-enforcer | Verifica si se actualizó un changelog para PRs |
Cómo Encontrar Más
Hay muchas acciones de GitHub que habilitan la automatización de flujos de trabajo, como pruebas automatizadas, despliegue a producción, notificaciones e integraciones con otros servicios. El GitHub Marketplace lista miles de acciones en categorías como pruebas, seguridad, despliegue, notificaciones, calidad de código e integraciones. Listas curadas como “Awesome Actions” también son excelentes para inspiración y descubrimiento.
Enlaces Útiles
- https://docs.github.com/actions
- https://github.com/marketplace
- https://docs.github.com/en/actions/get-started/quickstart
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
- Hoja de referencia de GIT
- Gitea - installing and testing
- Backup and restore Gitea server
- Using Gitea Actions deploy Hugo website to AWS S3
- Gitflow: Steps, Alternatives, Pros, and Cons
- DevOps with GitOps - Argo CD, Flux, Jenkins X, Weave GitOps and others