Diese Anleitung unterstützt dich bei der Migration von Travis CI zu Actions. Sie vergleicht die jeweiligen Konzepte und die jeweilige Syntax, beschreibt die Ähnlichkeiten und veranschaulicht die unterschiedlichen Ansätze für gängige Aufgaben.
Vor Beginn der Migration zu Actions ist es hilfreich, sich mit deren Funktionsweise vertraut zu machen:
- Ein kurzes Beispiel mit einem Actions-Auftrag findest du unter Schnellstart für Actions.
- Weitere Informationen zu den wesentlichen Actions-Konzepten findest du unter Grundlegendes zu Actions.
Damit du steuern kannst, wann CI-Aufgaben ausgeführt werden, verwendet ein 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.
Actions und Travis CI weisen bestimmte gemeinsame Ähnlichkeiten auf, deren Verständnis im Voraus helfen kann, den Migrationsprozess reibungslos zu gestalten.
Travis CI und Actions verwenden YAML zum Erstellen von Aufträgen und Workflows. Diese Dateien werden im Code-Repository gespeichert. Weitere Informationen zum Verwenden von YAML in Actions findest du unter Grundlegendes zu Actions.
Mit Travis CI kannst du Variablen festlegen und phasenübergreifend verwenden. Ebenso bietet Actions die Möglichkeit, Variablen für Workflows zu definieren. Weitere Informationen finden Sie unter Speichern von Informationen in Variablen.
Travis CI und Actions enthalten Standardumgebungsvariablen, die du in YAML-Dateien verwenden kannst. Diese sind für Actions unter Speichern von Informationen in Variablen aufgelistet.
Travis CI kann stages
verwenden, um Aufträge parallel auszuführen. Genauso führt Actions jobs
parallel aus. Weitere Informationen finden Sie unter Informationen zu Workflows.
Travis CI und Actions unterstützen Statusbadges, mit denen du angeben kannst, ob ein Build erfolgreich durchgeführt wurde oder fehlgeschlagen ist. Weitere Informationen finden Sie unter Hinzufügen eines Badges für den Workflowstatus.
Travis CI und Actions unterstützen eine Matrix, damit du Tests mit mehreren Kombinationen von Betriebssystemen und Softwarepaketen durchführen kannst. Weitere Informationen finden Sie unter Ausführen von Variationen von Aufträgen in einem Workflow.
Nachfolgend findest du einen exemplarischen Vergleich für die Syntax in jedem System.
matrix:
include:
- rvm: '2.5'
- rvm: '2.6.3'
jobs:
build:
strategy:
matrix:
ruby: ['2.5', '2.6.3']
Travis CI um Actions bieten die Möglichkeit, einen bestimmten Branch als Ziel für CI festzulegen. Weitere Informationen finden Sie unter Workflowsyntax für Actions.
Nachfolgend ein Beispiel für die Syntax in jedem System.
branches:
only:
- main
- 'mona/octocat'
on:
push:
branches:
- main
- 'mona/octocat'
Travis CI und Actions bieten die Möglichkeit, zu steuern, ob Untermodule im Repositoryklon enthalten sind.
Nachfolgend ein Beispiel für die Syntax in jedem System.
git:
submodules: false
- uses: actions/checkout@v4
with:
submodules: false
Travis CI und Actions können benutzerdefinierte Variablen zu einer Testmatrix hinzufügen, sodass du in einem späteren Schritt auf die Variable verweisen kannst.
In 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:
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- node-version: '14.x'
site: "prod"
datacenter: "site-a"
- node-version: '16.x'
site: "dev"
datacenter: "site-b"
steps:
- name: Echo site details
env:
SITE: ${{ matrix.site }}
DATACENTER: ${{ matrix.datacenter }}
run: echo $SITE $DATACENTER
Berücksichtige beim Migrieren von Travis CI die folgenden wichtigen Features in Actions:
Actions bietet die Möglichkeit, Geheimnisse zu speichern und in Aufträgen darauf zu verweisen. 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 Informationen zu Geheimnissen.
Actions umfasst eine integrierte Unterstützung für die Speicherung von Artefakten, sodass du Dateien in den Aufträgen eines Workflows gemeinsam verwenden kannst. Du kannst die resultierenden Dateien auch speichern und für andere Workflows verwenden. Weitere Informationen finden Sie unter Grundlegendes zu Actions.
Wenn für Aufträge bestimmte Hardware oder Software erforderlich ist, bietet Actions die Möglichkeit, einen eigenen Runner zu hosten, an den die Aufträge zur Verarbeitung gesendet werden. 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 Deinen eigenen Runner hosten.
Die gleichzeitigen Aufträge und Workflowausführungszeiten in Actions können je nach -Plan variieren. Weitere Informationen finden Sie unter Nutzungseinschränkungen, Abrechnung und Verwaltung.
Bei Verwendung verschiedener Sprachen in Actions kannst du einen Schritt im Auftrag erstellen, um Sprachabhängigkeiten einzurichten. Weitere Informationen zum Arbeiten mit einer bestimmten Sprache findest du unter Erstellen und Testen.
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 Actions.
Zum Beispiel:
steps:
- name: Run build script
run: ././scripts/build.sh
shell: bash
Bei der Migration zu Actions gibt es verschiedene Ansätze für die Fehlerbehandlung, die du kennen solltest.
Actions beendet einen Auftrag sofort, wenn einer der Schritte einen Fehlercode zurückgibt. Weitere Informationen finden Sie unter Workflowsyntax für Actions.
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 Actions. Du kannst auch continue-on-error
verwenden, um zu verhindern, dass eine Workflowausführung beendet wird, wenn ein Auftrag fehlschlägt.
Um Aufträge mit Bedingungsausdrücken auszuführen, verwenden Travis CI und Actions eine ähnliche if
-Bedingungssyntax. 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.
In diesem Beispiel wird veranschaulicht, wie eine if
-Bedingung steuern kann, ob ein Schritt ausgeführt wird:
jobs:
conditional:
runs-on: ubuntu-latest
steps:
- run: echo "This step runs with str equals 'ABC' and num equals 123"
if: env.str == 'ABC' && env.num == 123
Wenn Travis CI Phasen zum Ausführen von Schritten verwendet, umfasst Actions Schritte, die Aktionen ausführen. Du findest vordefinierte Aktionen im Marketplace, oder du kannst eigene Aktionen erstellen. Weitere Informationen finden Sie unter Freigeben von Automatisierungen.
Nachfolgend ein Beispiel für die Syntax in jedem System.
language: python
python:
- "3.7"
script:
- python script.py
jobs:
run_python:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.7'
architecture: 'x64'
- run: python script.py
Travis CI und Actions bieten die Möglichkeit, Abhängigkeiten manuell zwischenzuspeichern, um sie später wiederzuverwenden.
In diesem Beispiel wird die Cachesyntax für die einzelnen Systeme veranschaulicht.
language: node_js
cache: npm
- name: Cache node modules
uses: actions/cache@v4
with:
path: ~/.npm
key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
restore-keys: v1-npm-deps-
In diesem Abschnitt wird verglichen, wie Actions und Travis CI häufige Aufgaben ausführen.
Du kannst benutzerdefinierte Umgebungsvariablen in einem Actions-Auftrag erstellen.
env:
- MAVEN_PATH="/usr/local/maven"
jobs:
maven-build:
env:
MAVEN_PATH: '/usr/local/maven'
install:
- npm install
script:
- npm run build
- npm test
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '16.x'
- run: npm install
- run: npm run build
- run: npm test
Weitere Informationen zu den wichtigsten Features von Actions findest du unter Schreiben von Workflows.