Skip to main content

Understanding GitHub Actions

Learn the basics of GitHub Actions, including core concepts and essential terminology.

Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.

Overview

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. You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.

GitHub Actions goes beyond just DevOps and lets you run workflows when other events happen in your repository. For example, you can run a workflow to automatically add the appropriate labels whenever someone creates a new issue in your repository.

You must host your own Linux, Windows, or macOS virtual machines to run workflows for your GitHub Enterprise Server instance. Los ejecutores autohospedados pueden ser físicos, virtuales, en un contenedor, locales o en una nube.

For more information about introducing GitHub Actions to your enterprise, see "Introducing GitHub Actions to your enterprise."

The components of GitHub Actions

You can configure a GitHub Actions workflow to be triggered when an event occurs in your repository, such as a pull request being opened or an issue being created. Your workflow contains one or more jobs which can run in sequential order or in parallel. Each job will run inside its own virtual machine runner, or inside a container, and has one or more steps that either run a script that you define or run an action, which is a reusable extension that can simplify your workflow.

Workflow overview

Workflows

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.

Los flujos de trabajo se definen en el directorio .github/workflows de un repositorio y un repositorio puede tener varios flujos de trabajo, cada uno de los cuales puede realizar un conjunto diferente de tareas. 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.

You can reference a workflow within another workflow, see "Reusing workflows."

For more information about workflows, see "Using workflows."

Events

An event is a specific activity in a repository that triggers a workflow run. For example, activity can originate from GitHub when someone creates a pull request, opens an issue, or pushes a commit to a repository. You can also trigger a workflow run on a schedule, by posting to a REST API, or manually.

For a complete list of events that can be used to trigger workflows, see Events that trigger workflows.

Jobs

A job is a set of steps in a workflow that execute on the same runner. Each step is either a shell script that will be executed, or an action that will be run. Steps are executed in order and are dependent on each other. Since each step is executed on the same runner, you can share data from one step to another. For example, you can have a step that builds your application followed by a step that tests the application that was built.

You can configure a job's dependencies with other jobs; by default, jobs have no dependencies and run in parallel with each other. When a job takes a dependency on another job, it will wait for the dependent job to complete before it can run. For example, you may have multiple build jobs for different architectures that have no dependencies, and a packaging job that is dependent on those jobs. The build jobs will run in parallel, and when they have all completed successfully, the packaging job will run.

For more information about jobs, see "Using jobs."

Actions

An action is a custom application for the GitHub Actions platform that performs a complex but frequently repeated task. Use an action to help reduce the amount of repetitive code that you write in your workflow files. An action can pull your git repository from GitHub, set up the correct toolchain for your build environment, or set up the authentication to your cloud provider.

You can write your own actions, or you can find actions to use in your workflows in the GitHub Marketplace.

For more information, see "Creating actions."

Runners

Un ejecutor es un servidor que ejecuta tus flujos de trabajo cuando se activan. Each runner can run a single job at a time. You must host your own runners for GitHub Enterprise Server. For more information, see "Hosting your own runners."

Crear un flujo de trabajo de ejemplo

Las GitHub Actions utilizan la sintaxis de YAML para definir el flujo de trabajo. Cada flujo de trabajo se almacena como un archivo YAML independiente en el repositorio de código, en un directorio denominado .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. En este flujo de trabajo GitHub Actions extrae el código insertado, instala el marco de pruebas de bats y ejecuta un comando básico para generar la versión de los bats: bats -v.

  1. En el repositorio, cree el directorio .github/workflows/ para almacenar los archivos de flujo de trabajo.

  2. En el directorio .github/workflows/, cree un archivo denominado learn-github-actions.yml y agregue el código siguiente.

    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. Para ver los detalles sobre el historial de ejecución de un flujo de trabajo, consulta «Visualización de la actividad de una ejecución de flujo de trabajo».

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 como aparece en la pestaña de Acciones del repositorio de GitHub.
on: [push]
Especifica el activador de este flujo de trabajo. En este ejemplo se usa el evento push, de forma que se desencadena una ejecución de flujo de trabajo cada vez que alguien inserta un cambio en el repositorio o combina una solicitud de incorporación de cambios. Esto se desencadena mediante una inserción en cada rama; para obtener ejemplos de una sintaxis que solo se ejecuta en inserciones en ramas, rutas o etiquetas concretas, consulta «Sintaxis de flujo de trabajo para GitHub Actions».
jobs:
Agrupa todos los trabajos que se ejecutan en el flujo de trabajo learn-github-actions.
check-bats-version:
Define un trabajo denominado 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. Para obtener ejemplos de sintaxis con otros ejecutores, consulta «Sintaxis de flujo de trabajo para GitHub Actions».
  steps:
Agrupa todos los pasos que se ejecutan en el trabajo 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
La palabra clave uses especifica que este paso ejecutará v3 de la acción actions/checkout. 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'
Este paso usa la acción actions/setup-node@v2 para instalar la versión especificada de Node.js (en este ejemplo se usa v14). Esto coloca los comandos node y npm en PATH.
    - run: npm install -g bats
La palabra clave run indica al trabajo que ejecute un comando en el ejecutor. En este caso, se usa npm para instalar el paquete de pruebas de software bats.
    - run: bats -v
Por último, ejecutará el comando bats con un parámetro que genera 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. A fin de buscar más acciones precompiladas para los flujos de trabajo, vea "Búsqueda y personalización de acciones".

Introducción al flujo de trabajo

Visualización de la actividad de una ejecución de flujo de trabajo

Cuando se desencadena el flujo de trabajo, se crea una ejecución de flujo de trabajo que ejecuta el flujo de trabajo. Una vez que el flujo de trabajo haya comenzado a ejecutarse, puedes ver una gráfica de visualización del progreso de dicha ejecución, así como la actividad de cada paso, en GitHub.

  1. En your GitHub Enterprise Server instance, vaya a la página principal del repositorio.

  2. Debajo del nombre del repositorio, haga clic en Acciones.

    Navegar al repositorio

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

    Captura 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.

    Captura de pantalla de las ejecuciones del flujo de trabajo

  5. En Trabajos o en el gráfico de visualización, seleccione el trabajo que quiera ver.

    Selección del trabajo

  6. Vea los resultados de cada paso.

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

More complex examples

Para ver ejemplos que demuestren características más complejas de GitHub Actions, consulta "Ejemplos". Para ver ejemplos detallados que explican cómo probar el código en un ejecutor, accede a la CLI de GitHub y usa características avanzadas, como la simultaneidad y las matrices de prueba.

Next steps

Contacting support

Si necesitas ayuda con lo que sea relacionado con la configuración de flujo de trabajo, tal como la sintaxis, los ejecutores hospedados en GitHub, o la creación de acciones, busca un tema existente o inicia uno nuevo en la categoría de GitHub Actions y GitHub Packages de GitHub Community.

Si tienes algún tipo de retroalimentación o solicitudes de características para GitHub Actions, compártelas en el Debates de la comunidad de GitHub para Acciones de GitHub.

Contacta a el administrador del sitio para cualquiera de los siguientes, que tu tipo de uso o el tipo de uso que pretendes tener caiga en las siguientes categorías de limitación:

  • Si crees que tu cuenta se ha restringido de manera incorrecta
  • Si llegas un error inesperado cuando ejecutas una de tus acciones, por ejemplo: una ID única
  • Si llegas a una situación en donde el comportamiento existente contradice a aquél que se espera, pero no siempre se documenta

Further reading