Requisitos previos
Para poder completar este tutorial, debes comprender los artefactos de flujo de trabajo. Consulta AUTOTITLE.
Cargar artefactos de construcción y evaluación
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 la compilación y los resultados de prueba para usar en implementaciones, depuración de pruebas fallidas o fallos, y para visualizar la cobertura de la suite de pruebas.
Puedes usar la acción para cargar artefactos. Cuando cargues un artefacto, puedes especificar un archivo sencillo o un directorio, o varios archivos o directorios. También puedes excluir ciertos archivos o directorios y utilizar patrones de comodín. Te recomendamos que proporciones un nombre para cada artefacto pero, si no se lo das, entonces el nombre predeterminado que se utilizará será . Para obtener más información sobre la sintaxis, consulta la acción en GitHub Enterprise Server.
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 , puedes implementar los archivos en el directorio 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 de Node.js que compila el código en el directorio y ejecuta las pruebas en el directorio . Puedes suponer que la ejecución de genera un informe de cobertura de código denominado almacenado en el directorio .
El flujo de trabajo carga los artefactos de producción en el directorio , pero excluye cualquier archivo Markdown. También carga el informe como un artefacto adicional.
name: Node CI
on: [push]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
- name: Archive production artifacts
uses: actions/upload-artifact@v3
with:
name: dist-without-markdown
path: |
dist
!dist/**/*.md
- name: Archive code coverage results
uses: actions/upload-artifact@v3
with:
name: code-coverage-report
path: output/test/code-coverage.html
name: Node CI
on: [push]
jobs:
build_and_test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm test
- name: Archive production artifacts
uses: actions/upload-artifact@v3
with:
name: dist-without-markdown
path: |
dist
!dist/**/*.md
- name: Archive code coverage results
uses: actions/upload-artifact@v3
with:
name: code-coverage-report
path: output/test/code-coverage.html
Configurar un periodo de retención de artefactos personalizado
Puedes definir un periodo de retención personalizado para cada artefacto individual creado por un flujo de trabajo. Al usar un flujo de trabajo para crear un nuevo artefacto, puedes emplearlo con la acción correspondiente. En este ejemplo se muestra cómo configurar un período de retención personalizado de 5 días para el artefacto que se llama :
- name: 'Upload Artifact'
uses: actions/upload-artifact@v3
with:
name: my-artifact
path: my_file.txt
retention-days: 5
- name: 'Upload Artifact'
uses: actions/upload-artifact@v3
with:
name: my-artifact
path: my_file.txt
retention-days: 5
El valor no puede superar el límite de retención establecido por el repositorio, la organización o la empresa.
Descargar artefactos durante la ejecución de un flujo de trabajo
Puedes usar la acción para descargar artefactos cargados previamente durante una ejecución de flujo de trabajo.
Nota:
Solo puedes descargar artefactos de un flujo de trabajo que se subieron durante la misma ejecución del flujo de trabajo.
Especificar el nombre de un artefacto para descargar un artefacto individual. Si cargaste un artefacto sin especificar un nombre, el nombre predeterminado es .
- name: Download a single artifact
uses: actions/download-artifact@v3
with:
name: my-artifact
También puedes descargar todos los artefactos en una ejecución de flujo de trabajo si no especificas un nombre para éstos. Esto puede ser útil si estás trabajando con muchos artefactos.
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
Si descargas todos los artefactos de una ejecución de flujo de trabajo, se creará un directorio para cada uno de ellos utilizando su nombre.
Para obtener más información sobre la sintaxis, consulta la acción en GitHub Enterprise Server.
Paso de datos entre trabajos de un flujo de trabajo
Puedes usar las acciones y para compartir datos entre los trabajos de un flujo de trabajo. Este flujo de trabajo de ejemplo ilustra cómo pasar datos entre jobs en el mismo flujo de trabajo. Para obtener más información, consulta las acciones y las acciones en GitHub Enterprise Server.
Las tareas que dependen de los artefactos de una tarea anterior deben esperar a que la tarea dependiente se complete exitosamente. Este flujo de trabajo usa la palabra clave para asegurarse de que , y se ejecuten secuencialmente. Por ejemplo, requiere usando la sintaxis.
La tarea 1 sigue estos pasos:
- Realiza un cálculo matemático y guarda el resultado en un archivo de texto denominado .
- Usa la acción para cargar el archivo con el nombre del artefacto .
Tarea 2 usa el resultado de la tarea anterior.
- Descarga el artefacto cargado en el trabajo anterior. De manera predeterminada, la acción descarga artefactos en el directorio del área de trabajo en la que se ejecuta el paso. Puedes usar el parámetro de entrada para especificar un directorio de descarga diferente.
- Lee el valor en el archivo, realiza un cálculo matemático y guarda el resultado en el archivo de nuevo, sobrescribiendo su contenido.
- Carga el archivo . Esta carga sobrescribe el artefacto cargado anteriormente porque comparten el mismo nombre.
El job 3 muestra el resultado cargado en el trabajo anterior:
- Descarga el artefacto artefacto .
- 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 .
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@v3
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@v3
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@v3
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@v3
with:
name: homework
- name: Print the final result
shell: bash
run: |
value=`cat math-homework.txt`
echo The result is $value
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@v3
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@v3
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@v3
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@v3
with:
name: homework
- name: Print the final result
shell: bash
run: |
value=`cat math-homework.txt`
echo The result is $value
La ejecución de flujo de trabajo archivará cualquier artefacto que haya generado. Para más información sobre cómo descargar artefactos archivados, consulta AUTOTITLE.