Skip to main content

Pasar información entre trabajos

Puede definir salidas para pasar información de un trabajo a otro.

Note

Actualmente los ejecutores hospedados por 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

Puede usar jobs.<job_id>.outputs para crear un objeto map de salidas para un trabajo. Las salidas de un job se encuentran disponibles para todos los jobs descendentes que dependan de este job. Para más información sobre cómo definir dependencias de trabajo, vea jobs.<job_id>.needs.

Las salidas son cadenas Unicode y pueden tener un máximo de 1 MB. El total de salidas de una ejecución de flujo de trabajo puede tener un máximo de 50 MB.

Las salidas de un trabajo que incluyen expresiones se evalúan en el ejecutor al final de cada trabajo. Las salidas que contienen secretos se redactan en el ejecutor y no se envían a GitHub Actions.

Si se omite una salida porque puede contener un secreto, verá el siguiente mensaje de advertencia: "Omitir salida {output.Key}, ya que puede contener un secreto". Para obtener más información sobre cómo controlar los secretos, consulte el ejemplo: Enmascaramiento y transmisión de un secreto entre trabajos o flujos de trabajo.

Para usar salidas de trabajo en un trabajo dependiente, puede utilizar el contexto needs. Para obtener más información, vea «Acceso a información contextual sobre ejecuciones de flujo de trabajo».

Ejemplo: definir salidas para un job

jobs:
  job1:
    runs-on: ubuntu-latest
    # Map a step output to a job output
    outputs:
      output1: ${{ steps.step1.outputs.test }}
      output2: ${{ steps.step2.outputs.test }}
    steps:
      - id: step1
        run: echo "test=hello" >> "$GITHUB_OUTPUT"
      - id: step2
        run: echo "test=world" >> "$GITHUB_OUTPUT"
  job2:
    runs-on: ubuntu-latest
    needs: job1
    steps:
      - env:
          OUTPUT1: ${{needs.job1.outputs.output1}}
          OUTPUT2: ${{needs.job1.outputs.output2}}
        run: echo "$OUTPUT1 $OUTPUT2"

Uso de salidas de trabajo en un trabajo de matriz

Las matrices se pueden usar para generar varias salidas de nombres diferentes. Al usar una matriz, las salidas de trabajo se combinarán desde todos los trabajos dentro de la matriz.

jobs:
  job1:
    runs-on: ubuntu-latest
    outputs:
      output_1: ${{ steps.gen_output.outputs.output_1 }}
      output_2: ${{ steps.gen_output.outputs.output_2 }}
      output_3: ${{ steps.gen_output.outputs.output_3 }}
    strategy:
      matrix:
        version: [1, 2, 3]
    steps:
      - name: Generate output
        id: gen_output
        run: |
          version="${{ matrix.version }}"
          echo "output_${version}=${version}" >> "$GITHUB_OUTPUT"
  job2:
    runs-on: ubuntu-latest
    needs: [job1]
    steps:
      # Will show
      # {
      #   "output_1": "1",
      #   "output_2": "2",
      #   "output_3": "3"
      # }
      - run: echo '${{ toJSON(needs.job1.outputs) }}'
Las acciones no garantizan el orden en el que se ejecutarán los trabajos de matriz. Asegúrese de que el nombre de salida es único, de lo contrario el último trabajo de matriz que se invalide el valor de salida.