{"meta":{"title":"Wiederverwenden von Workflowkonfigurationen","intro":"Hier finden Sie Informationen zum Vermeiden von Duplizierungen beim Erstellen eines Workflows, indem Sie vorhandene Workflows wiederverwenden und YAML-Anker und Aliase verwenden.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/enterprise-cloud@latest/actions","title":"GitHub Actions"},{"href":"/de/enterprise-cloud@latest/actions/reference","title":"Verweis"},{"href":"/de/enterprise-cloud@latest/actions/reference/workflows-and-actions","title":"Workflows und Aktionen"},{"href":"/de/enterprise-cloud@latest/actions/reference/workflows-and-actions/reusing-workflow-configurations","title":"Wiederverwenden von Workflowkonfigurationen"}],"documentType":"article"},"body":"# Wiederverwenden von Workflowkonfigurationen\n\nHier finden Sie Informationen zum Vermeiden von Duplizierungen beim Erstellen eines Workflows, indem Sie vorhandene Workflows verwenden.\n\n## Wiederverwendbare Workflows\n\nReferenzinformationen für wiederverwendbare Workflows\n\n### Zugriff auf wiederverwendbare Workflows\n\nEin wiederverwendbarer Workflow kann von einem anderen Workflow verwendet werden, wenn einer der folgenden Punkte zutrifft:\n\n* Beide Workflows befinden sich im selben Repository.\n* Der aufgerufene Workflow wird in einem öffentlichen Repositoryund In Ihrer Unternehmensorganisation können Sie öffentliche wiederverwendbare Workflows verwenden.\n* Der aufgerufene Workflow befindet sich in einem internen Repository, und die Einstellungen für dieses Repository ermöglichen den Zugriff darauf. Weitere Informationen finden Sie unter [Freigeben von Aktionen und Workflows in deinem Unternehmen](/de/enterprise-cloud@latest/actions/creating-actions/sharing-actions-and-workflows-with-your-enterprise).\n* Der aufgerufene Workflow befindet sich in einem privaten Repository, und die Einstellungen für dieses Repository ermöglichen den Zugriff darauf. Weitere Informationen finden Sie unter [Freigeben von Aktionen und Workflows in deinem Unternehmen](/de/enterprise-cloud@latest/actions/creating-actions/sharing-actions-and-workflows-with-your-enterprise).\n\nDie folgende Tabelle zeigt die Zugänglichkeit wiederverwendbarer Workflows für einen Aufrufer-Workflow, abhängig von der Sichtbarkeit des Host-Repositorys.\n\n| Anrufer-Repository | Repositorys für zugängliche Workflows |\n| ------------------ | ------------------------------------- |\n| `private`          |                                       |\n\n```\n          `private`\n          , `internal`und`public` |\n```\n\n\\|  |\n\\| `internal` |\n`internal` und `public` |\n\\|  |\n\\| `public` | `public` |\n\nDie **Actions Berechtigungen** auf der Seite „Actions-Einstellungen“ des Aufrufer-Repositorys müssen so konfiguriert werden, dass die Nutzung von Aktionen und wiederverwendbaren Workflows ermöglicht wird. Weitere Informationen findest du unter [Einstellung der GitHub Actions für ein Repository verwalten](/de/enterprise-cloud@latest/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-select-actions-and-reusable-workflows-to-run).\n\nFür interne oder private Repositorys muss die **Access-Richtlinie** auf der Seite \"Aktionen\"-Einstellungen des repositorys des aufgerufenen Workflows explizit konfiguriert werden, um den Zugriff von Repositorys zuzulassen, die Aufruferworkflows enthalten - siehe [Einstellung der GitHub Actions für ein Repository verwalten](/de/enterprise-cloud@latest/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#allowing-access-to-components-in-a-private-repository).\n\n> \\[!NOTE]\n> Um die Sicherheit zu erhöhen, unterstützt GitHub Actions keine Umleitungen für Aktionen oder wiederverwendbare Workflows. Dies bedeutet, dass bei einer Änderung des Besitzers bzw. der Besitzerin, des Namens des Repositorys einer Aktion oder des Namens einer Aktion alle Workflows, die diese Aktion mit dem vorherigen Namen verwenden, fehlschlagen.\n\n### Einschränkungen von wiederverwendbaren Workflows\n\n* Sie können bis zu zehn Ebenen von Workflows verbinden. Weitere Informationen findest du unter [Verschachteln wiederverwendbarer Workflows](/de/enterprise-cloud@latest/actions/how-tos/sharing-automations/reuse-workflows#nesting-reusable-workflows).\n\n* Sie können maximal 50 eindeutige wiederverwendbare Workflows aus einer einzigen Workflowdatei aufrufen. Dieser Grenzwert gilt für alle Strukturen von geschachtelten wiederverwendbaren Workflows, die ab der Workflowdatei der aufrufenden Funktion der obersten Ebene aufgerufen werden können.\n\n  Beispielsweise zählt *top-level-caller-workflow\\.yml* → *called-workflow-1.yml* → *called-workflow-2.yml* als zwei wiederverwendbare Workflows.\n\n* Alle Umgebungsvariablen, die in einem `env`-Kontext festgelegt werden, der im aufrufenden Workflow auf Workflowebene definiert ist, werden nicht an den aufgerufenen Workflow übergeben. Weitere Informationen findest du unter [Speichern von Informationen in Variablen](/de/enterprise-cloud@latest/actions/learn-github-actions/variables) und [Kontextreferenz](/de/enterprise-cloud@latest/actions/learn-github-actions/contexts#env-context).\n\n* Auf ähnliche Weise sind im `env`-Kontext festgelegte Umgebungsvariablen, die im aufgerufenen Workflow definiert sind, im `env`-Kontext des Aufruferworkflows nicht zugänglich. Stattdessen musst du Ausgaben des wiederverwendbaren Workflows verwenden. Weitere Informationen findest du unter [Verwenden von Ausgaben eines wiederverwendbaren Workflows](/de/enterprise-cloud@latest/actions/how-tos/sharing-automations/reuse-workflows#using-outputs-from-a-reusable-workflow).\n\n* Um Variablen in mehreren Workflows wiederzuverwenden, lege sie auf Organisations-, Repository- oder Umgebungsebene fest, und verweise mithilfe des Kontexts `vars` darauf. Weitere Informationen findest du unter [Speichern von Informationen in Variablen](/de/enterprise-cloud@latest/actions/learn-github-actions/variables) und [Kontextreferenz](/de/enterprise-cloud@latest/actions/learn-github-actions/contexts#vars-context).\n\n* Wiederverwendbare Workflows werden direkt in einem Auftrag aufgerufen und nicht innerhalb eines Arbeitsschritts. Du kannst daher `GITHUB_ENV` verwenden, um Werte an die Auftragsschritte im Aufruferworkflow zu übergeben.\n\n### Unterstützte Schlüsselwörter für Aufträge, in denen ein wiederverwendbarer Workflow aufgerufen wird\n\nBeim Aufrufen eines wiederverwendbaren Workflows kannst du in dem Auftrag, der den Aufruf enthält, nur die folgenden Schlüsselwörter verwenden:\n\n* [`jobs.<job_id>.name`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idname)\n* [`jobs.<job_id>.uses`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_iduses)\n* [`jobs.<job_id>.with`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idwith)\n* [`jobs.<job_id>.with.<input_id>`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idwithinput_id)\n* [`jobs.<job_id>.secrets`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsecrets)\n* [`jobs.<job_id>.secrets.<secret_id>`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsecretssecret_id)\n* [`jobs.<job_id>.secrets.inherit`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsecretsinherit)\n* [`jobs.<job_id>.strategy`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategy)\n* [`jobs.<job_id>.needs`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds)\n* [`jobs.<job_id>.if`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idif)\n* [`jobs.<job_id>.concurrency`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idconcurrency)\n* [`jobs.<job_id>.permissions`](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idpermissions)\n\n  > \\[!NOTE]\n  >\n  > * Wenn im aufrufenden Auftrag `jobs.<job_id>.permissions` nicht angegeben ist, verfügt der aufgerufene Workflow über die Standardberechtigungen für `GITHUB_TOKEN`. Weitere Informationen finden Sie unter [Workflowsyntax für GitHub Actions](/de/enterprise-cloud@latest/actions/reference/workflow-syntax-for-github-actions#permissions).\n  > * Die vom aufrufenden Workflow übergebene `GITHUB_TOKEN`-Berechtigungen können vom aufgerufenen Workflow nur herabgestuft (nicht erweitert) werden.\n  > * Wenn Sie `jobs.<job_id>.concurrency.cancel-in-progress: true` verwenden, dürfen Sie für `jobs.<job_id>.concurrency.group` in den aufgerufenen und aufrufenden Workflows nicht gen gleichen Wert verwenden, da sonst der bereits ausgeführte Workflow abgebrochen wird. Ein aufgerufener Workflow verwendet den Namen des aufrufenden Workflows in ${{ github.workflow }}, also wird, wenn Sie diesen Kontext als Wert in `jobs.<job_id>.concurrency.group` sowohl im aufrufenden als auch im aufgerufenen Workflow verwenden, der Aufrufer-Workflow abgebrochen, wenn der aufgerufene Workflow ausgeführt wird.\n\n### Wie wiederverwendbare Workflows Runner nutzen\n\n#### GitHub-gehostete Runner\n\nDie Zuweisung von GitHubgehosteten Runnern wird immer nur mit dem Kontext des Aufrufers ausgewertet. Die Abrechnung für GitHub-gehostete Runner ist immer mit dem Aufrufer verknüpft. Der Aufrufer-Workflow kann keine GitHub-gehosteten Runner vom aufgerufenen Repository verwenden. Weitere Informationen finden Sie unter [Von GitHub gehostete Runner](/de/enterprise-cloud@latest/actions/using-github-hosted-runners/about-github-hosted-runners).\n\n#### Selbstgehosteten Runnern\n\nAufgerufene Workflows, die demselben Benutzer, derselben Organisation oder demselben Unternehmen gehören wie der aufrufende Workflow, können über den Kontext des Aufrufers auf selbst gehostete Runner zugreifen. Dies bedeutet, dass ein aufgerufener Workflow auf selbstgehostete Runner zugreifen kann, auf die Folgendes zutrifft:\n\n* Du befindest dich im Repository des aufrufenden Workflows.\n* In der Organisation oder dem Unternehmen des aufrufenden Repositorys, sofern der Runner dem aufrufenden Repository zur Verfügung gestellt wurde\n\n### Zugriff und Berechtigungen für geschachtelte Workflows\n\nEin Workflow, der geschachtelte wiederverwendbare Workflows enthält, schlägt fehl, wenn einer der geschachtelten Workflows für den anfänglichen aufrufenden Workflow nicht zugänglich ist. Weitere Informationen findest du unter [Zugriff auf wiederverwendbare Workflows](#access-to-reusable-workflows).\n\n```\n          `GITHUB_TOKEN`-Berechtigungen müssen in geschachtelten Workflows identisch oder restriktiver sein. In der Workflowkette A > B > C gilt beispielsweise Folgendes: Wenn Workflow A über die Tokenberechtigung `package: read` verfügt, können B und C nicht die Berechtigung `package: write` aufweisen. Weitere Informationen finden Sie unter [AUTOTITLE](/actions/security-guides/automatic-token-authentication).\n```\n\nInformationen dazu, wie du mithilfe der API ermitteln kannst, welche Workflowdateien an einer bestimmten Workflowausführung beteiligt waren, findest du unter [Wiederverwenden von Workflows](/de/enterprise-cloud@latest/actions/how-tos/sharing-automations/reuse-workflows#monitoring-which-workflows-are-being-used).\n\n### Verhalten von wiederverwendbaren Workflows beim erneuten Ausführen von Aufträgen\n\nAuf wiederverwendbare Workflows aus öffentlichen Repositorys kann mithilfe eines SHA, eines Releasetags oder eines Branchnamens verwiesen werden. Weitere Informationen finden Sie unter [Wiederverwenden von Workflows](/de/enterprise-cloud@latest/actions/using-workflows/reusing-workflows#calling-a-reusable-workflow).\n\nWenn du einen Workflow, der einen wiederverwendbaren Workflow verwendet, erneut ausführst, und der Verweis kein SHA-Verweis ist, sind einige Verhaltensweisen zu beachten:\n\n* Bei erneuter Ausführung aller Aufträge in einem Workflow wird der wiederverwendbare Workflow aus dem angegebenen Verweis verwendet. Weitere Informationen zum erneuten Ausführen aller Aufträge in einem Workflow findest du unter [Erneutes Ausführen von Workflows und Jobs](/de/enterprise-cloud@latest/actions/managing-workflow-runs/re-running-workflows-and-jobs#re-running-all-the-jobs-in-a-workflow).\n* Beim erneuten Ausführen fehlerhafter Aufträge oder eines bestimmten Auftrags in einem Workflow wird der wiederverwendbare Workflow aus dem Commit-SHA des ersten Versuches verwendet. Weitere Informationen zum erneuten Ausführen fehlerhafter Aufträge in einem Workflow findest du unter [Erneutes Ausführen von Workflows und Jobs](/de/enterprise-cloud@latest/actions/managing-workflow-runs/re-running-workflows-and-jobs#re-running-failed-jobs-in-a-workflow). Weitere Informationen zum erneuten Ausführen eines bestimmten Auftrags in einem Workflow findest du unter [Erneutes Ausführen von Workflows und Jobs](/de/enterprise-cloud@latest/actions/managing-workflow-runs/re-running-workflows-and-jobs#re-running-a-specific-job-in-a-workflow).\n\n### Kontext `github`\n\nWenn ein wiederverwendbarer Workflow durch einen aufrufenden Workflow ausgelöst wird, wird der Kontext `github` immer dem aufrufenden Workflow zugeordnet. Dem aufgerufenen Workflow wird automatisch Zugriff auf `github.token` und `secrets.GITHUB_TOKEN` gewährt. Weitere Informationen zum `github`-Kontext findest du unter [Kontextreferenz](/de/enterprise-cloud@latest/actions/learn-github-actions/contexts#github-context).\n\n## Workflowvorlagen\n\nReferenzinformationen, die beim Erstellen von Workflowvorlagen für deine Organisation verwendet werden sollen\n\n### Verfügbarkeit von Workflowvorlagen\n\nDu kannst Vorlagen in Repositorys verwenden, die mit dem Vorlagenrepository übereinstimmen oder eine eingeschränktere Sichtbarkeit als das Vorlagenrepository aufweisen.\n\n* Workflowvorlagen in einem öffentlichen `.github`-Repository sind für alle Repositorytypen verfügbar.\n* Workflowvorlagen in einem internen `.github`-Repository sind lediglich für interne und private Repositorys verfügbar.\n* Workflowvorlagen in einem privaten `.github`-Repository sind ausschließlich für private Repositorys verfügbar.\n\nDa öffentliche Workflowvorlagen ein öffentliches `.github` Repository erfordern, sind sie für Enterprise Managed Users nicht verfügbar.\n\n### Gewähren des Zugriffs für private oder interne Repositorys\n\nWenn du ein privates oder internes `.github`-Repository verwendest, musst du Benutzern oder Teams Lesezugriff gewähren, die die Vorlagen verwenden können sollten.\n\n### Platzhalter `$default-branch`\n\nWenn du auf den Standardbranch eines Repositorys verweisen musst, kannst du in deiner Workflowvorlage den Platzhalter `$default-branch` verwenden. Wenn ein Workflow erstellt wird, wird der Platzhalter automatisch durch den Namen des Standardzweigs des Repositorys ersetzt.\n\n### Beispieldatei für eine Workflowvorlage\n\nDie Datei `octo-organization-ci.yml` veranschaulicht einen einfachen Workflow.\n\n```yaml copy\nname: Octo Organization CI\non:\n  push:\n    branches: [ $default-branch ]\n  pull_request:\n    branches: [ $default-branch ]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - name: Run a one-line script\n        run: echo Hello from Octo Organization\n```\n\n### Anforderungen an Metadatendateien\n\nDie Metadatendatei muss denselben Namen wie die Workflowdatei tragen, aber statt der `.yml`-Erweiterung muss `.properties.json` angefügt sein. Beispielsweise enthält die Datei `octo-organization-ci.properties.json` die Metadatei für den Workflow `octo-organization-ci.yml`:\n\n```json copy\n{\n    \"name\": \"Octo Organization Workflow\",\n    \"description\": \"Octo Organization CI workflow template.\",\n    \"iconName\": \"example-icon\",\n    \"categories\": [\n        \"Go\"\n    ],\n    \"filePatterns\": [\n        \"package.json$\",\n        \"^Dockerfile\",\n        \".*\\\\.md$\"\n    ]\n}\n```\n\n* `name`\n  \\-\n  **Muss angegeben werden.** Der Name des Workflows. Dieser wird in der Liste der verfügbaren Workflows angezeigt.\n\n* `description`\n  \\-\n  **Muss angegeben werden.** Die Beschreibung des Workflows. Dieser wird in der Liste der verfügbaren Workflows angezeigt.\n\n* `iconName`\n  \\-\n  **Optional:** Legt ein Symbol für den Workflow fest, das in der Liste der Workflows angezeigt wird.\n  `iconName` kann eine der folgenden Typen sein:\n  * Eine SVG-Datei, die im Verzeichnis `workflow-templates` gespeichert ist. Um auf eine Datei zu verweisen, muss der Wert dem Dateinamen ohne Dateierweiterung entsprechen. Beispielsweise wird auf eine SVG-Datei mit dem Namen `example-icon.svg` als `example-icon` verwiesen.\n  * Ein Symbol aus der [Octicon](https://primer.style/octicons/)-Gruppe von GitHub. Um auf ein Octicon zu verweisen, muss der Wert `octicon <icon name>` lauten. Beispiel: `octicon smiley`.\n\n* `categories`\n  \\-\n  **Optional:** Definiert die Kategorien, unter denen der Workflow angezeigt wird. Du kannst Kategorienamen aus den folgenden Listen verwenden:\n  * Allgemeine Kategorienamen aus dem Repository [starter-workflows](https://github.com/actions/starter-workflows/blob/main/README.md#categories).\n  * Linguist-Sprachen aus der Liste im Repository [linguist](https://github.com/github-linguist/linguist/blob/main/lib/linguist/languages.yml).\n  * Unterstützte Technologiestapel aus der Liste im Repository [starter-workflows](https://github.com/github-starter-workflows/repo-analysis-partner/blob/main/tech_stacks.yml).\n\n* `filePatterns`\n  \\-\n  **Optional:** Dies ermöglicht die Verwendung des Workflows, wenn sich im Repository des Benutzers bzw. der Benutzerin eine Datei im Stammverzeichnis befindet, die einem definierten regulären Ausdruck entspricht.\n\n## YAML-Anker und -Aliase\n\nDu kannst YAML-Anker und Aliase verwenden, um Wiederholungen in deinen Workflows zu reduzieren. Ein Anker (durch `&` gekennzeichnet) identifiziert einen Inhalt, den du wiederverwenden möchtest, wohingegen ein Alias (durch `*`gekennzeichnet) diesen Inhalt an einer anderen Stelle wiederholt.\n\nAusführliche Informationen zu Ankern und Aliasen findest du unter [Knotenanker und -aliase in der YAML-Spezifikation](https://yaml.org/spec/1.2.2/#3222-anchors-and-aliases).\n\nIm folgenden Beispiel werden YAML-Anker und -Aliase mit Umgebungsvariablen verwendet:\n\n```yaml\njobs:\n  job1:\n    env: &env_vars # Define the anchor on first use\n      NODE_ENV: production\n      DATABASE_URL: ${{ secrets.DATABASE_URL }}\n    steps:\n      - run: echo \"Using production settings\"\n\n  job2:\n    env: *env_vars # Reuse the environment variables\n    steps:\n      - run: echo \"Same environment variables here\"\n```\n\nDas entspricht dem Schreiben des folgenden YAML-Codes ohne Anker und Aliase:\n\n```yaml\njobs:\n  job1:\n    env:\n      NODE_ENV: production\n      DATABASE_URL: ${{ secrets.DATABASE_URL }}\n    steps:\n      - run: echo \"Using production settings\"\n\n  job2:\n    env:\n      NODE_ENV: production\n      DATABASE_URL: ${{ secrets.DATABASE_URL }}\n    steps:\n      - run: echo \"Same environment variables here\"\n```\n\nDu kannst Anker außerdem für komplexere Konfigurationen wie die Wiederverwendung einer gesamten Auftragskonfiguration verwenden:\n\n```yaml\njobs:\n  test: &base_job # Define the anchor on first use\n    runs-on: ubuntu-latest\n    timeout-minutes: 30\n    env:\n      NODE_VERSION: '18'\n    steps:\n      - uses: actions/checkout@v6\n      - name: Set up Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: ${{ env.NODE_VERSION }}\n      - run: npm test\n\n  alt-test: *base_job # Reuse the entire job configuration\n```"}