Skip to main content

Diese Version von GitHub Enterprise Server wurde eingestellt am 2024-03-26. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für bessere Leistung, verbesserte Sicherheit und neue Features aktualisiere auf die neueste Version von GitHub Enterprise Server. Wende dich an den GitHub Enterprise-Support, um Hilfe zum Upgrade zu erhalten.

Migrieren von GitLab mit dem GitHub Actions Importer

Erfahre, wie du mit dem GitHub Actions Importer die Migration deiner GitLab-Pipelines zu GitHub Actions automatisierst.

Rechtliche Hinweise

Informationen zum Migrieren von GitLab mit dem GitHub Actions Importer

In den folgenden Anweisungen erfährst du, wie du deine Umgebung so konfigurierst, dass der GitHub Actions Importer zum Migrieren von GitLab-Pipelines zu GitHub Actions verwendet wird.

Voraussetzungen

  • Ein GitLab-Konto oder eine Organisation mit Pipelines und Aufträgen, die du in GitHub Actions-Workflows konvertieren möchtest

  • Zugriffsberechtigungen zum Erstellen eines GitLab personal access token für dein Konto oder deine Organisation.

  • Eine Umgebung, in der du Linux-basierte Container ausführen und die erforderlichen Tools installieren kannst:

    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 beim automatischen Migrieren von Prozessen von GitLab-Pipelines zu GitHub Actions mit dem GitHub Actions Importer.

  • Die automatische Zwischenspeicherung zwischen Aufträgen verschiedener Workflows wird nicht unterstützt.
  • Der Befehl audit wird nur unterstützt, wenn ein Organisationskonto verwendet wird. Die Befehle dry-run und migrate kö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 zur manuellen Migration findest du unter Migrieren von GitLab CI/CD zu GitHub Actions.

Installieren der GitHub Actions Importer-CLI-Erweiterung

  1. So installierst du die GitHub Actions Importer-CLI-Erweiterung:

    Bash
    gh extension install github/gh-actions-importer
    
  2. Ü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

Mit dem CLI-Befehl configure werden die erforderlichen Anmeldeinformationen und Optionen für den GitHub Actions Importer beim Arbeiten mit GitLab und GitHub festgelegt.

  1. Erstelle ein GitHub-personal access token. Weitere Informationen findest du unter Verwalten deiner persönlichen Zugriffstoken.

    Ihr Token muss als Bereich workflow verwenden.

    Kopiere das Token nach dem Erstellen zur späteren Verwendung an einen sicheren Speicherort.

  2. Erstelle ein personal access token für GitLab. Weitere Informationen findest du unter Personal access tokens in der GitLab-Dokumentation.

    Dein Token muss als Bereich read_api verwenden.

    Kopiere das Token nach dem Erstellen zur späteren Verwendung an einen sicheren Speicherort.

  3. Führe am Terminal in der GitHub Actions Importer CLI den Befehl configure aus:

    gh actions-importer configure
    

    Sie werden vom Befehl configure zur Eingabe folgender Informationen aufgefordert:

    • Wähle unter der Frage nach dem CI-Anbieter mithilfe der Pfeiltasten GitLab aus, drücke die LEERTASTE, um die Option zu markieren, und drücke dann die EINGABETASTE.
    • Geben Sie für „Personal access token für GitHub“ den Wert des personal access token ein, das Sie zuvor erstellt haben, und drücken Sie die EINGABETASTE.
    • Unter „Basis-URL der GitHub-Instanz“ geben Sie die URL für Ihre GitHub Enterprise Server-Instanz ein, und drücken dann die EINGABETASTE.
    • Gib unter „Privates Token für GitLab“ den Wert für das zuvor erstellte personal access token für GitLab ein, und drücke 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 configure wird 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.
    
  4. Führe am Terminal in der GitHub Actions Importer CLI den Befehl update aus, um eine Verbindung mit GitHub Packages Container registry herzustellen, und überprüfe, ob das Containerimage auf die neueste Version aktualisiert wurde:

    gh actions-importer update
    

    Die 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
    

Überprüfen von GitLab

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:

  1. Abrufen aller auf einem GitLab-Server definierten Projekte
  2. Konvertieren aller Pipelines in den entsprechenden GitHub Actions-Workflow
  3. Generieren eines Zusammenfassungsberichts darüber, wie vollständig und komplex eine Migration mit GitHub Actions Importer wäre

Voraussetzungen für den Überprüfungsbefehl

Um den audit-Befehl verwenden zu können, muss ein personal access token mit einem GitLab-Organisationskonto konfiguriert sein.

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 eine allgemeine Statistik zur Konvertierungsrate durch den GitHub Actions Importer.

Im Folgenden sind einige wichtige Begriffe aufgeführt, die im Abschnitt „Pipelines“ enthalten sein können:

  • Bei erfolgreichen Pipelines wurden 100 % der Pipelinekonstrukte und Einzelelemente automatisch in ihre GitHub Actions-Entsprechung konvertiert.
  • Bei teilweise erfolgreichen Pipelines wurden zwar alle Pipelinekonstrukte, aber nicht alle Einzelelemente automatisch in ihre GitHub Actions-Entsprechung konvertiert.
  • Nicht unterstützte Pipelines sind Definitionstypen, die vom 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 falsch konfiguriert und in Bamboo ungültig.
    • Der GitHub Actions Importer hat beim Konvertieren ein interner Fehler festgestellt.
    • 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“ enthält eine Übersicht über die einzelnen Buildschritte, die in allen Pipelines verwendet werden, und darüber, wie viele davon vom GitHub Actions Importer automatisch konvertiert wurden.

Im Folgenden sind einige wichtige Begriffe aufgeführt, die im Abschnitt „Buildschritte“ enthalten sein können:

  • Ein bekannter Buildschritt ist ein Schritt, der automatisch in eine entsprechende Aktion konvertiert wurde.
  • Ein unbekannter Buildschritt ist ein Schritt, der nicht automatisch in eine entsprechende Aktion konvertiert wurde.
  • Ein nicht unterstützter Buildschritt ist ein Schritt, für den eine der folgenden Aussagen zutrifft:
    • Er wird grundsätzlich von GitHub Actions nicht unterstützt.
    • Seine Konfiguration ist mit GitHub Actions nicht kompatibel.
  • Eine Aktion ist eine Liste der Aktionen, die in den konvertierten Workflows verwendet wurden. Dies kann für Folgendes wichtig sein:
    • Zum Sammeln der Liste der Aktionen, die mit deiner Instanz synchronisiert werden sollen, sofern du GitHub Enterprise Server verwendest
    • Zum Definieren einer Positivliste 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 Aufgaben, die der GitHub Actions Importer nicht automatisch ausführen kann und die du manuell ausführen musst.

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 Geheimnisse müssen manuell in GitHub Actions erstellt werden, damit diese Pipelines ordnungsgemäß funktionieren. Weitere Informationen findest du unter Verwenden von Geheimnissen in GitHub-Aktionen.
  • Selbstgehosteter Runner ist eine Bezeichnung für Runner, auf die in einer konvertierten Pipeline verwiesen wird, und die nicht von GitHub gehostet werden. 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.

Für jede Pipelinedatei werden verschiedene Dateien überprüft, z. B.:

  • Die ursprüngliche Pipeline, wie in GitHub definiert
  • Alle Netzwerkantworten, die zum Konvertieren 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

Mit dem Befehl forecast kannst du die potenzielle GitHub Actions-Nutzung vorhersagen, indem du Metriken aus abgeschlossenen Pipelineausführungen auf deinem GitLab-Server berechnest.

Ausführen des Vorhersagebefehls

Um eine Vorhersage für die potenzielle Nutzung von GitHub Actions durchzuführen, führe den folgenden Befehl in deinem Terminal aus, und ersetze dabei my-gitlab-namespace durch den Namespace oder die Gruppe, die vorhergesagt werden soll. Standardmäßig umfasst der Vorhersagebericht von GitHub Actions Importer die letzten sieben Tage.

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. Mithilfe dieser Metrik können die Kosten für von GitHub gehosteten Runnern geplant werden.
    • Diese Metrik korreliert damit, wie viel Sie als Ausgaben in GitHub Actions einplanen sollten. Dies hängt von der Hardware ab, die für diese Ausführungszeit verwendet wurde. Du kannst den Preisrechner für GitHub Actions verwenden, um die Kosten zu schätzen.
  • Metriken zur Warteschlangenzeit beschreiben die Zeit, die ein Auftrag darauf wartet, dass ein Runner für die 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 Runnerwarteschlange 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

Mit dem Befehl dry-run kannst du eine GitLab-Pipeline in einen entsprechenden GitHub Actions-Workflow konvertieren.

Ausführen des Probelaufbefehls

Mit dem Befehl dry-run kannst du eine GitLab-Pipeline in einen entsprechenden GitHub Actions-Workflow konvertieren. Bei einem Probelauf werden nur die Ausgabedateien in einem angegebenen Verzeichnis erstellt, aber kein Pull Request zum Migrieren der Pipeline erstellt.

Um einen Probelauf für die Migration deiner GitLab-Pipelines zu GitHub Actions durchzuführen, führe den folgenden Befehl in deinem Terminal aus, und ersetze dabei my-gitlab-project durch die URL deines GitLab-Projekts und my-gitlab-namespace durch den Namespace oder die Gruppe, für die der Probelauf erfolgen soll.

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 findest du unter Erweitern von GitHub Actions Importer mit benutzerdefinierten Transformatoren.

Durchführen einer Produktionsmigration einer GitLab-Pipeline

Mit dem Befehl migrate kannst du eine GitLab-Pipeline in einen entsprechenden GitHub Actions-Workflow konvertieren und einen Pull Request erstellen.

Ausführen des Migrationsbefehls

Um eine GitLab-Pipeline zu GitHub Actions zu migrieren, führe den folgenden Befehl in deinem Terminal aus, und ersetze dabei die folgenden Werte:

  • target-url-Wert mit der URL für dein GitHub Enterprise Server-Repository
  • my-gitlab-project mit der URL für dein GitLab-Projekt
  • my-gitlab-namespace mit dem Namespace oder der Gruppe, die migriert werden soll
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 Geänderte Dateien aus, um die Workflowdatei anzuzeigen, die deinem GitHub Enterprise Server-Repository hinzugefügt wird.

Nachdem du den Pull Request überprüft hast, kannst du ihn zusammenführen, um den Workflow deinem GitHub Enterprise Server-Repository hinzuzufügen.

Verweis

Dieser Abschnitt enthält Verweisinformationen zu Umgebungsvariablen, optionalen Argumenten und der unterstützten Syntax, wenn der GitHub Actions Importer für die Migration aus GitLab verwendet wird.

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 deiner GitLab-Instanz herzustellen:

  • GITHUB_ACCESS_TOKEN: Das personal access token zum Erstellen von Pull Requests mit einem konvertierten Workflow (erfordert den Bereich workflow)
  • GITHUB_INSTANCE_URL: Die URL zur Zielinstanz von GitHub (z. B. https://github.com)
  • GITLAB_ACCESS_TOKEN: Das personal access token für GitLab zum Anzeigen von GitLab-Ressourcen
  • 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 zur Ausführungszeit vom GitHub Actions Importer geladen 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.

Standardmäßig ruft der GitHub Actions Importer Pipelineinhalte aus der Quellcodeverwaltung ab. Das --source-file-path-Argument weist den GitHub Actions Importer an, stattdessen 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. Im folgenden Beispiel werden dem GitHub Actions Importer alle Quelldateien übergeben, 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.

Standardmäßig ruft der GitHub Actions Importer Pipelineinhalte aus der Quellcodeverwaltung ab. Das --config-file-path-Argument weist den GitHub Actions Importer an, stattdessen 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 „audit“

In diesem Beispiel verwendet der GitHub Actions Importer die angegebene YAML-Konfigurationsdatei für eine Überprüfung.

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 verwendet der GitHub Actions Importer die angegebene YAML-Konfigurationsdatei als Quelldatei für einen Probelauf.

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 YAML-Datei, die für das --config-file-path-Argument bereitgestellt wird, um das Repository zu bestimmen, zu dem 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 namens 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 angeben, welchem Repository ein wiederverwendbarer Workflow oder eine zusammengesetzte Aktion hinzugefügt werden soll. Dann kannst du mit dem --config-file-path-Argument die Datei config.yml für GitHub Actions Importer bereitstellen. 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

Die folgende Tabelle zeigt den Typ der Eigenschaften, die der GitHub Actions Importer derzeit konvertieren kann. Einen Vergleich der GitLab-Pipelinesyntax mit GitHub Actions findest du unter Migrieren von GitLab CI/CD zu GitHub Actions.

GitLab-PipelinesGitHub-AktionenStatus
after_scriptjobs.<job_id>.stepsUnterstützt
auto_cancel_pending_pipelinesconcurrencyUnterstützt
before_scriptjobs.<job_id>.stepsUnterstützt
build_timeout oder timeoutjobs.<job_id>.timeout-minutesUnterstützt
defaultNicht zutreffendUnterstützt
imagejobs.<job_id>.containerUnterstützt
jobjobs.<job_id>Unterstützt
needsjobs.<job_id>.needsUnterstützt
only_allow_merge_if_pipeline_succeedson.pull_requestUnterstützt
resource_groupjobs.<job_id>.concurrencyUnterstützt
scheduleon.scheduleUnterstützt
scriptjobs.<job_id>.stepsUnterstützt
stagesjobsUnterstützt
tagsjobs.<job_id>.runs-onUnterstützt
variablesenv, jobs.<job_id>.envUnterstützt
Ausführen von Pipelines für neue Commitson.pushUnterstützt
Manuelles Ausführen von Pipelineson.workflow_dispatchUnterstützt
environmentjobs.<job_id>.environmentTeilweise unterstützt
includeDateien, auf die in einer include-Anweisung verwiesen wird, werden vor der Transformation in ein einziges Auftragsdiagramm zusammengeführt.Teilweise unterstützt
only oder exceptjobs.<job_id>.ifTeilweise unterstützt
paralleljobs.<job_id>.strategyTeilweise unterstützt
rulesjobs.<job_id>.ifTeilweise unterstützt
servicesjobs.<job_id>.servicesTeilweise unterstützt
workflowifTeilweise unterstützt

Informationen zu unterstützten GitLab-Konstrukten findest du im github/gh-actions-importer-Repository.

Syntax für Umgebungsvariablen

Der GitHub Actions Importer verwendet die Zuordnungen in der folgenden Tabelle, um die Standardumgebungsvariablen von GitLab in die passendste Entsprechung in GitHub Actions zu konvertieren.

GitLabGitHub-Aktionen
CI_API_V4_URL${{ github.api_url }}
CI_BUILDS_DIR${{ github.workspace }}
CI_COMMIT_BRANCH${{ github.ref }}
CI_COMMIT_REF_NAME${{ github.ref }}
CI_COMMIT_REF_SLUG${{ github.ref }}
CI_COMMIT_SHA${{ github.sha }}
CI_COMMIT_SHORT_SHA${{ 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 }}/actions/runs/${{ github.run_id }}
CI_JOB_TOKEN${{ github.token }}
CI_NODE_INDEX${{ strategy.job-index }}
CI_NODE_TOTAL${{ strategy.job-total }}
CI_PIPELINE_ID${{ github.repository}}/${{ github.workflow }}
CI_PIPELINE_IID${{ github.workflow }}
CI_PIPELINE_SOURCE${{ github.event_name }}
CI_PIPELINE_TRIGGERED${{ github.actions }}
CI_PIPELINE_URL${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
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_SLUG${{ github.repository }}
CI_PROJECT_PATH${{ github.repository }}
CI_PROJECT_ROOT_NAMESPACE${{ 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_ARCH${{ 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_ASSIGNEES${{ github.event.pull_request.assignees }}
CI_MERGE_REQUEST_ID${{ github.event.pull_request.number }}
CI_MERGE_REQUEST_IID${{ github.event.pull_request.number }}
CI_MERGE_REQUEST_LABELS${{ github.event.pull_request.labels }}
CI_MERGE_REQUEST_MILESTONE${{ github.event.pull_request.milestone }}
CI_MERGE_REQUEST_PROJECT_ID${{ github.repository }}
CI_MERGE_REQUEST_PROJECT_PATH${{ github.repository }}
CI_MERGE_REQUEST_PROJECT_URL${{ github.server_url }}/${{ github.repository }}
CI_MERGE_REQUEST_REF_PATH${{ github.ref }}
CI_MERGE_REQUEST_SOURCE_BRANCH_NAME${{ github.event.pull_request.head.ref }}
CI_MERGE_REQUEST_SOURCE_BRANCH_SHA${{ github.event.pull_request.head.sha}}
CI_MERGE_REQUEST_SOURCE_PROJECT_ID${{ github.event.pull_request.head.repo.full_name }}
CI_MERGE_REQUEST_SOURCE_PROJECT_PATH${{ github.event.pull_request.head.repo.full_name }}
CI_MERGE_REQUEST_SOURCE_PROJECT_URL${{ github.event.pull_request.head.repo.url }}
CI_MERGE_REQUEST_TARGET_BRANCH_NAME${{ github.event.pull_request.base.ref }}
CI_MERGE_REQUEST_TARGET_BRANCH_SHA${{ github.event.pull_request.base.sha }}
CI_MERGE_REQUEST_TITLE${{ github.event.pull_request.title }}
CI_EXTERNAL_PULL_REQUEST_IID${{ github.event.pull_request.number }}
CI_EXTERNAL_PULL_REQUEST_SOURCE_REPOSITORY${{ github.event.pull_request.head.repo.full_name }}
CI_EXTERNAL_PULL_REQUEST_TARGET_REPOSITORY${{ github.event.pull_request.base.repo.full_name }}
CI_EXTERNAL_PULL_REQUEST_SOURCE_BRANCH_NAME${{ github.event.pull_request.head.ref }}
CI_EXTERNAL_PULL_REQUEST_SOURCE_BRANCH_SHA${{ github.event.pull_request.head.sha }}
CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_NAME${{ github.event.pull_request.base.ref }}
CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_SHA${{ github.event.pull_request.base.sha }}

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.