Skip to main content

Encontrar y personalizar las acciones

Las acciones son los componentes básicos que hacen funcionar a tu flujo de trabajo. Un flujo de trabajo puede contener acciones que cree la comunidad, o puedes crear tus propias acciones directamente dentro del repositorio de tu aplicación. Esta guía te mostrará cómo descubrir, utilizar y personalizar las acciones.

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.

Información general

Las acciones que utilizas en tu flujo de trabajo pueden definirse en:

  • El mismo repositorio que tu archivo de flujo de trabajo
  • Un repositorio interno con la mismo cuenta empresarial que se configuró para permitir el acceso a los flujos de trabajo
  • Cualquier repositorio público
  • Una imagen del contenedor Docker publicada en Docker Hub

GitHub Marketplace es una ubicación central para que busque acciones creadas por la comunidad de GitHub.

Nota: GitHub Actions en your GitHub Enterprise Server instance pueden tener acceso limitado a las acciones de GitHub.com o GitHub Marketplace. Para más información, vea "Administración del acceso a acciones desde GitHub.com" y póngase en contacto con el administrador del sitio de GitHub Enterprise.

Agregar una acción desde el mismo repositorio

Si una acción se define en el mismo repositorio donde el archivo de flujo de trabajo usa la acción, puede hacer referencia a la acción con la sintaxis {owner}/{repo}@{ref} o ./path/to/dir en el archivo de flujo de trabajo.

Ejemplo de estructura de archivo de repositorio:

|-- hello-world (repository)
|   |__ .github
|       └── workflows
|           └── my-first-workflow.yml
|       └── actions
|           |__ hello-world-action
|               └── action.yml

Ejemplo de archivo de flujo de trabajo:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # This step checks out a copy of your repository.
      - uses: actions/checkout@v3
      # This step references the directory that contains the action.
      - uses: ./.github/actions/hello-world-action

El archivo action.yml se usa a fin de proporcionar metadatos para la acción. Obtenga información sobre el contenido de este archivo en "Sintaxis de metadatos para Acciones de GitHub".

Agregar una acción desde un repositorio diferente

Si se define una acción en un repositorio diferente al del archivo de flujo de trabajo, puede hacer referencia a la acción con la sintaxis {owner}/{repo}@{ref} en el archivo de flujo de trabajo.

La acción debe almacenarse en un repositorio público o interno que se configure para permitir el acceso a los flujos de trabajo. Para más información, vea "Uso compartido de acciones y flujos de trabajo con la empresa".

jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: actions/setup-node@v3

Hacer referencia a un contenedor en Docker Hub

Si se define una acción en una imagen de contenedor Docker publicada en Docker Hub, debe hacer referencia a la acción con la sintaxis docker://{image}:{tag} en el archivo de flujo de trabajo. Para proteger tu código y tus datos, te recomendamos que verifiques la integridad de la imagen del contenedor Docker de Docker Hub antes de usarla en tu flujo de trabajo.

jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: docker://alpine:3.8

Para obtener algunos ejemplos de acciones de Docker, vea el flujo de trabajo Docker-image.yml y "Creación de una acción de contenedor de Docker".

Utilizar la administración de lanzamientos para tus acciones personalizadas

Los creadores de una acción comunitaria tienen la opción de utilizar etiquetas, ramas, o valores de SHA para administrar los lanzamientos de la acción. Similar a cualquier dependencia, debes indicar la versión de la acción que te gustaría utilizar basándote en tu comodidad con aceptar automáticamente las actualizaciones para dicha acción.

Designarás la versión de la acción en tu archivo de flujo de trabajo. Revisa la documentación de la acción para encontrar información de su enfoque sobre la administración de lanzamientos, y para ver qué etiqueta, rama, o valor de SHA debes utilizar.

Nota: Se recomienda utilizar un valor SHA al usar acciones de terceros. Para más información, vea Fortalecimiento de la seguridad para Acciones de GitHub.

Usar etiquetas

Las etiquetas son útiles para que te permitan decidir cuándo cambiar entre versiones mayores y menores, pero son más efímeras y el mantenedor puede moverlas o borrarlas. Este ejemplo se muestra cómo seleccionar una acción etiquetada como v1.0.1:

steps:
  - uses: actions/javascript-action@v1.0.1

Utilizar SHAs

Si necesitas utilizar un versionamiento más confiable, debes utilizar el valor de SHA asociado con la versión de la acción. Los SHA son inmutables y, por lo tanto, más confiables que las etiquetas o las ramas. Sin embargo, este acercamiento significa que no recibirás actualizaciones para una acción automáticamente, incluyendo las correcciones de errores y actualizaciones de seguridad. Debes utilizar un valor SHA completo de la confirmación y no un valor abreviado. Este ejemplo apunta al SHA de una acción:

steps:
  - uses: actions/javascript-action@172239021f7ba04fe7327647b213799853a9eb89

Utilizar ramas

El especificar una rama destino para la acción significa que ésta siempre ejecutará la versión que se encuentre actualmente en dicha rama. Este acercamiento puede crear problemas si una actualización a la rama incluye cambios importantes. Este ejemplo tiene como destino una rama denominada @main:

steps:
  - uses: actions/javascript-action@main

Para más información, vea "Uso de la administración de versiones para acciones".

Utilizar entradas y salidas con una acción

Una acción a menudo acepta o requiere entradas y genera salidas que puedes utilizar. Por ejemplo, una acción podría requerir que especifiques una ruta a un archivo, el nombre de una etiqueta, u otros datos que utilizará como parte del procesamiento de la misma.

Para ver las entradas y salidas de una acción, compruebe action.yml o action.yaml en el directorio raíz del repositorio.

En este ejemplo action.yml, la palabra clave inputs define una entrada necesaria denominada file-path e incluye un valor predeterminado que se usará si no se especifica ninguno. La palabra clave outputs define una salida denominada results-file, que indica dónde buscar los resultados.

name: "Example"
description: "Receives file and generates output"
inputs:
  file-path: # id of input
    description: "Path to test script"
    required: true
    default: "test-file.js"
outputs:
  results-file: # id of output
    description: "Path to results file"

Pasos siguientes

Para más información sobre GitHub Actions, vea "Características esenciales de GitHub Actions".