Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Almacenar datos de flujo de trabajo mediante artefactos

Los artefactos te permiten compartir datos entre puestos en un flujo de trabajo y almacenar los datos una vez que se ha completado ese flujo de trabajo.

GitHub Actions se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud, y GitHub One. GitHub Actions no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Para obtener más información, consulta la sección "Productos de GitHub".

En este artículo

Acerca de los artefactos de flujo de trabajo

Los artefactos te permiten hacer datos persistentes después de que se complete un job y comparten estos datos con otro job en el mismo flujo de trabajo. Un artefacto es un archivo o recopilación de archivos producidos durante una ejecución de flujo de trabajo. Por ejemplo, puedes utilizar artefactos para guardar tu compilación y probar el resultado después de que haya terminado una ejecución de flujo de trabajo. Para cargas y solicitudes de extracción, GitHub almacena artefactos por 90 días. El periodo de retención para una solicitud de extracción se restablece cada vez que alguien sube una confirmación nueva a la solicitud de extracción.

Estos son algunos de los artefactos comunes que puedes subir:

  • Archivos de registro y vaciados de memoria
  • Resultados de prueba, fallas y capturas de pantalla
  • Archivos binarios o comprimidos
  • Resultados de la prueba de rendimiento y resultados de cobertura del código

Almacenar artefactos consume espacio de almacenamiento en GitHub. El uso de GitHub Actions es gratuito para los repositorios públicos. Para los repositorios privados, cada cuenta de GitHub recibe una cantidad determinada de minutos y almacenamiento gratuitos dependiendo del producto que se utilice con la cuenta. Para obtener más información, consulta "Administrar la facturación para GitHub Actions".

Los artefactos se cargan durante una ejecución de flujo de trabajo y puedes ver el nombre y tamaño de estos en la IU. Cuando se descarga un artefacto utilizando la IU de GitHub, todos los archivos que se hayan subido de manera individual como parte del mismo se comprimirán en un solo archivo. Esto significa que los costos se calcularán con base en el tamaño del artefacto cargado y no en aquél del archivo comprimido.

GitHub proporciona dos acciones que puedes usar para cargar y descargar artefactos de construcción. Para obtener más informaicón, consulta las acciones actions/upload-artifact and download-artifact.

Para compartir datos entre puestos:

  • Cargar archivos: Asigna un nombre al archivo cargado y sube los datos antes de que termine el job.
  • Descargar archivos: Solo puedes descargar artefactos que se hayan subido durante la misma ejecución del flujo de trabajo. Cuando descargas un archivo, puedes referenciarlo por su nombre.

Los pasos de un job comparten el mismo ambiente en la máquina ejecutora, pero se ejecutan en su propio proceso individual. Para pasar datos entre pasos en un trabajo, puedes usar entradas y salidas. Para obtener más información sobre entradas y salidas, consulta "Sintaxis de metadatos para GitHub Actions".

Pasar datos entre puestos en un flujo de trabajo

Puedes usar las acciones upload-artifact y download-artifact para compartir datos entre trabajos en un flujo de trabajo. Este flujo de trabajo de ejemplo ilustra cómo pasar datos entre trabajos en el mismo flujo de trabajo. Para obtener más informaicón, consulta las acciones actions/upload-artifact and download-artifact.

Los trabajos que dependen de los artefactos de un trabajo anterior deben esperar que el trabajo dependiente se complete exitosamente. Este flujo de trabajo usa la palabra clave needs para garantizar que job_1, job_2 y job_3 se ejecuten secuencialmente. Por ejemplo, job_2 requiere job_1 mediante la sintaxis needs: job_1.

El Trabajo 1 realiza estos pasos:

  • Realiza un cálculo matemático y guarda el resultado en un archivo de texto llamado math-homework.txt.
  • Usa la acción upload-artifact para cargar el archivo math-homework.txt con el nombre homework. La acción coloca el archivo en un directorio denominado homework.

El Trabajo 2 usa el resultado del trabajo anterior:

  • Descarga el artefacto homework cargado en el trabajo anterior. De manera predeterminada, la acción download-artifact descarga artefactos en el directorio del espacio de trabajo que ejecuta el paso. Puedes utilizar el parámetro de entrada path para especificar un directorio de descarga diferente.
  • Lee el valor en el archivo homework/math-homework.txt, realiza un cálculo matemático, y guarda el resultado en math-homework.txt.
  • Carga el archivo math-homework.txt. Esta carga sobrescribe la carga anterior porque ambas cargas comparten el mismo nombre.

El Trabajo 3 muestra el resultado cargado en el trabajo anterior:

  • Descarga el artefacto homework.
  • Imprime el resultado de la ecuación matemática en el registro.

La operación matemática completa realizada en este ejemplo de flujo de trabajo es (3 + 7) x 9 = 90.

name: Share data between jobs

on: [push]

jobs:
  job_1:
    name: Add 3 and 7
    runs-on: ubuntu-latest
    steps:
      - shell: bash
        run: |
          expr 3 + 7 > math-homework.txt
      - name: Upload math result for job 1
        uses: actions/upload-artifact@v2
        with:
          name: homework
          path: math-homework.txt

  job_2:
    name: Multiply by 9
    needs: job_1
    runs-on: windows-latest
    steps:
      - name: Download math result for job 1
        uses: actions/download-artifact@v2
        with:
          name: homework
      - shell: bash
        run: |
          value=`cat math-homework.txt`
          expr $value \* 9 > math-homework.txt
      - name: Upload math result for job 2
        uses: actions/upload-artifact@v2
        with:
          name: homework
          path: math-homework.txt

  job_3:
    name: Display results
    needs: job_2
    runs-on: macOS-latest
    steps:
      - name: Download math result for job 2
        uses: actions/download-artifact@v2
        with:
          name: homework
      - name: Print the final result
        shell: bash
        run: |
          value=`cat math-homework.txt`
          echo The result is $value

Flujo de trabajo que pasa datos entre trabajos para realizar cálculos matemáticos

Compartir datos entre las ejecuciones de flujo de trabajo

Una vez que termina un flujo de trabajo, puedes descargar un archivo comprimido de los artefactos cargados en GitHub si encuentras la ejecución del flujo de trabajo en la pestaña de Acciones. También puedes utilizar la API REST de GitHub para descargar artefactos. Para obtener más información, consulta la sección "Artefactos".

Si necesitas acceder a artefactos de una ejecución previa del flujo de trabajo, necesitarás un lugar para almacenarlos. Por ejemplo, puedes ejecutar un script al final de tu flujo de trabajo para almacenar artefactos de construcción en Amazon S3 o Artifactory, y luego usar la API del servicio de almacenamiento para recuperar esos artefactos en un flujo de trabajo futuro.

Cargar artefactos de construcción y evaluación

Puedes crear un flujo de trabajo de integración continua (CI) para construir y probar tu código. For more information about using GitHub Actions to perform CI, see "About continuous integration."

El resultado de la construcción y la prueba de tu código frecuentemente produce archivos que puedes usar para depurar fallas de prueba y códigos de producción que puedes implementar. Puedes configurar un flujo de trabajo para construir y probar el código subido a tu repositorio e informar un estado satisfactorio o de falla. Puedes cargar los resultados de construcción y prueba para usar en implementaciones, pruebas de depuración fallidas o fallos, y para visualizar la cobertura del conjunto de prueba.

Puedes usar la acción upload-Artifact para cargar artefactos. When uploading an artifact, you can specify a single file or directory, or multiple files or directories. You can also exclude certain files or directories, and use wildcard patterns. We recommend that you provide a name for an artifact, but if no name is provided then artifact will be used as the default name. For more information on syntax, see the actions/upload-artifact action.

Ejemplo

Por ejemplo, tu repositorio o una aplicación web podrían contener archivos de SASS y TypeScript que debes convertir a CSS y JavaScript. Teniendo en cuenta que tu configuración de construcción envía los archivos compilados al directorio dist, puedes implementar los archivos en el directorio dist para tu servidor de aplicación web si todas las pruebas se completaron satisfactoriamente.

|-- hello-world (repository)
|   └── dist
|   └── tests
|   └── src
|       └── sass/app.scss
|       └── app.ts
|   └── output
|       └── test
|   

En este ejemplo se muestra cómo crear un flujo de trabajo para un proyecto Node.js que construye el código en el directorio src y ejecuta las pruebas en el directorio tests. Puedes suponer que la ejecución npm test produce un informe de cobertura de código denominado code-coverage.html almacenada en el directorio output/test/.

The workflow uploads the production artifacts in the dist directory, but excludes any markdown files. It also and uploads the code-coverage.html report as another artifact.

name: Node CI

on: [push]

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
          npm test
      - name: Archive production artifacts
        uses: actions/upload-artifact@v2
        with:
          name: dist-without-markdown
          path: |
            dist
            !dist/**/*.md
      - name: Archive code coverage results
        uses: actions/upload-artifact@v2
        with:
          name: code-coverage-report
          path: output/test/code-coverage.html

Imagen de la ejecución del flujo de trabajo del artefacto de carga de flujos de trabajo

Descargar o eliminar artefactos

During a workflow run, you can download artifacts that were previously uploaded in the same workflow run. After a workflow run has been completed, you can download or delete artifacts on GitHub using the workflow run history.

Downloading artifacts during a workflow run

The actions/download-artifact action can be used to download previously uploaded artifacts during a workflow run.

Note: You can only download artifacts in a workflow that were uploaded during the same workflow run.

Specify an artifact's name to download an individual artifact. If you uploaded an artifact without specifying a name, the default name is artifact.

- name: Download a single artifact
  uses: actions/upload-artifact@v2
  with:
    name: my-artifact

You can also download all artifacts in a workflow run by not specifying a name. This can be useful if you are working with lots of artifacts.

- name: Download all workflow run artifacts
  uses: actions/upload-artifact@v2

If you download all a workflow run's artifacts, a directory for each artifact is created using its name.

For more information on syntax, see the actions/download-artifact action.

Downloading and deleting artifacts after a workflow run is complete

Los artefactos caducan automáticamente después de 90 días, pero siempre puedes reclamar el almacenamiento utilizado de GitHub Actions si borras artefactos antes de que caduquen en GitHub.

Advertencia: Una vez que eliminas un artefacto, no se puede restaurar.

  1. En GitHub, visita la página principal del repositorio.
  2. Debajo del nombre de tu repositorio, da clic en Acciones.
    Pestaña de acciones en la navegación del repositorio principal
  3. En la barra lateral izquierda, da clic en el flujo de trabajo que quieres ver.
    Lista de flujos de trabajo en la barra lateral izquierda
  4. Debajo de "Ejecuciones de flujo de trabajo", da clic en el nombre de la ejecución que quieres ver.
    Nombre de la ejecución de flujo de trabajo
  5. Para descargar artefactos, usa el menú desplegable Artefactos y selecciona el artefacto que deseas descargar.
    Menú desplegable Download artifact (Descargar artefacto)
  6. Para eliminar artefactos, usa el menú desplegable Artifacts (Artefactos) y haz clic en .
    Menú desplegable Delete artifact (Eliminar artefacto)

Leer más

  • "<0">Administrar la facturación para GitHub Actions"

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos