Skip to main content

Migrieren von Repositorys von GitHub Enterprise Server zu GitHub Enterprise Cloud

Sie können Repositories von GitHub Enterprise Server zu GitHub Enterprise Cloud migrieren, indem Sie GitHub CLI oder die API verwenden.

Tool navigation

Informationen zu Repository-Migrationen mit GitHub Enterprise Importer

Du kannst deine Migration entweder mit der GitHub CLI oder mit der API ausführen.

Die GitHub CLI vereinfacht den Migrationsprozess und wird für die meisten Kundinnen empfohlen. Fortgeschrittene Kundinnen, die viele Anpassungen vornehmen müssen, können die API verwenden, um eigene Integrationen mit dem GitHub Enterprise Importer zu erstellen.

Wenn du die API verwendest, musst du eigene Skripts schreiben oder einen HTTP-Client wie Insomnia verwenden. Mehr über die ersten Schritte mit den APIs von GitHub erfahren Sie in Erste Schritte mit der REST-API und Erstellen von Aufrufen mit GraphQL.

Um Ihre Repositorys von GitHub Enterprise Server zu GitHub Enterprise Cloud mithilfe der APIs zu migrieren, gehen Sie wie folgt vor:

  1. Erstellen Sie eine personal access token für die Quell- und die Zielorganisation
  2. Rufen Sie die ownerId der Zielorganisation in GitHub Enterprise Cloud ab.
  3. Richten Sie eine Migrationsquelle über GitHubdie GraphQL-API ein, um zu ermitteln, von wo Sie migrieren möchten.
  4. Wiederhole diese Schritte für jedes Repository, das du migrieren möchtest.
    • Verwenden Sie die REST-API auf deine GitHub Enterprise Server-Instanz, um Migrationsarchive für Ihr Repository zu generieren.
    • Laden Sie Ihre Migrationsarchive an einen Speicherort hoch, an dem auf sie zugegriffen werden kann. GitHub
    • Starten Sie Ihre Migration mit der GraphQL-API für Ihr Migrationsziel, und übergeben Sie Ihre Archiv-URLs.
    • Überprüfen des Status deiner Migration über die GraphQL-API
    • Überprüfen der Migration und des Fehlerprotokolls

Um Anweisungen für die Verwendung der API anzuzeigen, verwendest du den Toolumschalter oben auf der Seite.

Um Anweisungen zur Verwendung der GitHub CLI anzuzeigen, verwendest du den Toolumschalter oben auf der Seite.

Wenn die Zielorganisation oder das Unternehmen Regelsätze aktiviert hat, kann der Verlauf des migrierten Repositorys gegen diese Regeln verstoßen. Um die Migration zuzulassen, ohne Ihre Rulesets zu deaktivieren, fügen Sie „Repository-Migrationen” der Ausnahmeliste für jedes anwendbare Ruleset hinzu. Diese Umgehung gilt nur während der Migration. Sobald dies abgeschlossen ist, werden Regelsätze auf alle neuen Beiträge angewendet.

So konfigurieren Sie die Umgehung:

  1. Navigieren Sie zu jedem Unternehmens- oder Organisationsregelsatz.
  2. Klicken Sie im Abschnitt "Umgehungsliste" auf "Umgehungsumgehung hinzufügen".
  3. Wählen Sie Repository-Migrationen aus.

Weitere Informationen findest du unter Erstellen von Regelsätzen für Repositorys in deiner Organisation und Festlegen von Regelsatzumgehungen für Repositorymigrationen.

Voraussetzungen

  • Es wird dringend empfohlen, einen Testlauf deiner Migration durchzuführen und die Produktionsmigration bald danach abzuschließen. Weitere Informationen zu Testläufen findest du unter Übersicht über die Migration zwischen GitHub-Produkten.
  • Stellen Sie sicher, dass Sie die zu migrierenden Daten und die bekannten Supportbeschränkungen des Importer verstehen. Weitere Informationen finden Sie unter Informationen zu Migrationen zwischen den GitHub-Produkten mit GitHub Enterprise Importer.
  • Es ist zwar nicht erforderlich, die Arbeit während der Produktionsmigration zu unterbrechen, es wird aber empfohlen. Der Importer unterstützt keine Deltamigrationen, sodass Änderungen, die während der Migration vorgenommen werden, nicht migriert werden. Wenn du dich dafür entscheidest, die Arbeit während der Produktionsmigration nicht zu unterbrechen, musst du diese Änderungen manuell migrieren.
  • Sowohl in der Quell- als auch in der Zielorganisation musst du entweder Organisationsbesitzer*in sein, oder dir muss die Migrationsrolle zugewiesen sein. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.
  • Wenn Sie 3.8 oder höher verwenden GitHub Enterprise Server , um blob-Speicher für exportierte Archive zu konfigurieren, benötigen Sie Zugriff auf die Verwaltungskonsole.

Schritt 1. Erstellen Sie Ihre personal access token

  1. Erstelle ein personal access token (classic) für die Authentifizierung der Zielorganisation auf GitHub Enterprise Cloud, und stelle sicher, dass das Token alle Anforderungen erfüllt. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.
  2. Erstelle ein personal access token für die Authentifizierung der Quellorganisation, und stelle außerdem sicher, dass dieses Token alle Anforderungen erfüllt.

Schritt 2: Abrufen der ownerId für die Zielorganisation

Verwende als Organisationsbesitzer*in in GitHub Enterprise Cloud die Abfrage GetOrgInfo, um die ownerId (auch als Organisations-ID bezeichnet) für die Organisation zurückzugeben, der du den Besitz der migrierten Repositorys zuordnen möchtest. Du benötigst die ownerId, um das Migrationsziel anzugeben.

Abfrage GetOrgInfo

query(
  $login: String!
){
  organization (login: $login)
  {
    login
    id
    name
    databaseId
  }
}
AbfragevariableBeschreibung
loginName deiner Organisation.

Antwort von GetOrgInfo

{
  "data": {
    "organization": {
      "login": "Octo",
      "id": "MDEyOk9yZ2FuaXphdGlvbjU2MTA=",
      "name": "Octo-org",
      "databaseId": 5610
    }
  }
}

In diesem Beispiel ist MDEyOk9yZ2FuaXphdGlvbjU2MTA= die Organisations-ID oder die ownerId, die du im nächsten Schritt verwendest.

Schritt 3: Einrichten des Blobspeichers

Bei der Durchführung einer Migration eines Repositorys müssen Sie die Daten Ihres Repositorys an einem Ort speichern, auf den GitHub Enterprise Importer zugreifen kann. Dies kann wie folgt erreicht werden:

  • Verwenden eines lokalen Speichers auf der GHES-Instanz (GHES 3.16 und höher)
  • Verwenden eines Blob Storage-Anbieters

Verwenden des lokalen Speichers (GHES 3.16 und höher)

Wenn du eine Migration mit lokalem Speicher ausführst, werden Archivdaten auf den Datenträger auf deine GitHub Enterprise Server-Instanz geschrieben, ohne dass ein Cloudspeicheranbieter erforderlich ist.

  • Wenn du keine Firewallregeln hast, die den ausgehenden Datenverkehr von GitHub Enterprise Server blockieren, kann GitHub Enterprise Importer das gespeicherte Archiv automatisch von GitHub Enterprise Server abrufen.
  • Wenn du Firewallregeln hast und den Zugriff auf GitHub Enterprise Importer nicht zulassen möchtest, kannst du deine Archivdaten in GitHub-owned blob storage hochladen, damit GitHub Enterprise Importer darauf zugreifen kann. Informationen zur manuellen Ausführung findest du in der API-Version dieses Artikels unter Hochladen der Migrationsarchive in Blob Storage im Besitz von GitHub.
  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .
  2. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.
  3. Melde dich bei Verwaltungskonsole an.
  4. Klicke auf der linken Randleiste auf Migrations.
  5. Klicke auf Enable GitHub Migrations.
  6. Klicke unter „Migrations Storage“ auf Local Storage.
  7. Klicke auf Save settings (Einstellungen speichern).

Wenn du die Migration durchführst, überwache den Speicherplatz auf GitHub Enterprise Server. Migrationsarchive werden nach 7 Tagen automatisch gelöscht. Um Speicherplatz freizugeben, kannst du ein Archiv mithilfe von REST-API-Endpunkte für Organisationsmigrationen löschen.

Verwenden eines Blob Storage-Anbieters

Wenn Sich Ihre GitHub Enterprise Server Instanz hinter einer Firewall befindet, müssen Sie möglicherweise Blob-Speicher mit einem externen Clouddienst einrichten.

Du musst zunächst Blobspeicher bei einem unterstützten Anbieter einrichten. Wenn Sie einen Cloudanbieter verwenden, müssen Sie dann Ihre Zugangsdaten beim Speicheranbieter im Verwaltungskonsole oder GitHub CLI konfigurieren.

Die GitHub CLI unterstützt die folgenden Blobspeicheranbieter:

  • Amazon Web Services S3 (AWS)
  • Azure Blob Storage

Hinweis

Sie müssen den Blobspeicher nur konfigurieren, wenn Sie GitHub Enterprise Server Versionen 3.8 oder höher verwenden. Wenn Sie GitHub Enterprise Server Version 3.7 oder niedriger verwenden, springen Sie zu Schritt 4: Eine Migrationsquelle in GitHub Enterprise Cloud einrichten.

Blobspeicher ist erforderlich, um Repositorys mit einer großen Git-Quelle oder umfangreichen Metadaten zu migrieren. Wenn Sie Die Versionen 3.7 oder niedriger verwenden GitHub Enterprise Server , können Sie keine Migrationen durchführen, bei denen Ihre Git-Quelle oder Metadatenexporte 2 GB überschreiten. Um diese Migrationen durchzuführen, aktualisieren Sie auf GitHub Enterprise Server Version 3.8 oder höher.

Einrichten eines AWS S3-Speicherbuckets

Richte in AWS einen S3-Bucket ein. Weitere Informationen findest du unter Erstellen von Buckets in der AWS-Dokumentation.

Außerdem benötigst du einen AWS-Zugriffsschlüssel und einen geheimen Schlüssel mit den folgenden Berechtigungen:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::github-migration-bucket",
                "arn:aws:s3:::github-migration-bucket/*"
            ]
        }
    ]
}

Hinweis

GitHub Enterprise Importer löscht dein Archiv nach Abschluss der Migration nicht aus AWS. Zur Verringerung der Speicherkosten wird empfohlen, das automatische Löschen deines Archivs nach einem bestimmten Zeitraum zu konfigurieren. Weitere Informationen findest du unter Festlegen der Lebenszykluskonfiguration für einen Bucket in der AWS-Dokumentation.

Einrichten eines Azure Blob Storage-Kontos

Erstelle in Azure ein Speicherkonto, und notiere dir die Verbindungszeichenfolge. Weitere Informationen findest du unter Verwalten von Speicherkonto-Zugriffsschlüsseln in der Microsoft-Dokumentation.

Hinweis

GitHub Enterprise Importer löscht dein Archiv nach Abschluss der Migration nicht aus Azure Blob Storage. Zur Verringerung der Speicherkosten wird empfohlen, das automatische Löschen deines Archivs nach einem bestimmten Zeitraum zu konfigurieren. Weitere Informationen findest du unter Optimieren von Kosten durch automatisches Verwalten des Datenlebenszyklus in der Microsoft-Dokumentation.

Konfigurieren von Blobspeicher im Verwaltungskonsole von deine GitHub Enterprise Server-Instanz

Nachdem du einen AWS S3-Speicherbucket oder ein Azure Blob Storage-Speicherkonto eingerichtet hast, konfigurierst du den Blobspeicher an der Verwaltungskonsole von deine GitHub Enterprise Server-Instanz. Weitere Informationen zur Verwaltungskonsole findest du unter Verwalten von Instanzen über die Verwaltungskonsole.

  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .

  2. Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator. 1. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.

  3. Melde dich an der Verwaltungskonsole an.

  4. Wähle auf der oberen Navigationsleiste Einstellungen aus.

  5. Wähle unter Migrationen die Option GitHub-Migrationen aktivieren aus.

  6. Wähle optional zum Importieren von Speichereinstellungen, die du für GitHub Actions konfiguriert hast, die Option Speichereinstellungen aus Actions kopieren aus. Weitere Informationen findest du unter Aktivieren von GitHub Actions mit Azure Blob Storage und Aktivieren von GitHub Actions mit Amazon S3-Speicher.

    Hinweis

    Nach dem Kopieren deiner Speichereinstellungen musst du möglicherweise die Konfiguration deines Cloud-Speicherkontos aktualisieren, um mit GitHub Enterprise Importer zu arbeiten. Insbesondere müssen Sie sicherstellen, dass die IP-Adressen von GitHub zugelassen sind. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

  7. Wenn du keine Speichereinstellungen aus GitHub Actions importierst, wähle entweder Azure Blob Storage oder Amazon S3 aus, und gib die erforderlichen Details ein.

    Hinweis

    Bei Verwendung von Amazon S3 muss die „AWS Service-URL“ auf den Standard-Endpunkt für die AWS-Region festgelegt werden, in der sich der Bucket befindet. Wenn sich der Bucket beispielsweise in der Region eu-west-1 befindet, lautet die „AWS Service-URL“ https://s3.eu-west-1.amazonaws.com . Das Netzwerk Ihrer GitHub Enterprise Server-Instanz muss den Zugriff auf diesen Host zulassen. Gateway-Endpunkte werden nicht unterstützt, wie z. B. bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com. Weitere Informationen zu Gateway-Endpunkten finden Sie in der AWS-Dokumentation unter Gateway-Endpunkte für Amazon S3.

  8. Wähle Speichereinstellungen testen aus.

  9. Klicke auf Save settings (Einstellungen speichern).

Zulassen des Netzwerkzugriffs

Wenn Sie Firewallregeln für Ihr Speicherkonto konfiguriert haben, müssen Sie sicherstellen, dass Sie Zugriff auf die IP-Adressbereiche für Ihr Migrationsziel haben. Weitere Informationen findest du unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

Schritt 4: Einrichten einer Migrationsquelle in GitHub Enterprise Cloud

Du kannst eine Migrationsquelle mithilfe der Abfrage createMigrationSource einrichten. Du musst die ownerId oder die Organisations-ID angeben, die du mit der Abfrage GetOrgInfo abgerufen hast.

Ihre Migrationsquelle ist Ihre Organisation auf GitHub Enterprise Server.

createMigrationSource-Mutation

mutation createMigrationSource($name: String!, $url: String!, $ownerId: ID!) {
  createMigrationSource(input: {name: $name, url: $url, ownerId: $ownerId, type: GITHUB_ARCHIVE}) {
    migrationSource {
      id
      name
      url
      type
    }
  }
}

Hinweis

Stelle sicher, dass du GITHUB_ARCHIVE für type verwendest.

AbfragevariableBeschreibung
nameEin Name für deine Migrationsquelle. Dieser Name dient deiner eigenen Referenz, sodass du eine beliebige Zeichenfolge angeben kannst.
ownerIdDie Organisations-ID deiner Organisation in GitHub Enterprise Cloud.

| url | Die URL für deine GitHub Enterprise Server-Instanz. Diese URL muss von GitHub Enterprise Cloud aus nicht zugänglich sein.

createMigrationSource-Antwort:

{
  "data": {
    "createMigrationSource": {
      "migrationSource": {
        "id": "MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ",
        "name": "GHES Source",
        "url": "https://my-ghes-hostname.com",
        "type": "GITHUB_ARCHIVE"
      }
    }
  }
}

In diesem Beispiel ist MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ die ID der Migrationsquelle, die du in einem späteren Schritt verwendest.

Schritt 5: Generieren von Migrationsarchiven auf deine GitHub Enterprise Server-Instanz

Sie verwenden die REST-API, um zwei "Migrationen" zu GitHub Enterprise Serverstarten: eine, um ein Archiv der Git-Quelle Ihres Repositorys zu generieren, und eine, um ein Archiv der Metadaten Ihres Repositorys zu generieren (z. B. Probleme und Pullanforderungen).

Um das Git-Quellarchiv zu erzeugen, senden Sie eine POST-Anfrage an https://HOSTNAME/api/v3/orgs/ORGANIZATION/migrations, wobei Sie HOSTNAME durch den Hostnamen von deine GitHub Enterprise Server-Instanz und ORGANIZATION durch den Login Ihrer Organisation ersetzen.

Gib im Text das Repository an, das du migrieren möchtest. Deine Anforderung sieht ungefähr wie folgt aus:

POST /api/v3/orgs/acme-corp/migrations HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Content-Type: application/json
Host: github.acmecorp.net

{
  "repositories": ["repository_to_migrate"],
  "exclude_metadata": true
}

Um dein Metadatenarchiv zu generieren, übermittelst du eine ähnliche Anforderung mit dem folgenden Text an dieselbe URL:

{
  "repositories": ["repository_to_migrate"],
  "exclude_git_data": true,
  "exclude_releases": false,
  "exclude_owner_projects": true
}

Beide API-Aufrufe geben eine JSON-Antwort zurück, die auch die ID der gestarteten Migration enthält.

HTTP/1.1 201 Created

{
  "id": 123,
  // ...
}

Weitere Informationen finden Sie unter Initiieren einer Organisationsmigration.

Das Generieren der Archive kann je nach Datenmenge eine Weile dauern. Du kannst den Status der beiden Migrationsvorgänge regelmäßig mit der API „Migrationsstatus einer Organisation abrufen“ überprüfen, bis sich der state der Migration in exported ändert.

GET /api/v3/orgs/acme-corp/migrations/123 HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Host: github.acmecorp.net

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "state": "exported",
  // ...
}

Weitere Informationen finden Sie unter Abrufen des Migrationsstatus einer Organisation.

Hinweis

Falls Ihre Migration in den Zustand failed anstatt in den Zustand exported wechselt, versuchen Sie, die Migration erneut zu starten. Wenn die Migration wiederholt zu Fehlern führt, wird empfohlen, die Archive mit ghe-migrator anstelle der API zu generieren.

Führe die Schritte unter Exportieren von Migrationsdaten aus deinem Unternehmen aus, und füge der Migration nur ein Repository hinzu. Am Ende des Prozesses verfügst du über ein einzelnes Migrationsarchiv mit deiner Git-Quelle und den Metadaten kannst mit Schritt 6 in diesem Artikel fortfahren.

Nachdem der state einer Migration in exported geändert wurde, kannst du die URL der Migration mithilfe der API „Organisationsmigrationsarchiv herunterladen“ abrufen.

GET /api/v3/orgs/acme-corp/migrations/123/archive HTTP/1.1
Accept: application/vnd.github+json
Authorization: Bearer <TOKEN>
Host: github.acmecorp.net

HTTP/1.1 302 Found
Location: https://media.github.acmecorp.net/migrations/123/archive/cca2ebe9-7403-4ffa-9b6a-4c9e16c94410?token=AAAAABEWE7JP4H2HACKEGMTDOYRC6

Die API gibt als Antwort 302 Found mit einem Location-Header zurück, der auf die URL umleitet, unter der sich das herunterladbare Archiv befindet. Lade die beiden Dateien herunter: eine für die Git-Quelle und eine für die Metadaten.

Weitere Informationen finden Sie unter Herunterladen eines Organisationsmigrationsarchivs.

Nachdem beide Migrationsvorgänge abgeschlossen sind und du die Archive heruntergeladen hast, kannst du mit dem nächsten Schritt fortfahren.

Schritt 6: Hochladen deiner Migrationsarchive

Um Ihre Daten in GitHub Enterprise Cloud zu importieren, müssen Sie für jedes Repository beide Archive (Git-Quelle und Metadaten) von Ihrem Computer an GitHub übertragen, indem Sie unsere GraphQL-API verwenden.

Wenn Sie GitHub Enterprise Server in Version 3.7 oder älter verwenden, müssen Sie zunächst URLs für die Archive erstellen, die für GitHub zugänglich sind. Die meisten Kund*innen entscheiden sich dafür, die Archive in den Blobspeicherdienst eines Cloudanbieters wie Amazon S3 oder Azure Blob Storage hochzuladen und dann eine kurzlebige URL für jedes Objekt zu generieren.

Wenn Sie 3.8 oder höher verwenden GitHub Enterprise Server , lädt Ihre Instanz die Archive hoch und generiert die URLs für Sie. Der Location-Header im vorherigen Schritt enthält die kurzlebige URL.

Möglicherweise müssen Sie die IP-Bereiche von GitHub zur Allowlist hinzufügen. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

Hochladen Ihrer Migrationsarchive auf GitHub-owned blob storage

Wenn Sie GitHub-owned blob storage verwenden, laden Sie Ihr Archiv mithilfe des folgenden Verfahrens auf GitHub-owned blob storage hoch:

  1. Erstellen eines mehrteiligen Uploads durch Übermitteln einer POST-Anforderung
  2. Hochladen eines Archivs in mehreren Teilen mit einer Größe von bis zu 100 MB als PATCH-Anforderungen
  3. Übermitteln einer PUT-Anforderung zum Abschließen des Uploads

1. Erstellen des mehrteiligen Uploads

Du sendest eine POST-Anforderung an:

https://uploads.github.com/organizations/{organization_id}/gei/archive/blobs/uploads

Füge einen JSON-Text wie unten gezeigt mit dem Archivnamen und der Größe ein. Der Inhaltstyp kann für alle Uploads unverändert "application/octet-stream" bleiben.

{
"content_type": "application/octet-stream",
"name": "git-archive.tar.gz",
"size": 262144000
}

Dadurch wird eine JSON-Objektantwort wie folgt zurückgegeben:

{
  "guid": "363b2659-b8a3-4878-bfff-eed4bcb54d35",
  "node_id": "MA_kgDaACQzNjNiMjY1OS1iOGEzLTQ4NzgtYmZmZi1lZWQ0YmNiNTRkMzU",
  "name": "git-archive.tar.gz",
  "size": 33287,
  "uri": "gei://archive/363b2659-b8a3-4878-bfff-eed4bcb54d35",
  "created_at": "2024-11-13T12:35:45.761-08:00"
}

Dieser URI stellt das hochgeladene Archiv dar und wird zum Einreihen der Migration in die Warteschlange verwendet, wenn du die Repositorymigration startest. Die Antwort enthält auch den Speicherort im Antwortheader, der zum Hochladen von Dateiteilen mithilfe einer PATCH-Anforderung im nächsten Schritt verwendet wird:

/organizations/{organization_id}/gei/archive/blobs/uploads?part_number=1&guid=<guid>&upload_id=<upload_id>

2. Hochladen des Archivs in mehreren Teilen

Lade bis zu 100 MB deiner Datei in jedem Teil mit einer PATCH-Anforderung unter Verwendung des Speicherorts aus dem vorherigen Antwortheader hoch, um sicherzustellen, dass die Rohdaten im Anforderungstext hochgeladen werden, ohne ein mehrteiliges Formular zu verwenden. Wenn der letzte Teil deiner Datei kleiner als 100 MB ist, lade nur die verbleibenden Bytes in dieser letzten Anforderung hoch:

https://uploads.github.com/{location}

Dadurch wird ein leerer Antworttext mit dem folgenden Speicherort im Antwortheader zurückgegeben:

/organizations/{organization_id}/gei/archive/blobs/uploads?part_number=2&guid=<guid>&upload_id=<upload_id>

Wiederhole diesen Vorgang, bis der Upload abgeschlossen ist. Stelle sicher, dass du bis zu 100 MB der Datei gleichzeitig einliest und Anforderungen mit den erhöhten part_number-Werten an die neuen Speicherortwerte übermittelst.

3. Abschließen des Uploads

Übermittle eine PUT-Anforderung an den Wert „letzter Pfad“ aus dem vorherigen Schritt mit einem leeren Text, und dein Upload in den GitHub-eigenen Speicher ist abgeschlossen. Der GEI-URI kann mit der GUID aus dieser anfänglichen POST-Anforderung im folgenden Format erstellt werden:

gei://archive/{guid}

Schritt 7: Starten der Repositorymigration

Wenn du eine Migration startest, werden ein einzelnes Repository und die zugehörigen Daten zu einem neuen GitHub-Repository migriert, das du angibst.

Wenn du mehrere Repositorys gleichzeitig aus derselben Quellorganisation verschieben möchtest, kannst du mehrere Migrationsvorgänge in die Warteschlange einreihen. Du kannst bis zu fünf Migrationsvorgänge gleichzeitig ausführen.

startRepositoryMigration-Mutation

mutation startRepositoryMigration (
  $sourceId: ID!,
  $ownerId: ID!,
  $repositoryName: String!,
  $continueOnError: Boolean!,
  $accessToken: String!,
  $githubPat: String!,
  $gitArchiveUrl: String!,
  $metadataArchiveUrl: String!,
  $sourceRepositoryUrl: URI!,
  $targetRepoVisibility: String!
){
  startRepositoryMigration( input: {
    sourceId: $sourceId,
    ownerId: $ownerId,
    repositoryName: $repositoryName,
    continueOnError: $continueOnError,
    accessToken: $accessToken,
    githubPat: $githubPat,
    targetRepoVisibility: $targetRepoVisibility
    gitArchiveUrl: $gitArchiveUrl,
    metadataArchiveUrl: $metadataArchiveUrl,
    sourceRepositoryUrl: $sourceRepositoryUrl,
  }) {
    repositoryMigration {
      id
      migrationSource {
        id
        name
        type
      }
      sourceUrl
    }
  }
}
AbfragevariableBeschreibung
sourceIdDie id deiner Migrationsquelle, die von der createMigrationSource-Mutation zurückgegeben wurde.
ownerIdDie Organisations-ID deiner Organisation in GitHub Enterprise Cloud.
repositoryNameEin benutzerdefinierter eindeutiger Repositoryname, der derzeit von keinem deiner Repositorys im Besitz der Organisation auf GitHub Enterprise Cloud verwendet wird. Wenn die Migration abgeschlossen oder beendet wurde, wird ein Fehlerprotokollierungsproblem in diesem Repository erstellt.
continueOnErrorMigrationseinstellung, mit der die Migration fortgesetzt werden kann, wenn Fehler auftreten, die nicht dazu führen, dass die Migration fehlerhaft wird. Muss true oder false sein. Es wird dringend empfohlen continueOnError auf true festzulegen, damit die Migration fortgesetzt wird, es sei denn, der Importer kann die Git-Quelle nicht verschieben oder der Importer hat die Verbindung unterbrochen und kann die Verbindung nicht wiederherstellen, um die Migration abzuschließen.
githubPatDas personal access token für deine Zielorganisation auf GitHub Enterprise Cloud.
accessTokenDas personal access token für deine Quelle.
targetRepoVisibilityDie Sichtbarkeit des neuen Repositorys. Muss private, public oder internal sein. Wenn sie nicht festgelegt wurde, wird dein Repository als privat migriert.

gitArchiveUrl | Eine GitHub Enterprise CloudURL mit Zugriff auf Ihr Git-Quellarchiv.

metadataArchiveUrl | Eine GitHub Enterprise Cloudbarrierefreie URL für Ihr Metadatenarchiv.

sourceRepositoryUrl | Die URL für Ihr Repository in Ihrer GitHub Enterprise Server Instanz. Dies ist erforderlich, kommuniziert aber GitHub Enterprise Cloud nicht direkt mit Ihrer GitHub Enterprise Server Instanz.

Anforderungen personal access token finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

Im nächsten Schritt verwendest du die von der startRepositoryMigration-Mutation zurückgegebene Migrations-ID, um den Migrationsstatus zu überprüfen.

Schritt 8: Überprüfen des Migrationsstatus

Um Migrationsfehler zu erkennen und sicherzustellen, dass deine Migration funktioniert, kannst du den Migrationsstatus mithilfe der Abfrage getMigration überprüfen. Du kannst auch den Status mehrerer Migrationsvorgänge mit getMigrations überprüfen.

Die Abfrage getMigration gibt für die Migration einen der folgenden Status zurück: queued, in progress, failed oder completed. Wenn die Migration fehlerhaft war, gibt der Importer einen Grund für den Fehler an.

Abfrage getMigration

query (
  $id: ID!
){
  node( id: $id ) {
    ... on Migration {
      id
      sourceUrl
      migrationSource {
        name
      }
      state
      failureReason
    }
  }
}
AbfragevariableBeschreibung
idDie id deiner Migration, die von der startRepositoryMigration-Mutation zurückgegeben wurde.

Schritt 9: Überprüfen der Migration und des Fehlerprotokolls

Um die Migration abzuschließen, solltest du das Issue „Migrationsprotokoll“ überprüfen. Dieses Problem wird in GitHub im Zielrepository erstellt.

Screenshot eines Problems mit dem Titel „Migrationsprotokoll“. Der zweite Kommentar im Issue enthält Protokolle für eine Migration.

Abschließend wird empfohlen, die Integrität deiner migrierten Repositorys zu überprüfen.

Schritt 1: Installieren des GEI extension of the GitHub CLI

Wenn dies deine erste Migration ist, musst du die GEI extension of the GitHub CLI installieren. Weitere Informationen zur GitHub CLI findest du unter Informationen zu GitHub CLI.

Alternativ können Sie eine eigenständige Binärdatei von der Veröffentlichungsseite für das github/gh-gei-Repository herunterladen. Sie können daraufhin die Binärdatei direkt ohne das gh-Präfix ausführen.

  1. Installiere die GitHub CLI. Installationsanweisungen für GitHub CLI findest du im GitHub CLI-Repository.

    Hinweis

    Du benötigst Version 2.4.0 oder höher der GitHub CLI. Die installierte Version kannst du mit dem Befehl gh --version ermitteln.

  2. Installiere die GEI extension.

    Shell
    gh extension install github/gh-gei
    

Wenn du Hilfe zur GEI extension benötigst, kannst du immer das Flag --help mit einem Befehl verwenden. Mit gh gei --help listest du z. B. alle verfügbaren Befehle auf, und mit gh gei migrate-repo --help zeigst du alle Optionen an, die für den Befehl migrate-repo verfügbar sind.

Schritt 2: Aktualisieren des GEI extension of the GitHub CLI

Die GEI extension wird wöchentlich aktualisiert. Aktualisieren die Erweiterung, um sicherzustellen, dass du die neueste Version verwendest.

gh extension upgrade github/gh-gei

Schritt 3: Festlegen der Umgebungsvariablen

Bevor du GEI extension zum Migrieren zu GitHub Enterprise Cloud verwenden kannst, musst du personal access token erstellen, die auf die Quell- und Zielorganisationen zugreifen können, und dann die personal access token als Umgebungsvariablen festlegen.

  1. Erstelle ein personal access token (classic) für die Authentifizierung der Zielorganisation auf GitHub Enterprise Cloud, und stelle sicher, dass das Token alle Anforderungen erfüllt. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

  2. Erstelle ein personal access token für die Authentifizierung der Quellorganisation, und stelle außerdem sicher, dass dieses Token alle Anforderungen erfüllt.

  3. Lege Umgebungsvariablen für die personal access token fest, und ersetze in den folgenden Befehlen TOKEN durch die personal access token, die du oben gespeichert hast. Verwende das GH_PAT für die Zielorganisation und das GH_SOURCE_PAT für die Quellorganisation.

    • Wenn du ein Terminal verwendest, führe den Befehl export aus.

      Shell
      export GH_PAT="TOKEN"
      export GH_SOURCE_PAT="TOKEN"
      
    • Wenn du PowerShell verwendest, führe den Befehl $env aus.

      Shell
      $env:GH_PAT="TOKEN"
      $env:GH_SOURCE_PAT="TOKEN"
      
  4. Wenn Sie auf GitHub Enterprise-Cloud mit Datenresidenz migrieren, legen Sie zur Vereinfachung eine Umgebungsvariable für die Basis-API-URL für Ihr Unternehmen fest.

    Stellen Sie sicher, dass Sie SUBDOMAIN durch die Unterdomäne Ihres Unternehmens ersetzen. Wenn die Unterdomäne Ihres Unternehmens beispielsweise "acme" lautet, wäre der Wert von "TARGET_API_URL" "https://api.acme.ghe.com".

    • Wenn du ein Terminal verwendest, führe den Befehl export aus.

      Shell
      export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
      
    • Wenn du PowerShell verwendest, führe den Befehl $env aus.

      Shell
      $env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
      

    Sie verwenden diese Variable mit der --target-api-url-Option in Befehlen, die Sie mit der GitHub CLI ausführen.

Schritt 4: Einrichten des Blobspeichers

Migrieren von Repositorys mit GitHub-owned blob storage

Wenn Sie kein kundeneigenes Blobspeicherkonto zum Speichern Ihrer Repositoryarchive einrichten und GitHub Enterprise Importer keinen Zugriff darauf gewähren möchten, können Sie Repositorys mithilfe von GitHub-owned blob storage migrieren. Dazu müssen Sie v1.9.0 (oder höher) von GEI extension of the GitHub CLI verwenden. GitHub-owned blob storage erfordert kein zusätzliches Setup und ist beim Ausführen GEI extension of the GitHub CLI von Befehlen als Option verfügbar.

Für Sicherheitszwecke GitHub-owned blob storage ist schreibgeschützt, und Downloads von GitHub-owned blob storage sind nicht möglich. Nach Abschluss einer Migration werden die Repositoryarchive sofort gelöscht. Wenn ein Archiv hochgeladen und nicht in einer Migration verwendet wird, wird das Archiv nach 7 Tagen gelöscht.

Wenn Sie das CLI-Flag für GitHub-owned blob storageverwenden, wird das Repositoryarchiv automatisch in das in der Verwaltungskonsole konfigurierte Ziel exportiert, in GitHub eigenen Speicher hochgeladen und in Ihr Migrationsziel importiert. Bei Verwendung GitHub-owned blob storage wird empfohlen, den lokalen Speicher zu konfigurieren. Weitere Informationen findest du unter Verwenden des lokalen Speichers (GHES 3.16 und höher).

Migrieren von Repositorys mit kundeneigenem Blobspeicher

Du musst deine Repositorydaten an einem Ort speichern, auf den von GitHub zugegriffen werden kann. Wenn sich deine GitHub Enterprise Server-Instanz hinter einer Firewall befindet, solltest du Blobspeicher mit einem externen Clouddienst einrichten.

Du musst zunächst Blobspeicher bei einem unterstützten Anbieter einrichten. Wenn du einen Cloudanbieter verwendest, musst du anschließend deine Anmeldeinformationen für den Speicheranbieter mit der Verwaltungskonsole oder der GitHub CLI konfigurieren.

Die GitHub CLI unterstützt die folgenden Blobspeicheranbieter:

  • Amazon Web Services S3 (AWS)

  • Azure Blob Storage

  • Lokaler Speicher auf der GHES-Instanz (GHES 3.16 und höher) Es wird empfohlen, diese Option mit GitHub-owned blob storage zu verwenden.

Einrichten eines AWS S3-Speicherbuckets

Richte in AWS einen S3-Bucket ein. Weitere Informationen findest du unter Erstellen von Buckets in der AWS-Dokumentation.

Außerdem benötigst du einen AWS-Zugriffsschlüssel und einen geheimen Schlüssel mit den folgenden Berechtigungen:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::github-migration-bucket",
                "arn:aws:s3:::github-migration-bucket/*"
            ]
        }
    ]
}

Hinweis

GitHub Enterprise Importer löscht dein Archiv nach Abschluss der Migration nicht aus AWS. Zur Verringerung der Speicherkosten wird empfohlen, das automatische Löschen deines Archivs nach einem bestimmten Zeitraum zu konfigurieren. Weitere Informationen findest du unter Festlegen der Lebenszykluskonfiguration für einen Bucket in der AWS-Dokumentation.

Einrichten eines Azure Blob Storage-Speicherkontos

Erstelle in Azure ein Speicherkonto, und notiere dir die Verbindungszeichenfolge. Weitere Informationen findest du unter Verwalten von Speicherkonto-Zugriffsschlüsseln in der Microsoft-Dokumentation.

Hinweis

GitHub Enterprise Importer löscht dein Archiv nach Abschluss der Migration nicht aus Azure Blob Storage. Zur Verringerung der Speicherkosten wird empfohlen, das automatische Löschen deines Archivs nach einem bestimmten Zeitraum zu konfigurieren. Weitere Informationen findest du unter Optimieren von Kosten durch automatisches Verwalten des Datenlebenszyklus in der Microsoft-Dokumentation.

Verwenden des lokalen Speichers (GHES 3.16 und höher)

Wenn du eine Migration mit lokalem Speicher ausführst, werden Archivdaten auf den Datenträger auf deine GitHub Enterprise Server-Instanz geschrieben, ohne dass ein Cloudspeicheranbieter erforderlich ist.

  • Wenn du keine Firewallregeln hast, die den ausgehenden Datenverkehr von GitHub Enterprise Server blockieren, kann GitHub Enterprise Importer das gespeicherte Archiv automatisch von GitHub Enterprise Server abrufen.
  • Wenn du Firewallregeln hast und den Zugriff auf GitHub Enterprise Importer nicht zulassen möchtest, kannst du deine Archivdaten in GitHub-owned blob storage hochladen, damit GitHub Enterprise Importer darauf zugreifen kann. Informationen zur manuellen Ausführung findest du in der API-Version dieses Artikels unter Hochladen der Migrationsarchive in Blob Storage im Besitz von GitHub.
  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .
  2. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.
  3. Melde dich bei Verwaltungskonsole an.
  4. Klicke auf der linken Randleiste auf Migrations.
  5. Klicke auf Enable GitHub Migrations.
  6. Klicke unter „Migrations Storage“ auf Local Storage.
  7. Klicke auf Save settings (Einstellungen speichern).

Wenn du die Migration durchführst, überwache den Speicherplatz auf GitHub Enterprise Server. Migrationsarchive werden nach 7 Tagen automatisch gelöscht. Um Speicherplatz freizugeben, kannst du ein Archiv mithilfe von REST-API-Endpunkte für Organisationsmigrationen löschen.

Konfigurieren der Anmeldeinformationen deines Blobspeichers

Wenn Sie Blob-Speicher bei einem Cloud-Anbieter (im Gegensatz zu lokalem Speicher) einrichten, müssen Sie Ihre Zugangsdaten für den Speicheranbieter in GitHub konfigurieren:

  • Wenn Sie GitHub Enterprise Server Version 3.8 oder höher verwenden, konfigurieren Sie Ihre Anmeldeinformationen in Verwaltungskonsole.
  • Wenn Sie GitHub Enterprise Server 3.7 oder niedriger verwenden, konfigurieren Sie die Anmeldeinformationen in GitHub CLI.

Konfigurieren von Blobspeicher im Bereich Verwaltungskonsole von deine GitHub Enterprise Server-Instanz

Hinweis

Sie müssen den Blob-Speicher nur in der Verwaltungskonsole konfigurieren, wenn Sie GitHub Enterprise Server 3.8 oder höher verwenden. Wenn Sie Version 3.7 oder niedriger verwenden, konfigurieren Sie Ihre Anmeldeinformationen stattdessen im GitHub CLI.

Nachdem du einen AWS S3-Speicherbucket oder ein Azure Blob Storage-Speicherkonto eingerichtet hast, konfigurierst du den Blobspeicher an der Verwaltungskonsole von deine GitHub Enterprise Server-Instanz. Weitere Informationen zur Verwaltungskonsole findest du unter Verwalten von Instanzen über die Verwaltungskonsole.

  1. Klicke in einem Verwaltungskonto für GitHub Enterprise Server in der rechten oberen Ecke einer beliebigen Seite auf .

  2. Wenn du dich nicht bereits auf der Seite „Websiteadministrator“ befindest, klicke in der oberen linken Ecke auf Websiteadministrator. 1. Klicke in der Randleiste „ Site admin“ auf Verwaltungskonsole.

  3. Melde dich an der Verwaltungskonsole an.

  4. Wähle auf der oberen Navigationsleiste Einstellungen aus.

  5. Wähle unter Migrationen die Option GitHub-Migrationen aktivieren aus.

  6. Wähle optional zum Importieren von Speichereinstellungen, die du für GitHub Actions konfiguriert hast, die Option Speichereinstellungen aus Actions kopieren aus. Weitere Informationen findest du unter Aktivieren von GitHub Actions mit Azure Blob Storage und Aktivieren von GitHub Actions mit Amazon S3-Speicher.

    Hinweis

    Nach dem Kopieren deiner Speichereinstellungen musst du möglicherweise die Konfiguration deines Cloud-Speicherkontos aktualisieren, um mit GitHub Enterprise Importer zu arbeiten. Insbesondere müssen Sie sicherstellen, dass die IP-Adressen von GitHub zugelassen sind. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

  7. Wenn du keine Speichereinstellungen aus GitHub Actions importierst, wähle entweder Azure Blob Storage oder Amazon S3 aus, und gib die erforderlichen Details ein.

    Hinweis

    Bei Verwendung von Amazon S3 muss die „AWS Service-URL“ auf den Standard-Endpunkt für die AWS-Region festgelegt werden, in der sich der Bucket befindet. Wenn sich der Bucket beispielsweise in der Region eu-west-1 befindet, lautet die „AWS Service-URL“ https://s3.eu-west-1.amazonaws.com . Das Netzwerk Ihrer GitHub Enterprise Server-Instanz muss den Zugriff auf diesen Host zulassen. Gateway-Endpunkte werden nicht unterstützt, wie z. B. bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com. Weitere Informationen zu Gateway-Endpunkten finden Sie in der AWS-Dokumentation unter Gateway-Endpunkte für Amazon S3.

  8. Wähle Speichereinstellungen testen aus.

  9. Klicke auf Save settings (Einstellungen speichern).

Konfiguration Ihrer Anmeldeinformationen für den Blobspeicher in der GitHub CLI

Hinweis

Sie müssen Ihre Blob-Speicher-Anmeldeinformationen nur dann im GitHub CLI konfigurieren, wenn Sie GitHub Enterprise Server 3.7 oder niedriger verwenden. Wenn Sie Version 3.8 oder höher verwenden, konfigurieren Sie den Blob Storage stattdessen im Verwaltungskonsole.

Wenn Sie Ihre Anmeldeinformationen für den Blob-Speicher in der Datei GitHub CLI konfigurieren, können Sie keine Migrationen durchführen, deren Git-Quellrepository oder Metadatenexporte 2 GB überschreiten. Um diese Migrationen durchzuführen, führen Sie ein Upgrade auf GitHub Enterprise Server 3.8 oder höher durch.

Konfigurieren von AWS S3-Anmeldeinformationen in GitHub CLI

Wenn du bereit bist, die Migration auszuführen, musst du deine AWS-Anmeldeinformationen in der GitHub CLI angeben: Region, Zugriffsschlüssel, geheimer Schlüssel und Sitzungstoken (falls erforderlich). Du kannst sie als Argumente übergeben oder die Umgebungsvariablen AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_SESSION_TOKEN festlegen.

Du musst auch den Namen des S3-Buckets im --aws-bucket-name.Argument übergeben.

Konfiguration der Anmeldeinformationen für das Azure Blob Storage-Konto in der GitHub CLI

Wenn du bereit bist, die Migration auszuführen, kannst du deine Verbindungszeichenfolge entweder als Argument an die GitHub CLI übergeben oder mithilfe der Umgebungsvariable AZURE_STORAGE_CONNECTION_STRING übergeben.

Zulassen des Netzwerkzugriffs

Wenn Sie Firewallregeln für Ihr Speicherkonto konfiguriert haben, müssen Sie sicherstellen, dass Sie Zugriff auf die IP-Adressbereiche für Ihr Migrationsziel haben. Weitere Informationen findest du unter Verwalten des Zugriffs für eine Migration zwischen GitHub-Produkten.

Schritt 5: Generieren eines Migrationsskripts

Wenn du mehrere Repositorys gleichzeitig zu GitHub Enterprise Cloud migrieren möchtest, verwendest du die GitHub CLI, um ein Migrationsskript zu generieren. Das resultierende Skript enthält eine Liste von Migrationsbefehlen (einen pro Repository).

Hinweis

Beim Generieren eines Skripts wird ein PowerShell-Skript ausgegeben. Wenn du ein Terminal verwendest, musst du das Skript mit der Erweiterung .ps1 ausgeben und PowerShell für Mac oder Linux installieren, um es auszuführen.

Wenn du ein einzelnes Repository migrieren möchtest, fahre mit dem nächsten Schritt fort.

Generieren eines Migrationsskripts

Du musst diesen Schritt von einem Computer aus ausführen, der auf die API für deine GitHub Enterprise Server-Instanz zugreifen kann. Wenn du über den Browser auf deine Instanz zugreifen kannst, hat der Computer den erforderlichen Zugriff.

Führe den Befehl gh gei generate-script aus, um ein Migrationsskript zu generieren.

Für GitHub Enterprise Server 3.8 oder höher oder wenn Sie 3.7 oder niedriger mit Azure Blob Storage verwenden, verwenden Sie die folgenden Flags:

Shell
gh gei generate-script --github-source-org SOURCE \
  --github-target-org DESTINATION \
  --output FILENAME \
  --ghes-api-url GHES-API-URL

Wenn Sie GitHub Enterprise Server Version 3.7 oder niedriger mit AWS S3 verwenden, verwenden Sie die folgenden Flags:

Shell
gh gei generate-script --github-source-org SOURCE \
  --github-target-org DESTINATION \
  --output FILENAME \
  --ghes-api-url GHES-API-URL \
  --aws-bucket-name AWS-BUCKET-NAME

Platzhalter

Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.

PlatzhalterWert
SOURCEName der Ursprungsorganisation
DESTINATIONName der Zielorganisation
FILENAMEEin Dateiname für das resultierende Migrationsskript

Wenn du das Terminal verwendest, legst du als Erweiterung .ps1 fest, da für das generierte Skript PowerShell ausgeführt werden muss. Du kannst PowerShell für Mac oder Linux installieren.
GHES-API-URLDie URL für die API von deine GitHub Enterprise Server-Instanz, z. B. https://myghes.com/api/v3
AWS-BUCKET-NAMEDer Bucketname für deinen AWS S3-Bucket

Zusätzliche Argumente

ArgumentBESCHREIBUNG
--download-migration-logsÜberprüfen Sie das Migrationsprotokoll für jedes migrierte Repository. Weitere Informationen zu Migrationsprotokollen findest du unter Zugriff auf die Migrationsprotokolle von GitHub Enterprise Importer.
--lock-source-repoSperren Sie das Quell-Repository bei der Migration.
Warnung: Das Sperren eines Quell-Repositorys verhindert weitere Änderungen und kann Workflows stören. Es wird empfohlen, diese Option nur zu verwenden, wenn Sie sicher sind, dass sie geeignet ist. Weitere Informationen finden Sie unter Informationen zu gesperrten Repositorys.
--no-ssl-verifyWenn deine GitHub Enterprise Server-Instanz ein selbstsigniertes oder ungültiges SSL-Zertifikat verwendet, gibst du das Flag --no-ssl-verify an. Mit diesem Flag überspringt die GitHub CLI die Überprüfung des SSL-Zertifikats, wenn nur aus deiner Instanz Daten extrahiert werden. Alle anderen Aufrufe werden per SSL überprüft.
--skip-releasesWenn dein Repository mehr als 10 GB Releasedaten enthält, können Releases nicht migriert werden. Verwende das Flag --skip-releases, um das Repository ohne Releases zu migrieren.
--target-api-url TARGET-API-URLWenn du zu GHE.com migrierst, füge --target-api-url TARGET-API-URL hinzu, wobei TARGET-API-URL die Basis-API-URL für die Unterdomäne deines Unternehmens ist. Beispiel: https://api.octocorp.ghe.com
--use-github-storageFühren Sie eine Repositorymigration mithilfe von GitHub-owned blob storage als zwischengeschaltete Blobspeicherlösung durch.

Überprüfen des Migrationsskripts

Nachdem du das Skript generiert hast, überprüfst du die Datei, und bearbeitest ggf. das Skript.

  • Wenn du einige Repositorys nicht migrieren möchtest, kannst du die entsprechenden Zeilen löschen oder auskommentieren.
  • Wenn Repositorys in der Zielorganisation einen anderen Namen erhalten sollen, aktualisiere den Wert für das entsprechende Flag --target-repo.
  • Wenn Sie die Sichtbarkeit eines neuen Repositorys ändern möchten, aktualisieren Sie den Wert für das entsprechende --target-repo-visibility Flag. Standardmäßig legt das Skript die gleiche Sichtbarkeit wie für das Quellrepository fest.

Wenn dein Repository mehr als 10 GB Releasedaten enthält, können Releases nicht migriert werden. Verwende das Flag --skip-releases, um das Repository ohne Releases zu migrieren.

Wenn Sie GEI als eigenständige Binärdatei heruntergeladen haben und nicht als Erweiterung für die GitHub CLI, müssen Sie das generierte Skript aktualisieren, um die Binärdatei anstelle von gh gei auszuführen.

Schritt 6: Migrieren von Repositorys

Mit dem Befehl gh gei migrate-repo kannst mehrere Repositorys mit einem Migrationsskript oder einem einzelnen Repository migrieren.

Wenn Sie Repositories migrieren, führt GEI extension of the GitHub CLI die folgenden Schritte aus:

  1. Stellt eine Verbindung mit deine GitHub Enterprise Server-Instanz und generiert zwei Migrationsarchive pro Repository, eine für die Git-Quelle und eine für die Metadaten.
  2. Hochladen der Migrationsarchive in den Blobspeicheranbieter deiner Wahl
  3. Starten Sie die Migration mithilfe von GitHub Enterprise Cloudden URLs der Archive, die bei Ihrem Blob-Speicheranbieter gespeichert sind.
  4. Löschen des Migrationsarchivs von deinem lokalen Computer

Migrieren mehrerer Repositorys

Wenn Sie von GitHub Enterprise Server 3.7 oder einer früheren Version migrieren, müssen Sie vor dem Ausführen des Skripts zusätzliche Umgebungsvariablen festlegen, um sich bei Ihrem BLOB-Speicheranbieter zu authentifizieren.

  • Lege für Azure Blob Storage AZURE_STORAGE_CONNECTION_STRING auf die Verbindungszeichenfolge für dein Azure Storage-Konto fest.

    Es werden nur Verbindungszeichenfolgen mit Zugriffsschlüsseln für Speicherkonten unterstützt. Verbindungszeichenfolgen, die Shared Access Signatures (SAS) verwenden, werden nicht unterstützt. Weitere Informationen zu Zugriffsschlüsseln für Speicherkonten findest du unter Verwalten von Speicherkonto-Zugriffsschlüsseln in der Azure-Dokumentation.

  • Lege für AWS S3 die folgenden Umgebungsvariablen fest.

    • AWS_ACCESS_KEY_ID: Zugriffsschlüssel-ID für Ihr Bucket
    • AWS_SECRET_ACCESS_KEY: Der geheime Schlüssel für Ihr Bucket
    • AWS_REGION: Die AWS-Region, in der sich Ihrem Bucket befindet
    • AWS_SESSION_TOKEN: Das AWS-Sitzungstoken, wenn Sie temporäre AWS-Anmeldeinformationen verwenden (siehe Verwenden temporärer Anmeldeinformationen mit AWS-Ressourcen in der AWS-Dokumentation)

Um mehrere Repositorys zu migrieren, führen Sie das von Ihnen generierte Skript aus. Ersetze FILENAME in den folgenden Befehlen durch den Dateinamen, den du beim Generieren des Skripts angegeben hast.

  • Wenn du ein Terminal verwendest, gibst du ./ ein.

    Shell
    ./FILENAME
    
  • Wenn du PowerShell verwendest, gibst du .\ ein.

    Shell
    .\FILENAME
    

Migrieren eines einzelnen Repositorys

Du musst diesen Schritt von einem Computer aus ausführen, der auf die API für deine GitHub Enterprise Server-Instanz zugreifen kann. Wenn du über den Browser auf deine Instanz zugreifen kannst, hat der Computer den erforderlichen Zugriff.

Verwende den Befehl gh gei migrate-repo, um ein einzelnes Repository zu migrieren.

Wenn Sie GitHub Enterprise Server 3.8 oder höher verwenden, verwenden Sie die folgenden Flags:

Shell
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL

Wenn Sie von GitHub Enterprise Server 3.7 oder einer früheren Version migrieren und Azure Blob Storage als Blob-Speicheranbieter verwenden, verwenden Sie die folgenden Flags, um sich zu authentifizieren:

Shell
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
    --ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"

Wenn Sie von GitHub Enterprise Server 3.7 oder früher migrieren und Amazon S3 als Blob-Speicheranbieter verwenden, verwenden Sie die folgenden Flags, um sich zu authentifizieren:

Shell
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
    --ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"

Platzhalter

Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.

PlatzhalterWert
SOURCEName der Ursprungsorganisation
CURRENT-NAMEDer Name des Repositorys, das du migrieren möchtest
DESTINATIONName der Zielorganisation
NEW-NAMEDer Name für das migrierte Repository
GHES-API-URLDie URL für die API von deine GitHub Enterprise Server-Instanz, z. B. https://myghes.com/api/v3
AZURE_STORAGE_CONNECTION_STRINGDie Verbindungszeichenfolge für dein Azure Storage-Konto.

Stelle sicher, dass du die Verbindungszeichenfolge in Anführungszeichen setzt, da sie Zeichen enthält, die andernfalls wahrscheinlich von der Shell interpretiert werden.
AWS-BUCKET-NAMEDer Bucketname für deinen AWS S3-Bucket

Zusätzliche Argumente

ArgumentBESCHREIBUNG
--lock-source-repoSperren Sie das Quell-Repository bei der Migration. Weitere Informationen finden Sie unter Informationen zu gesperrten Repositorys.
--no-ssl-verifyWenn deine GitHub Enterprise Server-Instanz ein selbstsigniertes oder ungültiges SSL-Zertifikat verwendet, gibst du das Flag --no-ssl-verify an. Mit diesem Flag überspringt die GitHub CLI die Überprüfung des SSL-Zertifikats, wenn nur aus deiner Instanz Daten extrahiert werden. Alle anderen Aufrufe werden per SSL überprüft.
--skip-releasesWenn dein Repository mehr als 10 GB Releasedaten enthält, können Releases nicht migriert werden. Verwende das Flag --skip-releases, um das Repository ohne Releases zu migrieren.
--target-api-url TARGET-API-URLWenn du zu GHE.com migrierst, füge --target-api-url TARGET-API-URL hinzu, wobei TARGET-API-URL die Basis-API-URL für die Unterdomäne deines Unternehmens ist. Beispiel: https://api.octocorp.ghe.com
--target-repo-visibility TARGET-VISIBILITYRepositorys werden standardmäßig mit privater Sichtbarkeit migriert. Um die Sichtbarkeit festzulegen, können Sie das Flag --target-repo-visibility hinzufügen und private, public oder internal angeben. Wenn Sie zu Unternehmen mit verwalteten Benutzer*innen migrieren, sind öffentliche Repositorys nicht verfügbar.
--use-github-storageFühren Sie eine Repository-Migration mit GitHub-owned blob storage als temporäre Blobspeicherlösung aus.

Abbrechen der Migration

Wenn Sie eine Migration abbrechen möchten, verwenden Sie den Befehl abort-migration und ersetzen Sie die MIGRATIONS-ID durch die zurückgesendete ID migrate-repo.

Shell
gh gei abort-migration --migration-id MIGRATION-ID

Schritt 7: Überprüfen der Migration und des Fehlerprotokolls

Nachdem die Migration abgeschlossen ist, solltest du das Migrationsprotokoll überprüfen. Weitere Informationen finden Sie unter Zugriff auf die Migrationsprotokolle von GitHub Enterprise Importer. Falls Ihr Quell-Repository Regelsätze enthielt und Sie von diesen blockiert werden, lesen Sie Festlegen von Regelsatzumgehungen für Repositorymigrationen.

Es wird empfohlen, eine Zuverlässigkeitsprüfung deiner migrierten Repositorys durchzuführen.

Nach Abschluss der Migration wird empfohlen, die Archive aus deinem Speichercontainer zu löschen. Wenn Sie vorhaben, weitere Migrationen durchzuführen, löschen Sie das Archiv, das vom ADO2GH extension in Ihrem Speichercontainer abgelegt wurde. Wenn du mit der Migration fertig bist, kannst du den gesamten Container löschen.