Skip to main content

Entender las GitHub Actions

Aprende lo básico de las GitHub Actions, incluyendo los conceptos nucleares y la terminología esencial.

Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.

Resumen

GitHub Actions es una plataforma de integración y despliegue continuos (IC/DC) que te permite automatizar tu mapa de compilación, pruebas y despliegue. Puedes crear flujos de trabajo y crear y probar cada solicitud de cambios en tu repositorio o desplegar solicitudes de cambios fusionadas a producción.

GitHub Actions va más allá de solo DevOps y te permite ejecutar flujos de trabajo cuando otros eventos suceden en tu repositorio. Por ejemplo, puedes ejecutar un flujo de trabajo para que agregue automáticamente las etiquetas adecuadas cada que alguien cree una propuesta nueva en tu repositorio.

Debes hospedar tus propias máquinas virtuales Linux, Windows o macOS para ejecutar flujos de trabajo para tu instancia de GitHub Enterprise Server. Los ejecutores auto-hospedados pueden ser físicos, virtuales, estar en un contenedor, en las instalaciones o en la nube.

Para obtener más información sobre cómo introducir las GitHub Actions en tu empresa, consulta la sección "Introducir las GitHub Actions a tu empresa".

Los componentes de las GitHub Actions

Puedes configurar un flujo de trabajo de GitHub Actions para que se active cuando ocurre un evento en tu repositorio, tal como la apertura de una solicitud de cambios o la creación de una propuesta. Tu flujo de trabajo contiene uno o más jobs, los cuales pueden ejecutarse en orden secuencial o en paralelo. Cada job se ejecutará dentro del ejecutor de su propia máquina virtual o dentro de un contenedor y tendrá uno o más pasos que ya sea puedan ejecutar un script que definas o que ejecuten una acción, la cual es una extensión reutilizable que puede simplificar tu flujo de trabajo.

Resumen del flujo de trabajo

Flujos de trabajo

Un flujo de trabajo es un proceso automatizado configurable que ejecutará uno o más jobs. Los flujos de trabajo se definen mediante un archivo de YAML que se verifica en tu repositorio y se ejecutará cuando lo active un evento dentro de este o puede activarse manualmente o en una programación definida.

Workflows are defined in the .github/workflows directory in a repository, and a repository can have multiple workflows, each of which can perform a different set of tasks. Por ejemplo, puedes tener un flujo de trabajo para crear y probar las solicitudes de cambio, otro para desplegar tu aplicación cada que se cree un lanzamiento y todavía otro más que agregue una etiqueta cada que alguien abra una propuesta nueva.

Puedes referenciar un flujo de trabajo dentro de otro flujo de trabajo, consulta la sección "Reutilizar flujos de trabajo".

Para obtener más información sobre los flujos de trabajo, consulta la sección "Utilizar flujos de trabajo".

Eventos

Un evento es una actividad específica en un repositorio, la cual activa una ejecución de flujo de trabajo. Por ejemplo, la actividad puede originarse desde GitHub cuando alguien crea una solicitud de cambios, abre una propuesta o sube una confirmación a un repositorio. También puedes activar una ejecución de flujo de trabajo de acuerdo con una programación si la publicas en una API de REST o si lo haces manualmente.

Para encontrar una lista de eventos completa que puede utilizarse para activar flujos de trabajo, consulta los Eventos que activan flujos de trabajo.

Jobs

Un job es un conjunto de pasos en un flujo de trabajo, los cuales se ejecutan en el mismo ejecutor. Cada paso es ya sea un script de shell o una acción que se ejecutarán. Los pasos se ejecutarán en orden y serán dependientes uno del otro. Ya que cada paso se ejecuta en el mismo ejecutor, puedes compartir datos de un paso a otro. Por ejemplo, puedes tener un paso que compile tu aplicación, seguido de otro que pruebe la aplicación que se compiló.

Puedes configurar las dependencias de un job con otros jobs; predeterminadamente, los jobs no tienen dependencias y se ejecutan en paralelo entre ellos. Cuando un job lleva una dependencia a otro job, este esperará a que el job dependiente se complete antes de que pueda ejecutarse. Por ejemplo, puedes tener jobs de compilación múltiple para arquitecturas diferentes que no tengan dependencias y un job de empaquetado que sea dependiente de estos jobs. Los jobs de compilación se ejecutarán en paralelo y, cuando se hayan completado con éxito, se ejecutará el job de empaquetado.

Para obtener más información sobre los jobs, consulta la sección "Utilizar jobs".

Actions

Una acción es una aplicación personalizada para la plataforma de GitHub Actions que realiza una tarea compleja pero que se repite frecuentemente. Utiliza una acción para ayudarte a reducir la cantidad de código repetitivo que escribes en tus archivos de flujo de trabajo. Una acción puede extraer tu repositorio de git desde GitHub, configurar la cadena de herramientas correcta para tu ambiente de compilación o configurar la autenticación en tu proveedor de servicios en la nube.

Puedes escribir tus propias acciones o puedes encontrar acciones para utilizar en tus flujos de trabajo dentro de GitHub Marketplace.

Para obtener más información, consulta la sección "Crear acciones".

Ejecutores

Un ejecutor es un servidor que ejecuta tus flujos de trabajo cuando se activan. Cada ejecutor puede ejecutar un job individual a la vez. Debes hospedar tus propios ejecutores para GitHub Enterprise Server. Para obtener más información, consulta la sección "Hospedar tus propios ejecutores".

Crear un flujo de trabajo de ejemplo

Las GitHub Actions utilizan la sintaxis de YAML para definir el flujo de trabajo. Each workflow is stored as a separate YAML file in your code repository, in a directory named .github/workflows.

Puedes crear un flujo de trabajo de ejemplo en tu repositorio que active automáticamente una serie de comandos cada que se suba código. In this workflow, GitHub Actions checks out the pushed code, installs the bats testing framework, and runs a basic command to output the bats version: bats -v.

  1. En tu repositorio, crea el directorio .github/workflows/ para almacenar tus archivos de flujo de trabajo.

  2. En el directorio .github/workflows/, crea un archivo nuevo que se llame learn-github-actions.yml y agrega el siguiente código.

    name: learn-github-actions
    on: [push]
    jobs:
      check-bats-version:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - uses: actions/setup-node@v2
            with:
              node-version: '14'
          - run: npm install -g bats
          - run: bats -v
    
  3. Confirma estos cambios y cárgalos a tu repositorio de GitHub.

Tu archivo de flujo de trabajo de GitHub Actions nuevo estará ahora instalado en tu repositorio y se ejecutará automáticamente cada que alguien suba un cambio a éste. To see the details about a workflow's execution history, see "Viewing the activity for a workflow run."

Entender el archivo de flujo de trabajo

Para ayudarte a entender cómo se utiliza la sintaxis de YAML para crear un flujo de trabajo, esta sección explica cada línea del ejemplo de la introducción:

name: learn-github-actions
Opcional - El nombre del flujo de trabajo ta como aparece en la pestaña de Acciones del repositorio de GitHub.
on: [push]
Especifica el activador de este flujo de trabajo. Este ejemplo utiliza el evento push, así que una ejecución de flujo de trabajo se activa cada que alguien sube un cambio al repositorio o fusiona una solicitud de cambios. Esto se activa mediante una subida a cada rama; para encontrar ejemplos de la sintaxis que solo se ejecuta en subidas a ramas específicas, rutas o etiquetas, consulta la sección "Sintaxis de flujo de trabajo para las GitHub Actions".
jobs:
Agrupa los jobs que se ejecutan en el flujo de trabajo learn-github-actions.
check-bats-version:
Define un job que se llame check-bats-version. Las llaves hijas definirán las propiedades del job.
  runs-on: ubuntu-latest
Configura el job para que se ejecute en la versión más reciente de un ejecutor Ubuntu Linux. Esto significa que el job se ejecutará en una máquina virtual nueva que se hospede en GitHub. For syntax examples using other runners, see "Workflow syntax for GitHub Actions."
  steps:
Agrupa todos los pasos que se ejecutan en el job check-bats-version. Cada elemento anidado debajo de esta sección es una acción o script de shell por separado.
    - uses: actions/checkout@v2
The uses keyword specifies that this step will run v3 of the actions/checkout action. Esta es una acción que comprueba tu repositorio en el ejecutor, lo cual te permite ejecutar scripts u otras acciones contra tu código (tales como herramientas de compilación y prueba). Debes utilizar la acción de verificación en cualquier momento en el que tu flujo de trabajo se ejecute contra el código del repositorio.
    - uses: actions/setup-node@v2
      with:
        node-version: '14'
This step uses the actions/setup-node@v2 action to install the specified version of the Node.js (this example uses v14). Esto pone a los comandos node y npm en tu PATH.
    - run: npm install -g bats
La palabra clave run le dice al job que ejecute un comando en el ejecutor. Ene ste caso, estás utilizando npm para instalar el paquete de pruebas del software bats.
    - run: bats -v
Finalmente, ejecutarás el comando bats con un parámetro que producirá la versión del software.

Visualizar el archivo de flujo de trabajo

En este diagrama, puedes ver el archivo de flujo de trabajo que acabas de crear, así como la forma en que los componentes de GitHub Actions se organizan en una jerarquía. Cada paso ejecuta una acción o script de shell simples. Los pasos 1 y 2 ejecutan acciones, mientras que los pasos 3 y 4 ejecutan scripts de shell. Para encontrar más acciones preconstruidas para tus flujos de trabajo, consulta la sección "Encontrar y personalizar acciones".

Resumen del flujo de trabajo

Viewing the activity for a workflow run

When your workflow is triggered, a workflow run is created that executes the workflow. After a workflow run has started, you can see a visualization graph of the run's progress and view each step's activity on GitHub.

  1. En tu instancia de GitHub Enterprise Server, visita la página principal del repositorio.

  2. Debajo del nombre de tu repositorio, da clic en Acciones.

    Navegar al repositorio

  3. En la barra lateral izquierda, da clic en el flujo de trabajo que quieres ver.

    Impresión de pantalla de los resultados del flujo de trabajo

  4. Debajo de "Ejecuciones de flujo de trabajo", da clic en el nombre de la ejecución que quieres ver.

    Impresión de pantalla de las ejecuciones del flujo de trabajo

  5. Debajo de Jobs o en la gráfica de visualización, da clic en el job que quieras ver.

    Seleccionar job

  6. View the results of each step.

    Impresión de pantalla de los detalles de la ejecución del flujo de trabajo

Ejemplos más complejos

For examples that demonstrate more complex features of GitHub Actions, see "Examples." You can see detailed examples that explain how to test your code on a runner, access the GitHub CLI, and use advanced features such as concurrency and test matrices.

Pasos siguientes

Contactar con soporte técnico

If you need help with anything related to workflow configuration, such as syntax, GitHub-hosted runners, or building actions, look for an existing topic or start a new one in the Comunidad de GitHub's GitHub Actions and Registro del paquete de GitHub category.

If you have feedback or feature requests for GitHub Actions, share those in the Debates de la comunidad de GitHub para las GitHub Actions.

Contact tu administrador de sitio for any of the following, whether your use or intended use falls into the usage limit categories:

  • If you believe your account has been incorrectly restricted
  • If you encounter an unexpected error when executing one of your Actions, for example: a unique ID
  • If you encounter a situation where existing behavior contradicts expected, but not always documented, behavior

Leer más