Note
Auf GitHub gehostete Runner werden aktuell nicht auf GitHub Enterprise Server unterstützt. Weitere Informationen zur geplanten zukünftigen Unterstützung findest Du in der GitHub public roadmap.
Übersicht
Du kannst jobs.<job_id>.outputs
verwenden, um eine map
von Ausgaben für einen Auftrag zu erstellen. Ausgaben eines Jobs stehen allen nachgelagerten Jobs zur Verfügung, die von diesem Job abhängen. Weitere Informationen zum Definieren von Auftragsabhängigkeiten findest du unter jobs.<job_id>.needs
.
Ausgaben sind Unicode-Zeichenfolgen und können maximal 1 MB groß sein. Die Gesamtanzahl aller Ausgaben in einer Workflowausführung kann maximal 50 MB betragen.
Ausgaben von Aufträgen, die Ausdrücke enthalten, werden am Ende jedes Auftrags auf dem Runner ausgewertet. Ausgaben, die Geheimnisse enthalten, werden auf dem Runner zensiert und nicht an GitHub Actions gesendet.
Wenn eine Ausgabe übersprungen wird, da sie möglicherweise ein Geheimnis enthält, wird die folgende Warnmeldung angezeigt: „Ausgabe überspringen{output.Key}
, da sie ein Geheimnis enthalten kann.“ Weitere Informationen zum Umgang mit Geheimnissen finden Sie im Beispiel: Maskieren und Übergeben eines Geheimnisses zwischen Aufträgen oder Workflows.
Um Auftragsausgaben in einem abhängigen Auftrag zu verwenden, kannst du den needs
-Kontext verwenden. Weitere Informationen findest du unter Zugreifen auf kontextbezogene Informationen zu Workflowausführungen.
Beispiel: Definieren von Ausgaben für einen Auftrag
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"
Verwenden von Auftragsausgaben in einem Matrixauftrag
Matrizen können verwendet werden, um mehrere Ausgaben unterschiedlicher Namen zu generieren. Bei Verwendung einer Matrix werden Auftragsausgaben aus allen Aufträgen innerhalb der Matrix kombiniert.
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) }}'
Warning
Aktionen garantieren keine Reihenfolge für die Ausführung der Matrixaufträge. Achte darauf, dass der Ausgabename eindeutig ist, sonst setzt der letzte ausgeführte Matrixauftrag den Ausgabewert außer Kraft.