{"meta":{"title":"Migrieren von Travis CI zu GitHub Actions","intro":"GitHub Actions und Travis CI haben mehrere Ähnlichkeiten, was die Migration zu GitHub Actions relativ einfach macht.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/actions","title":"GitHub Actions"},{"href":"/de/actions/tutorials","title":"Anleitungen"},{"href":"/de/actions/tutorials/migrate-to-github-actions","title":"Migrieren zu GitHub Actions"},{"href":"/de/actions/tutorials/migrate-to-github-actions/manual-migrations","title":"Manuelles Migrieren"},{"href":"/de/actions/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-travis-ci","title":"Migrieren von Travis CI"}],"documentType":"article"},"body":"# Migrieren von Travis CI zu GitHub Actions\n\nGitHub Actions und Travis CI haben mehrere Ähnlichkeiten, was die Migration zu GitHub Actions relativ einfach macht.\n\n## Einführung\n\nDiese Anleitung unterstützt dich bei der Migration von Travis CI zu GitHub Actions. Sie vergleicht die jeweiligen Konzepte und die jeweilige Syntax, beschreibt die Ähnlichkeiten und veranschaulicht die unterschiedlichen Ansätze für gängige Aufgaben.\n\n## Bevor Sie beginnen\n\nVor Beginn der Migration zu GitHub Actions ist es hilfreich, sich mit deren Funktionsweise vertraut zu machen:\n\n* Ein kurzes Beispiel mit einem GitHub Actions-Auftrag findest du unter [Schnellstart für GitHub Actions](/de/actions/quickstart).\n* Weitere Informationen zu den wesentlichen GitHub Actions-Konzepten findest du unter [Grundlegendes zu GitHub Actions](/de/actions/learn-github-actions/understanding-github-actions).\n\n## Vergleichen der Auftragsausführung\n\nDamit du steuern kannst, wann CI-Aufgaben ausgeführt werden, verwendet ein GitHub Actions-*Workflow\\_\\_Aufträge*, die standardmäßig parallel ausgeführt werden. Jeder Auftrag enthält *Schritte*, die in einer festgelegten Abfolge ausgeführt werden. Wenn du Setup- und Bereinigungsaktionen für einen Auftrag ausführen musst, kannst du dafür Schritte im jeweiligen Auftrag definieren.\n\n## Wichtige Ähnlichkeiten\n\nGitHub Actions und Travis CI weisen bestimmte gemeinsame Ähnlichkeiten auf, deren Verständnis im Voraus helfen kann, den Migrationsprozess reibungslos zu gestalten.\n\n### Verwenden der YAML-Syntax\n\nTravis CI und GitHub Actions verwenden YAML zum Erstellen von Aufträgen und Workflows. Diese Dateien werden im Code-Repository gespeichert. Weitere Informationen zum Verwenden von YAML in GitHub Actions findest du unter [Grundlegendes zu GitHub Actions](/de/actions/learn-github-actions/understanding-github-actions#create-an-example-workflow).\n\n### Benutzerdefinierte Variablen\n\nMit Travis CI kannst du Variablen festlegen und phasenübergreifend verwenden. Ebenso bietet GitHub Actions die Möglichkeit, Variablen für Workflows zu definieren. Weitere Informationen finden Sie unter [Speichern von Informationen in Variablen](/de/actions/learn-github-actions/variables).\n\n### Standardvariablen\n\nTravis CI und GitHub Actions enthalten Standardumgebungsvariablen, die du in YAML-Dateien verwenden kannst. Diese sind für GitHub Actions unter [Referenz für Variablen](/de/actions/reference/variables-reference#default-environment-variables) aufgelistet.\n\n### Parallele Verarbeitung von Jobs\n\nTravis CI kann `stages` verwenden, um Aufträge parallel auszuführen. Genauso führt GitHub Actions `jobs` parallel aus. Weitere Informationen finden Sie unter [Workflows](/de/actions/using-workflows/about-workflows#creating-dependent-jobs).\n\n### Statusbadges\n\nTravis CI und GitHub Actions unterstützen Statusbadges, mit denen du angeben kannst, ob ein Build erfolgreich durchgeführt wurde oder fehlgeschlagen ist.\nWeitere Informationen finden Sie unter [Hinzufügen eines Badges für den Workflowstatus](/de/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge).\n\n### Verwenden einer Matrix\n\nTravis CI und GitHub Actions unterstützen eine Matrix, damit du Tests mit mehreren Kombinationen von Betriebssystemen und Softwarepaketen durchführen kannst. Weitere Informationen finden Sie unter [Varianten von Aufgaben in einem Workflow ausführen](/de/actions/using-jobs/using-a-matrix-for-your-jobs).\n\nNachfolgend findest du einen exemplarischen Vergleich für die Syntax in jedem System.\n\n#### Travis CI-Syntax für eine Matrix\n\n```yaml\nmatrix:\n  include:\n    - rvm: '2.5'\n    - rvm: '2.6.3'\n```\n\n#### GitHub Actions-Syntax für eine Matrix\n\n```yaml\njobs:\n  build:\n    strategy:\n      matrix:\n        ruby: ['2.5', '2.6.3']\n```\n\n### Festlegen von bestimmten Branchen als Ziel\n\nTravis CI und GitHub Actions bieten beide die Möglichkeit, einen bestimmten Branch als Zielbranch für CI zu bestimmen. Weitere Informationen finden Sie unter [Workflowsyntax für GitHub Actions](/de/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore).\n\nNachfolgend ein Beispiel für die Syntax in jedem System.\n\n#### Travis CI-Syntax für spezifische Branches\n\n```yaml\nbranches:\n  only:\n    - main\n    - 'mona/octocat'\n```\n\n#### GitHub Actions-Syntax für bestimmte Branches\n\n```yaml\non:\n  push:\n    branches:\n      - main\n      - 'mona/octocat'\n```\n\n### Auschecken von Untermodulen\n\nTravis CI und GitHub Actions bieten die Möglichkeit, zu steuern, ob Untermodule im Repositoryklon enthalten sind.\n\nNachfolgend ein Beispiel für die Syntax in jedem System.\n\n#### Travis CI-Syntax zum Auschecken von Untermodulen\n\n```yaml\ngit:\n  submodules: false\n```\n\n#### GitHub Actions-Syntax zum Auschecken von Untermodulen\n\n```yaml\n- uses: actions/checkout@v6\n  with:\n    submodules: false\n```\n\n### Verwenden von Umgebungsvariablen in einer Matrix\n\nTravis CI und GitHub Actions können benutzerdefinierte Variablen zu einer Testmatrix hinzufügen, sodass du in einem späteren Schritt auf die Variable verweisen kannst.\n\nIn GitHub Actions kannst du den `include`-Schlüssel verwenden, um einer Matrix benutzerdefinierte Umgebungsvariablen hinzuzufügen. In diesem Beispiel sind die Matrixeinträge für `node-version` so konfiguriert, dass verschiedene Werte für die Umgebungsvariablen `site` und `datacenter` verwendet werden. Der Schritt `Echo site details` verwendet dann `env: ${{ matrix.env }}`, um auf die benutzerdefinierten Variablen zu verweisen:\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n       include:\n         - node-version: '14.x'\n           site: \"prod\"\n           datacenter: \"site-a\"\n         - node-version: '16.x'\n           site: \"dev\"\n           datacenter: \"site-b\"\n    steps:\n      - name: Echo site details\n        env:\n          SITE: ${{ matrix.site }}\n          DATACENTER: ${{ matrix.datacenter }}\n        run: echo $SITE $DATACENTER\n```\n\n## Wichtige Funktionen in GitHub Actions\n\nBerücksichtige beim Migrieren von Travis CI die folgenden wichtigen Features in GitHub Actions:\n\n### Speichern von Geheimnissen\n\nGitHub Actions bietet die Möglichkeit, Geheimnisse zu speichern und in Aufträgen darauf zu verweisen. GitHub Actions-Organisationen können einschränken, welche Repositories auf Organisationsgeheimnisse zugreifen dürfen. Regeln für den Bereitstellungsschutz können eine manuelle Genehmigung für einen Workflow vorschreiben, um auf Umgebungsgeheimnisse zugreifen zu können. Weitere Informationen finden Sie unter [Geheimnisse](/de/actions/security-for-github-actions/security-guides/about-secrets).\n\n### Gemeinsame Verwendung von Dateien in Aufträgen und Workflows\n\nGitHub Actions umfasst eine integrierte Unterstützung für die Speicherung von Artefakten, sodass du Dateien zwischen Jobs in einem Workflow teilen kannst. Du kannst die resultierenden Dateien auch speichern und für andere Workflows verwenden. Weitere Informationen finden Sie unter [Grundlegendes zu GitHub Actions](/de/actions/learn-github-actions/essential-features-of-github-actions#sharing-data-between-jobs).\n\n### Ihre eigenen Runner hosten\n\nWenn für Aufträge bestimmte Hardware oder Software erforderlich ist, bietet GitHub Actions die Möglichkeit, einen eigenen Runner zu hosten, an den die Aufträge zur Verarbeitung gesendet werden. GitHub Actions bietet auch die Möglichkeit, über Richtlinien zu steuern, wie der Zugriff auf diese Runner erfolgt und wie Zugriff auf Organisations- oder Repositoryebene gewährt wird. Weitere Informationen finden Sie unter [Verwalten von selbstgehosteten Runnern](/de/actions/how-tos/managing-self-hosted-runners).\n\n### Gleichzeitige Aufträge und Ausführungszeit\n\nDie gleichzeitigen Aufträge und Workflowausführungszeiten in GitHub Actions können je nach GitHub-Plan variieren. Weitere Informationen finden Sie unter [Abrechnung und Verbrauch](/de/actions/learn-github-actions/usage-limits-billing-and-administration).\n\n### Verwenden verschiedener Sprachen in GitHub Actions\n\nBei der Arbeit mit verschiedenen Sprachen in GitHub Actions kannst du einen Schritt in deinem Workflow hinzufügen, um die Sprachabhängigkeiten einzurichten. Weitere Informationen zum Arbeiten mit einer bestimmten Sprache findest du unter [Deinen Code bauen und testen](/de/actions/use-cases-and-examples/building-and-testing).\n\n## Ausführung von Skripts\n\nGitHub Actions kann `run`-Schritte zum Ausführen von Skripts oder Shellbefehlen verwenden. Um eine bestimmte Shell zu verwenden, kannst du den `shell`-Typ angeben, wenn der Pfad zum Skript angegeben wird. Weitere Informationen finden Sie unter [Workflowsyntax für GitHub Actions](/de/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun).\n\nZum Beispiel:\n\n```yaml\nsteps:\n  - name: Run build script\n    run: ./.github/scripts/build.sh\n    shell: bash\n```\n\n## Fehlerbehandlung in GitHub Actions\n\nBei der Migration zu GitHub Actions gibt es verschiedene Ansätze für die Fehlerbehandlung, die du kennen solltest.\n\n### Fehlerbehandlung für Skripts\n\nGitHub Actions beendet einen Auftrag sofort, wenn einer der Schritte einen Fehlercode zurückgibt. Weitere Informationen finden Sie unter [Workflowsyntax für GitHub Actions](/de/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference).\n\n### Fehlerbehandlung für Aufträge\n\nGitHub Actions verwendet `if`-Bedingungen für die situationsabhängige Ausführung von Aufträgen oder Schritten. Du kannst beispielsweise einen Schritt ausführen, wenn ein anderer Schritt zu einem Fehler (`failure()`) führt. Weitere Informationen finden Sie unter [Workflowsyntax für GitHub Actions](/de/actions/using-workflows/workflow-syntax-for-github-actions#example-using-status-check-functions). Du kannst auch [`continue-on-error`](/de/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error) verwenden, um zu verhindern, dass eine Workflowausführung beendet wird, wenn ein Auftrag fehlschlägt.\n\n## Migrieren der Syntax für Bedingungen und Ausdrücke\n\nUm Aufträge mit Bedingungsausdrücken auszuführen, verwenden Travis CI und GitHub Actions eine ähnliche `if`-Bedingungssyntax. GitHub Actions bietet die Möglichkeit, die `if`-Bedingung zu verwenden, damit ein Auftrag oder ein Schritt nur ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist. Weitere Informationen finden Sie unter [Auswerten von Ausdrücken in Workflows und Aktionen](/de/actions/learn-github-actions/expressions).\n\nIn diesem Beispiel wird veranschaulicht, wie eine `if`-Bedingung steuern kann, ob ein Schritt ausgeführt wird:\n\n```yaml\njobs:\n  conditional:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"This step runs with str equals 'ABC' and num equals 123\"\n        if: env.str == 'ABC' && env.num == 123\n```\n\n## Migrieren von Phasen in Schritte\n\nWenn Travis CI *Phasen* zum Ausführen von *Schritten* verwendet, umfasst GitHub Actions *Schritte*, die *Aktionen* ausführen. Du findest vordefinierte Aktionen im [GitHub Marketplace](https://github.com/marketplace?type=actions), oder du kannst eigene Aktionen erstellen. Weitere Informationen finden Sie unter [Wiederverwenden von Automatisierungen](/de/actions/creating-actions).\n\nNachfolgend ein Beispiel für die Syntax in jedem System.\n\n### Travis CI-Syntax für Phasen und Schritte\n\n```yaml\nlanguage: python\npython:\n  - \"3.7\"\n\nscript:\n  - python script.py\n```\n\n### GitHub Actions-Syntax für Schritte und Aktionen\n\n```yaml\njobs:\n  run_python:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/setup-python@v5\n        with:\n          python-version: '3.7'\n          architecture: 'x64'\n      - run: python script.py\n```\n\n## Abhängigkeiten „cachen“ (zwischenspeichern)\n\nTravis CI und GitHub Actions bieten die Möglichkeit, Abhängigkeiten manuell zwischenzuspeichern, um sie später wiederzuverwenden.\n\nIn diesem Beispiel wird die Cachesyntax für die einzelnen Systeme veranschaulicht.\n\n### Travis CI-Syntax für das Zwischenspeichern\n\n```yaml\nlanguage: node_js\ncache: npm\n```\n\n### GitHub Actions Syntax für die Zwischenspeicherung\n\n```yaml\n- name: Cache node modules\n  uses: actions/cache@v4\n  with:\n    path: ~/.npm\n    key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}\n    restore-keys: v1-npm-deps-\n```\n\n## Beispiele für häufige Aufgaben\n\nIn diesem Abschnitt wird verglichen, wie GitHub Actions und Travis CI häufige Aufgaben ausführen.\n\n### Konfigurieren von Umgebungsvariablen\n\nDu kannst benutzerdefinierte Umgebungsvariablen in einem GitHub Actions-Auftrag erstellen.\n\n#### Travis CI-Syntax für eine Umgebungsvariable\n\n```yaml\nenv:\n  - MAVEN_PATH=\"/usr/local/maven\"\n```\n\n#### GitHub Actions-Workflow mit einer Umgebungsvariablen\n\n```yaml\njobs:\n  maven-build:\n    env:\n      MAVEN_PATH: '/usr/local/maven'\n```\n\n### Erstellen mit Node.js\n\n#### Travis CI für das Bauen mit Node.js\n\n```yaml\ninstall:\n  - npm install\nscript:\n  - npm run build\n  - npm test\n```\n\n#### GitHub Actions-Workflow zum Erstellen mit Node.js\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '16.x'\n      - run: npm install\n      - run: npm run build\n      - run: npm test\n```\n\n## Nächste Schritte\n\nWeitere Informationen zu den wichtigsten Features von GitHub Actions findest du unter [Schreiben von Workflows](/de/actions/learn-github-actions)."}