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.

Acciones de GitHub is available with GitHub gratis, GitHub Pro, Equipo de GitHub, and Nube de GitHub Enterprise. Acciones de GitHub is unavailable for per-repository plans, which are legacy billing plans. For more information, see "GitHub's products."

En este artículo

Acerca de los artefactos de flujo de trabajo

Los artefactos te permiten almacenar datos una vez que se completó un puesto. Un artefacto es un archivo o recopilación de archivos producidos durante una ejecución de flujo de trabajo. You can use artifacts to pass data between jobs in a workflow or persist build and test output after a workflow run has ended. GitHub stores artifacts for 90 days for pushes and pull requests. El período de retención para una solicitud de extracción se reinicia cada vez que alguien sube nuevas confirmaciones a la solicitud de extracción.

Storing artifacts uses storage space on GitHub. Acciones de GitHub usage is free for public repositories. For private repositories, each GitHub account receives a certain amount of free minutes and storage, depending on the product used with the account. For more information, see "Managing billing for Acciones de GitHub."

Debes cargar los artefactos durante la ejecución de un flujo de trabajo. GitHub proporciona dos acciones que puedes usar para cargar y descargar artefactos de construcción. Los archivos que se cargan a una ejecución de flujo de trabajo se archivan mediante el formato .zip. Para obtener más informaicón, consulta las acciones actions/upload-artifact and download-artifact.

Cada trabajo en un flujo de trabajo se ejecuta en una nueva instancia del entorno virtual. Cuando se completa el trabajo, el ejecutor termina y elimina la instancia del entorno virtual.

Para compartir datos entre puestos:

  • Puedes cargar los datos antes de que finalice el trabajo a fin de guardar el archivo en la ejecución del grupo de trabajo. Cuando cargas un archivo, debes designarle un nombre.
  • Luego de cargar un archivo, puedes descargarlo en otro trabajo con la misma ejecución de flujo de trabajo. Cuando descargas un archivo, puedes hacer referencia al archivo por nombre. Solo puedes descargar artefactos que se cargaron durante la misma ejecución de flujo de trabajo.

Los pasos que son parte de un trabajo se ejecutan en el mismo entorno virtual, pero se ejecutan en sus propios procesos individuales. 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 Acciones de GitHub".

Estos son algunos de los artefactos de construcción y prueba comunes que posiblemente desees cargar:

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

Pasar datos entre puestos en un flujo de trabajo

Puedes usar las acciones upload-archive y download-archive para intercambiar 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:

  • Agrega los valores 3 y 7 y envía el valor a un archivo de texto denominado 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 especificar un directorio diferente para descargar la acción para usar el parámetro de entrada path.
  • Lee el valor en el archivo homework/math-homework.txt y multiplica el valor por 9 y luego actualiza el archivo con el nuevo valor.
  • 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@v1
        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@v1
        with:
          name: homework
      - shell: bash
        run: |
          value=`cat homework/math-homework.txt`
          expr $value \* 9 > homework/math-homework.txt
      - name: Upload math result for job 2
        uses: actions/upload-artifact@v1
        with:
          name: homework
          path: homework/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@v1
        with:
          name: homework
      - name: Print the final result
        shell: bash
        run: |
          value=`cat homework/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 finaliza el flujo de trabajo, puedes descargar un archivo de los artefactos cargados en GitHub al buscar la ejecución del flujo de trabajo en la pestaña Actions (Acciones). GitHub actualmente no ofrece un REST API para recuperar los artefactos cargados.

Si necesitas acceder a los artefactos de un flujo de trabajo que se ejecutó anteriormente, debes almacenar los artefactos en algún lugar. 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 en un entorno virtual alojado en GitHub. Para obtener más información sobre cómo usar Acciones de GitHub para realizar una integración continua, consulta Acerca de las integraciones continuas.

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-archive para cargar los artefactos. Para obtener más información, consulta la acción actions/upload-artifact.

Ejemplo

Por ejemplo, es posible que tu repositorio o una aplicación web contengan archivos SASS y Typescript que debes compilar en 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/.

El flujo de trabajo carga los artefactos de producción en el directorio dist y en code-doverage.html como dos artefactos separados.

name: Node CI

on: [push]

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v1
      - name: npm install, build, and test
        run: |
          npm install
          npm run build --if-present
          npm test
      - name: Archive production artifacts
        uses: actions/upload-artifact@v1
        with:
          name: dist
          path: dist
      - name: Archive code coverage results
        uses: actions/upload-artifact@v1
        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

Leer más

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos