Informationen zum Migrieren von GitLab mit GitHub Actions Importer
Die folgenden Anweisungen helfen Ihnen bei der Konfiguration Ihrer Umgebung für die Verwendung von GitHub Actions Importer zur Migration von GitLab-Pipelines zu GitHub Actions.
Voraussetzungen
- Ein GitLab-Konto oder eine Organisation mit Pipelines und Aufträgen, die Sie in GitHub Actions Workflows konvertieren möchten.
- Zugriff zum Erstellen eines GitLab personal access token für Ihr Konto oder Ihre Organisation.
- Eine Umgebung, in der du Linux-basierte Container ausführen und die erforderlichen Tools installieren kannst:
-
Docker ist installiert und wird ausgeführt.
-
Die GitHub-CLI ist installiert.
Hinweis
Der GitHub Actions Importer-Container und die CLI müssen nicht auf demselben Server wie deine CI-Plattform installiert werden.
-
Einschränkungen
Es gibt einige Einschränkungen für die automatische Migration von Prozessen aus GitLab-Pipelines zu GitHub Actions mit GitHub Actions Importer.
- Die automatische Zwischenspeicherung zwischen Aufträgen verschiedener Workflows wird nicht unterstützt.
- Der Befehl
auditwird nur unterstützt, wenn ein Organisationskonto verwendet wird. Die Befehledry-runundmigratekönnen jedoch mit einem Organisations- oder Benutzerkonto verwendet werden.
Manuelle Aufgaben
Bestimmte GitLab-Konstrukte müssen manuell migriert werden. Dazu gehören:
- Maskierte Projekt- oder Gruppenvariablenwerte
- Artefaktberichte
Weitere Informationen zu manuellen Migrationen findest du unter Migrieren von GitLab CI/CD zu GitHub Actions.
Installieren der GitHub Actions Importer CLI-Erweiterung
-
So installierst du die GitHub Actions Importer-CLI-Erweiterung:
Bash gh extension install github/gh-actions-importer
gh extension install github/gh-actions-importer -
Überprüfe, ob die Erweiterung installiert ist:
$ gh actions-importer -h Options: -?, -h, --help Show help and usage information Commands: update Update to the latest version of GitHub Actions Importer. version Display the version of GitHub Actions Importer. configure Start an interactive prompt to configure credentials used to authenticate with your CI server(s). audit Plan your CI/CD migration by analyzing your current CI/CD footprint. forecast Forecast GitHub Actions usage from historical pipeline utilization. dry-run Convert a pipeline to a GitHub Actions workflow and output its yaml file. migrate Convert a pipeline to a GitHub Actions workflow and open a pull request with the changes.
Konfigurieren von Anmeldeinformationen
Der configure CLI-Befehl wird verwendet, um erforderliche Anmeldeinformationen und Optionen für GitHub Actions Importer bei der Arbeit mit GitLab und GitHub festzulegen.
-
Erstellen Sie eine GitHubpersonal access token (classic). Weitere Informationen finden Sie unter Verwalten deiner persönlichen Zugriffstoken.
Ihr Token muss den
workflowBereich haben.Kopiere das Token nach dem Erstellen zur späteren Verwendung an einen sicheren Speicherort.
-
Erstellen Sie ein GitLab personal access token. Weitere Informationen finden Sie Personal access tokens in der GitLab-Dokumentation.
Ihr Token muss den
read_apiBereich haben.Kopiere das Token nach dem Erstellen zur späteren Verwendung an einen sicheren Speicherort.
-
Führen Sie in Ihrem Terminal den CLI-Befehl GitHub Actions Importer
configureaus.gh actions-importer configureSie werden vom Befehl
configurezur Eingabe folgender Informationen aufgefordert:- Für "Welche CI-Anbieter konfigurieren Sie?", verwenden Sie die Pfeiltasten, um
GitLabzu wählen, drücken Sie die Leertaste, um es auszuwählen, und drücken Sie dann Enter. - Geben Sie für "Personal access token für GitHub" den zuvor erstellten Wert von personal access token (classic) ein und drücken Sie die EINGABETASTE.
- Geben Sie für "Basis-URL der GitHub-Instanz" die URL deine GitHub Enterprise Server-Instanz ein, und drücken Sie die EINGABETASTE.
- Geben Sie für "Privates Token für GitLab" den Wert für das zuvor erstellte GitLab personal access token ein, und drücken Sie die EINGABETASTE.
- Gib als „Basis-URL der GitLab-Instanz“ die URL deiner GitLab-Instanz ein, und drücke die EINGABETASTE.
Ein Beispiel für die Ausgabe des Befehls
configurewird unten gezeigt.$ gh actions-importer configure ✔ Which CI providers are you configuring?: GitLab Enter the following values (leave empty to omit): ✔ Personal access token for GitHub: *************** ✔ Base url of the GitHub instance: https://github.com ✔ Private token for GitLab: *************** ✔ Base url of the GitLab instance: http://localhost Environment variables successfully updated. - Für "Welche CI-Anbieter konfigurieren Sie?", verwenden Sie die Pfeiltasten, um
-
Führen Sie in Ihrem Terminal den GitHub Actions Importer
updateCLI-Befehl aus, um eine Verbindung herzustellen GitHub PackagesContainer registry und sicherzustellen, dass das Containerimage auf die neueste Version aktualisiert wird:gh actions-importer updateDie Ausgabe dieses Befehls sollte in etwa wie folgt aussehen:
Updating ghcr.io/actions-importer/cli:latest... ghcr.io/actions-importer/cli:latest up-to-date
Audit von GitLab durchführen
Mit dem Befehl audit kannst du eine allgemeine Ansicht aller Pipelines auf einem GitLab-Server abrufen.
Mit dem Befehl audit werden die folgenden Aktionen ausgeführt:
- Abrufen aller auf einem GitLab-Server definierten Projekte
- Konvertiert jede Pipeline in den entsprechenden GitHub Actions Workflow.
- Generiert einen Bericht, der zusammenfasst, inwieweit eine Migration mit GitHub Actions Importer vollständig und komplex möglich ist.
Voraussetzungen für den Überprüfungsbefehl
Um den audit Befehl verwenden zu können, müssen Sie über ein personal access token GitLab-Organisationskonto verfügen.
Ausführen des Überprüfungsbefehls
Um eine Überprüfung eines GitLab-Servers durchzuführen, führe den folgenden Befehl in deinem Terminal aus, und ersetze dabei my-gitlab-namespace durch den Namespace oder die Gruppe, die überprüft werden soll:
gh actions-importer audit gitlab --output-dir tmp/audit --namespace my-gitlab-namespace
Untersuchen der Überprüfungsergebnisse
Die Dateien im angegebenen Ausgabeverzeichnis enthalten die Ergebnisse der Überprüfung. Eine Zusammenfassung der Überprüfungsergebnisse findest du in der Datei audit_summary.md.
Die Überprüfungszusammenfassung enthält die folgenden Abschnitte.
Pipelines
Der Abschnitt „Pipelines“ enthält allgemeine Statistiken zur von GitHub Actions Importer erzielten Conversion-Rate.
Im Folgenden sind einige wichtige Begriffe aufgeführt, die im Abschnitt „Pipelines“ enthalten sein können:
- Erfolgreiche Pipelines hatten 100 % ihrer Pipeline-Komponenten und einzelnen Elemente automatisch in das entsprechende GitHub Actions-Äquivalent konvertiert.
- Teilweise erfolgreich waren Pipelines, bei denen alle Pipeline-Konstrukte konvertiert wurden; einige einzelne Elemente wurden jedoch nicht automatisch in ihr entsprechendes GitHub Actions-Äquivalent konvertiert.
- Nicht unterstützte Pipelines sind Definitionstypen, die von GitHub Actions Importer nicht unterstützt werden.
- Bei fehlerhaften Pipelines ist beim Konvertieren ein schwerwiegender Fehler aufgetreten. Dies kann aus drei Gründen auftreten:
- Die Pipeline war ursprünglich falsch konfiguriert und nicht gültig.
- GitHub Actions Importer Beim Konvertieren ist ein interner Fehler aufgetreten.
- Es gab eine nicht erfolgreiche Netzwerkantwort, die dazu führte, dass auf die Pipeline nicht zugegriffen werden konnte. Dies ist häufig auf ungültige Anmeldeinformationen zurückzuführen.
Buildschritte
Der Abschnitt „Buildschritte“ bietet einen Überblick über einzelne Buildschritte, die in allen Pipelines verwendet werden, und darüber, wie viele von GitHub Actions Importer automatisch konvertiert wurden.
Im Folgenden sind einige wichtige Begriffe aufgeführt, die im Abschnitt „Build-Schritte“ vorkommen können:
- Ein bekannter Build-Schritt ist ein Schritt, der automatisch in eine äquivalente Aktion umgewandelt wurde.
- Ein unbekannter Buildschritt ist ein Schritt, der nicht automatisch in eine entsprechende Aktion konvertiert wurde.
- Ein nicht unterstützter Buildschritt ist ein Schritt, der entweder:
- Grundsätzlich nicht unterstützt von GitHub Actions.
- So konfiguriert, dass sie mit GitHub Actions nicht kompatibel ist.
- Eine Aktion ist eine Liste der Aktionen, die in den konvertierten Workflows verwendet wurden. Dies kann für Folgendes wichtig sein:
- Wenn Sie GitHub Enterprise Server verwenden, wird die Liste der Aktionen zusammengestellt, die mit Ihrer Instanz synchronisiert werden sollen.
- Definieren einer Zulassungsliste der verwendeten Aktionen auf Organisationsebene. Diese Aktionenliste enthält sämtliche Aktionen, die von den Sicherheits- oder Complianceteams möglicherweise überprüft werden müssen.
Manuelle Aufgaben
Der Abschnitt "Manuelle Aufgaben" enthält eine Übersicht über Vorgänge, die GitHub Actions Importer nicht automatisch abgeschlossen werden können und dass Sie manuell ausführen müssen.
Im Folgenden sind einige wichtige Begriffe aufgeführt, die im Abschnitt „Manuelle Aufgaben“ enthalten sein können:
- Ein Geheimnis gilt auf Repository- oder Organisationsebene und wird in den konvertierten Pipelines verwendet. Diese Secrets müssen in GitHub Actions manuell erstellt werden, damit diese Pipelines korrekt funktionieren. Weitere Informationen finden Sie unter Verwenden von Geheimnissen in GitHub-Aktionen.
- Ein selbstgehosteter Runner bezeichnet ein Label eines Runners, auf den in einer konvertierten Pipeline verwiesen wird und der kein GitHub-hosteter Runner ist. Du musst diese Runner manuell definieren, damit diese Pipelines ordnungsgemäß funktionieren.
Dateien
Der letzte Abschnitt des Überprüfungsberichts enthält ein Manifest aller Dateien, die während der Überprüfung auf den Datenträger geschrieben wurden.
Jede Pipeline-Datei enthält verschiedene Dateien, die in das Audit einbezogen werden, darunter:
- Die ursprüngliche Pipeline, wie sie in GitHub definiert wurde.
- Alle Netzwerkantworten, die für die Umwandlung der Pipeline verwendet werden.
- Die konvertierte Workflowdatei
- Stapelablaufverfolgungen, die zur Problembehandlung bei einer fehlerhaften Pipelinekonvertierung verwendet werden können
Darüber hinaus enthält die Datei workflow_usage.csv eine durch Trennzeichen getrennte Liste aller Aktionen, Geheimnisse und Runner, die von jeder erfolgreich konvertierten Pipeline verwendet werden. Dies kann nützlich sein, um zu bestimmen, welche Workflows Aktionen, Geheimnisse oder Runner verwenden, und um Sicherheitsüberprüfungen durchzuführen.
Vorhersagen der potenziellen Nutzung von Buildrunnern
Sie können den forecast Befehl verwenden, um die potenzielle GitHub Actions Nutzung zu prognostizieren, indem Sie Metriken aus der abgeschlossenen Pipeline berechnen, die auf Ihrem GitLab-Server ausgeführt wird.
Ausführen des Vorhersagebefehls
Um eine Prognose der potenziellen Nutzung von GitHub Actions zu erstellen, führen Sie den folgenden Befehl in Ihrem Terminal aus, wobei Sie my-gitlab-namespace durch den Namespace oder die Gruppe ersetzen, für den bzw. die Sie die Prognose erstellen. Standardmäßig enthält GitHub Actions Importer die vorherigen sieben Tage im Prognosebericht.
gh actions-importer forecast gitlab --output-dir tmp/forecast --namespace my-gitlab-namespace
Vorhersagen eines gesamten Namespaces
Um einen gesamten Namespace und alle zugehörigen Untergruppen vorherzusagen, musst du jede Untergruppe im --namespace-Argument oder in der NAMESPACE-Umgebungsvariablen angeben.
Beispiel:
gh actions-importer forecast gitlab --namespace my-gitlab-namespace my-gitlab-namespace/subgroup-one my-gitlab-namespace/subgroup-two ...
Überprüfen des Prognoseberichts
Die Datei forecast_report.md im angegebenen Ausgabeverzeichnis enthält die Ergebnisse der Vorhersage.
Im Folgenden sind einige wichtige Begriffe aufgeführt, die im Vorhersagebericht enthalten sein können:
- Die Auftragsanzahl ist die Gesamtanzahl der abgeschlossenen Aufträge.
- Die Pipelineanzahl ist die Anzahl der verwendeten eindeutigen Pipelines.
- Die Ausführungszeit ist die Zeit, die ein Runner für einen Auftrag aufgewendet hat. Diese Metrik kann verwendet werden, um die Kosten für GitHub-gehostete Runner zu planen.
- Diese Metrik steht im Zusammenhang mit den Ausgaben, die Sie in GitHub Actions erwarten sollten. Dies wird je nach der für diese Minuten verwendeten Hardware variieren. Sie können den GitHub Actions Preisrechner verwenden, um die Kosten zu schätzen.
- Metriken zur Warteschlangenzeit beschreiben die Zeit, die ein Auftrag in der Warteschlange verbringt, bis ein Runner zur Ausführung verfügbar ist.
- Metriken zu gleichzeitigen Aufträgen beschreiben die Anzahl der Aufträge, die zu einem bestimmten Zeitpunkt ausgeführt werden. Mithilfe dieser Metrik kann die Anzahl von Runnern definiert werden, die du konfigurieren solltest.
Darüber hinaus werden diese Metriken für jede Runner-Queue in GitLab definiert. Dies ist besonders nützlich, wenn es eine Mischung aus gehosteten oder selbstgehosteten Runnern oder Computern mit hoher oder niedriger Leistung gibt, da du spezifische Metriken für verschiedene Runnertypen anzeigen kannst.
Durchführen einer Probelaufmigration einer GitLab-Pipeline
Sie können den dry-run Befehl verwenden, um eine GitLab-Pipeline in den entsprechenden GitHub Actions Workflow zu konvertieren.
Ausführen des Probelaufbefehls
Sie können den dry-run Befehl verwenden, um eine GitLab-Pipeline in einen entsprechenden GitHub Actions Workflow zu konvertieren. Bei einem Probelauf werden die Ausgabedateien in einem angegebenen Verzeichnis erstellt, jedoch wird kein Pull-Request zur Migration der Pipeline eröffnet.
Um einen Testlauf für die Migration Ihrer GitLab-Pipelines zu GitHub Actions durchzuführen, führen Sie den folgenden Befehl in Ihrem Terminal aus und ersetzen Sie my-gitlab-project durch Ihren GitLab-Projekt-Slug und my-gitlab-namespace durch den Namespace oder die Gruppe (vollständiger Gruppenpfad für Untergruppen, z. B. my-org/my-team), für den bzw. die Sie einen Testlauf durchführen.
gh actions-importer dry-run gitlab --output-dir tmp/dry-run --namespace my-gitlab-namespace --project my-gitlab-project
Überprüfen der konvertierten Workflows
Sie können die Protokolle des Probelaufs und die konvertierten Workflowdateien im angegebenen Ausgabeverzeichnis überprüfen.
Wenn der GitHub Actions Importer etwas nicht automatisch konvertieren konnte (z. B. unbekannte Buildschritte oder eine teilweise erfolgreiche Pipeline), solltest du benutzerdefinierte Transformatoren erstellen, um den Konvertierungsprozess präziser anzupassen. Weitere Informationen finden Sie unter Das Erweitern des GitHub Actions Importers mit benutzerdefinierten Transformatoren.
Durchführen einer Produktionsmigration einer GitLab-Pipeline
Sie können den migrate Befehl verwenden, um eine GitLab-Pipeline zu konvertieren und eine Pullanforderung mit dem entsprechenden GitHub Actions Workflow zu öffnen.
Ausführen des Migrationsbefehls
Um eine GitLab-Pipeline zu GitHub Actionsmigrieren, führen Sie den folgenden Befehl in Ihrem Terminal aus, und ersetzen Sie die folgenden Werte:
- den
target-urlWert mit der URL Ihres GitHub-Repositorys my-gitlab-projectmit dem Slug deines GitLab-Projektsmy-gitlab-namespacemit dem Namespace oder der Gruppe, die du migrierst (vollständiger Pfad für Untergruppen, z. B.my-org/my-team)
gh actions-importer migrate gitlab --target-url https://github.com/:owner/:repo --output-dir tmp/migrate --namespace my-gitlab-namespace --project my-gitlab-project
Die Ausgabe des Befehls enthält die URL zum Pull Request, der den konvertierten Workflow deinem Repository hinzufügt. Beispiel für eine erfolgreiche Ausgabe:
$ gh actions-importer migrate gitlab --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --namespace octo-org --project monas-project
[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
Überprüfen des Pull Requests
Die Ausgabe einer erfolgreichen Ausführung des Befehls migrate enthält einen Link zum neuen Pull Request, mit dem der konvertierte Workflow deinem Repository hinzugefügt wird.
Wichtige Elemente des Pull Requests:
- In der Beschreibung des Pull Requests findest du den Abschnitt Manuelle Schritte, in dem Schritte aufgeführt sind, die du manuell ausführen musst, um die Migration deiner Pipelines zu GitHub Actions abschließen zu können. In diesem Abschnitt könnte z. B. stehen, dass du Geheimnisse erstellen musst, die im Workflows verwendet werden.
- Die konvertierte Workflowdatei Wähle im Pull Request die Registerkarte Files changed aus, um die Workflowdatei anzuzeigen, die deinem GitHub-Repository hinzugefügt wird.
Nachdem du den Pull Request überprüft hast, kannst du ihn zusammenführen, um den Workflow deinem GitHub-Repository hinzuzufügen.
Verweis
Dieser Abschnitt enthält Referenzinformationen zu Umgebungsvariablen, optionalen Argumenten und unterstützter Syntax bei der Verwendung von GitHub Actions Importer für die Migration von GitLab.
Verwenden von Umgebungsvariablen
GitHub Actions Importer verwendet Umgebungsvariablen für die Konfiguration der Authentifizierung. Diese Variablen werden beim Ausführen des Konfigurationsvorgangs mithilfe des Befehls configure festgelegt. Weitere Informationen findest du im Abschnitt Konfigurieren von Anmeldeinformationen.
GitHub Actions Importer verwendet die folgenden Umgebungsvariablen, um eine Verbindung mit Ihrer GitLab-Instanz herzustellen:
GITHUB_ACCESS_TOKEN: personal access token (classic), die zum Erstellen von Pull Requests aus einem konvertierten Workflow verwendet wird (erfordert denworkflow-Berechtigungsbereich).GITHUB_INSTANCE_URL: Die URL zur Zielinstanz GitHub (z. Bhttps://github.com. ).GITLAB_ACCESS_TOKEN: GitLab personal access token, das zum Anzeigen von GitLab-Ressourcen verwendet wird.GITLAB_INSTANCE_URL: Die URL der GitLab-Instanz.NAMESPACE: Die Namespaces oder Gruppen, die die GitLab-Pipelines enthalten
Diese Umgebungsvariablen können in einer .env.local Datei angegeben werden, die geladen wird, wenn GitHub Actions Importer ausgeführt wird.
Verwenden optionaler Argumente
Es gibt einige optionale Argumente, die du mit den Unterbefehlen von GitHub Actions Importer verwenden kannst, um deine Migration anzupassen.
--source-file-path
Du kannst das --source-file-path-Argument mit den Unterbefehlen forecast, dry-run oder migrate verwenden.
Ruft standardmäßig GitHub Actions Importer Pipelineinhalte aus der Quellcodeverwaltung ab. Das --source-file-path Argument weist GitHub Actions Importer stattdessen an, den angegebenen Quelldateipfad zu verwenden.
Beispiel:
gh actions-importer dry-run gitlab --output-dir output/ --namespace my-gitlab-namespace --project my-gitlab-project --source-file-path path/to/.gitlab-ci.yml
Wenn du beim Ausführen des Unterbefehls forecast mehrere Quelldateien angeben möchtest, kannst du einen Musterabgleich im Dateipfadwert verwenden. Das folgende Beispiel stellt GitHub Actions Importer die Quelldateien bereit, die dem Dateipfad ./tmp/previous_forecast/jobs/*.json entsprechen.
gh actions-importer forecast gitlab --output-dir output/ --namespace my-gitlab-namespace --project my-gitlab-project --source-file-path ./tmp/previous_forecast/jobs/*.json
--config-file-path
Du kannst das --config-file-path-Argument mit den Unterbefehlen audit, dry-run und migrate verwenden.
Ruft standardmäßig GitHub Actions Importer Pipelineinhalte aus der Quellcodeverwaltung ab. Das --config-file-path Argument weist GitHub Actions Importer stattdessen an, die angegebenen Quelldateien zu verwenden.
Das --config-file-path-Argument kann auch verwendet werden, um anzugeben, zu welchem Repository ein konvertierter wiederverwendbarer Workflow migriert werden soll.
Beispiel für Prüfung
In diesem Beispiel GitHub Actions Importer wird die angegebene YAML-Konfigurationsdatei verwendet, um ein Audit durchzuführen.
gh actions-importer audit gitlab --output-dir path/to/output/ --namespace my-gitlab-namespace --config-file-path path/to/gitlab/config.yml
Um eine GitLab-Instanz mithilfe einer Konfigurationsdatei zu überprüfen, muss die Datei das folgende Format aufweisen, und jeder repository_slug-Wert muss eindeutig sein:
source_files:
- repository_slug: namespace/project-name
path: path/to/.gitlab-ci.yml
- repository_slug: namespace/some-other-project-name
path: path/to/.gitlab-ci.yml
Beispiel für einen Probelauf
In diesem Beispiel wird GitHub Actions Importer die angegebene YAML-Konfigurationsdatei als Quelldatei verwendet, um einen Testlauf durchzuführen.
Die Auswahl der Pipeline erfolgt durch einen Abgleich des repository_slug in der Konfigurationsdatei mit dem Wert der Optionen --namespace und --project. Der path wird dann verwendet, um die angegebene Quelldatei zu pullen.
gh actions-importer dry-run gitlab --namespace my-gitlab-namespace --project my-gitlab-project-name --output-dir ./output/ --config-file-path ./path/to/gitlab/config.yml
Angeben des Repositorys konvertierter wiederverwendbarer Workflows
GitHub Actions Importer verwendet die für das --config-file-path Argument bereitgestellte YAML-Datei, um das Repository zu bestimmen, in das konvertierte wiederverwendbare Workflows migriert werden.
Zunächst solltest du eine Überwachung ohne das --config-file-path-Argument ausführen:
gh actions-importer audit gitlab --output-dir ./output/
Die Ausgabe dieses Befehls enthält eine Datei mit dem Namen config.yml, die eine Liste aller zusammengesetzten Aktionen enthält, die von GitHub Actions Importer konvertiert wurden. Die config.yml-Datei kann beispielsweise den folgenden Inhalt aufweisen:
reusable_workflows:
- name: my-reusable-workflow.yml
target_url: https://github.com/octo-org/octo-repo
ref: main
Du kannst mit dieser Datei festlegen, welchem Repository und welcher Referenz ein wiederverwendbarer Workflow oder ein zusammengesetzter Vorgang hinzugefügt werden soll. Anschließend können Sie das --config-file-path Argument verwenden, um die config.yml Datei in GitHub Actions Importer anzugeben. Beispielsweise kannst du diese Datei verwenden, wenn du einen migrate-Befehl ausführst, um einen Pull Request für jedes eindeutige Repository zu öffnen, das in der Konfigurationsdatei definiert ist:
gh actions-importer migrate gitlab --project my-project-name --output-dir output/ --config-file-path config.yml --target-url https://github.com/my-org/my-repo
Unterstützte Syntax für GitLab-Pipelines
In der folgenden Tabelle ist der Typ der Eigenschaften GitHub Actions Importer dargestellt, der derzeit konvertiert werden kann. Weitere Informationen dazu, wie die GitLab-Pipeline-Syntax mit GitHub Actions übereinstimmt, finden Sie unter Migrieren von GitLab CI/CD zu GitHub Actions.
| GitLab-Pipelines | GitHub-Aktionen | Status |
|---|---|---|
after_script | jobs.<job_id>.steps | Unterstützt |
auto_cancel_pending_ | concurrency | Unterstützt |
before_script | jobs.<job_id>.steps | Unterstützt |
build_timeout oder timeout | jobs.<job_id>.timeout-minutes | Unterstützt |
default | Nicht zutreffend | Unterstützt |
image | jobs.<job_id>.container | Unterstützt |
job | jobs.<job_id> | Unterstützt |
needs | jobs.<job_id>.needs | Unterstützt |
only_allow_merge_ | on.pull_request | Unterstützt |
resource_group | jobs.<job_id>.concurrency | Unterstützt |
schedule | on.schedule | Unterstützt |
script | jobs.<job_id>.steps | Unterstützt |
stages | jobs | Unterstützt |
tags | jobs.<job_id>.runs-on | Unterstützt |
variables | ||
env, jobs.<job_id>.env | Unterstützt | |
| Ausführen von Pipelines für neue Commits | on.push | Unterstützt |
| Manuelles Ausführen von Pipelines | on.workflow_dispatch | Unterstützt |
environment | jobs.<job_id>.environment | Teilweise unterstützt |
include | Dateien, auf die in einer include-Anweisung verwiesen wird, werden vor der Transformation in ein einziges Auftragsdiagramm zusammengeführt. | Teilweise unterstützt |
only oder except | jobs.<job_id>.if | Teilweise unterstützt |
parallel | jobs.<job_id>.strategy | Teilweise unterstützt |
rules | jobs.<job_id>.if | Teilweise unterstützt |
services | jobs.<job_id>.services | Teilweise unterstützt |
workflow | if | Teilweise unterstützt |
Informationen zu unterstützten GitLab-Konstrukten findest du im github/gh-actions-importer-Repository.
Syntax für Umgebungsvariablen
GitHub Actions Importer verwendet die Zuordnung in der folgenden Tabelle, um die Standardmäßigen GitLab-Umgebungsvariablen in das nächstgelegene Äquivalent zu GitHub Actionskonvertieren.
| GitLab | GitHub-Aktionen |
|---|---|
CI_API_V4_URL | ${{ github.api_url }} |
CI_BUILDS_DIR | ${{ github.workspace }} |
CI_COMMIT_BRANCH | ${{ github.ref }} |
CI_COMMIT_REF_ | ${{ github.ref }} |
CI_COMMIT_REF_ | ${{ github.ref }} |
CI_COMMIT_SHA | ${{ github.sha }} |
CI_COMMIT_SHORT_ | ${{ github.sha }} |
CI_COMMIT_TAG | ${{ github.ref }} |
CI_JOB_ID | ${{ github.job }} |
CI_JOB_MANUAL | ${{ github.event_name == 'workflow_dispatch' }} |
CI_JOB_NAME | ${{ github.job }} |
CI_JOB_STATUS | ${{ job.status }} |
CI_JOB_URL | ${{ github.server_url }}/${{ github.repository }}/ |
CI_JOB_TOKEN | ${{ github.token }} |
CI_NODE_INDEX | ${{ strategy.job-index }} |
CI_NODE_TOTAL | ${{ strategy.job-total }} |
CI_PIPELINE_ID | ${{ github.repository}}/ |
CI_PIPELINE_IID | ${{ github.workflow }} |
CI_PIPELINE_SOURCE | ${{ github.event_name }} |
CI_PIPELINE_TRIGGERED | ${{ github.actions }} |
CI_PIPELINE_URL | ${{ github.server_url }}/${{ github.repository }}/ |
CI_PROJECT_DIR | ${{ github.workspace }} |
CI_PROJECT_ID | ${{ github.repository }} |
CI_PROJECT_NAME | ${{ github.event.repository.name }} |
CI_PROJECT_NAMESPACE | ${{ github.repository_owner }} |
CI_PROJECT_PATH_ | ${{ github.repository }} |
CI_PROJECT_PATH | ${{ github.repository }} |
CI_PROJECT_ROOT_ | ${{ github.repository_owner }} |
CI_PROJECT_TITLE | ${{ github.event.repository.full_name }} |
CI_PROJECT_URL | ${{ github.server_url }}/${{ github.repository }} |
CI_REPOSITORY_URL | ${{ github.event.repository.clone_url }} |
CI_RUNNER_EXECUTABLE_ | ${{ runner.os }} |
CI_SERVER_HOST | ${{ github.server_url }} |
CI_SERVER_URL | ${{ github.server_url }} |
CI_SERVER | ${{ github.actions }} |
GITLAB_CI | ${{ github.actions }} |
GITLAB_USER_EMAIL | ${{ github.actor }} |
GITLAB_USER_ID | ${{ github.actor }} |
GITLAB_USER_LOGIN | ${{ github.actor }} |
GITLAB_USER_NAME | ${{ github.actor }} |
TRIGGER_PAYLOAD | ${{ github.event_path }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.assignees }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.number }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.number }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.labels }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.milestone }} |
CI_MERGE_REQUEST_ | ${{ github.repository }} |
CI_MERGE_REQUEST_ | ${{ github.repository }} |
CI_MERGE_REQUEST_ | ${{ github.server_url }}/${{ github.repository }} |
CI_MERGE_REQUEST_ | ${{ github.ref }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.head.ref }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.head.sha}} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.head.repo.full_ |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.head.repo.full_ |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.head.repo.url }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.base.ref }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.base.sha }} |
CI_MERGE_REQUEST_ | ${{ github.event.pull_request.title }} |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.number }} |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.head.repo.full_ |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.base.repo.full_ |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.head.ref }} |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.head.sha }} |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.base.ref }} |
CI_EXTERNAL_PULL_ | ${{ github.event.pull_request.base.sha }} |
Rechtliche Hinweise
Teile wurden von https://github.com/github/gh-actions-importer/ unter der MIT-Lizenz übernommen:
MIT License
Copyright (c) 2022 GitHub
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.