Informationen zu Repository-Migrationen mit GitHub Enterprise Importer
Sie können einzelne Repositories oder alle Repositories von einer BitBucket-Server-Instanz mithilfe von GitHub CLI migrieren.
Zurzeit wird die Migration von Bitbucket-Server mit der GitHub API nicht unterstützt.
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:
- Navigieren Sie zu jedem Unternehmens- oder Organisationsregelsatz.
- Klicken Sie im Abschnitt "Umgehungsliste" auf "Umgehungsumgehung hinzufügen".
- 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. Um mehr über das Ausführen von Tests zu erfahren, siehe Übersicht über die Migration von Butbucket Server zu GitHub Enterprise Cloud.
- 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 von Butbucket Server zu GitHub Enterprise Cloud.
- 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.
- Für die Zielorganisation auf GitHub.com müssen Sie Organisationsinhaber sein oder über die Migrator-Rolle verfügen. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration von Bitbucket Server.
- Du benötigst den Benutzernamen und das Kennwort für ein Bitbucket Server-Konto mit Administrator- oder Superadministratorberechtigungen.
Schritt 1: Installieren des BBS2GH extension of the GitHub CLI
Falls dies Ihre erste Migration ist, müssen Sie BBS2GH extension of the GitHub CLI installieren. Weitere Informationen zu 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-bbs2gh-Repository herunterladen. Sie können diese Binärdatei direkt ohne das gh-Präfix ausführen.
-
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 --versionermitteln. -
Installieren Sie BBS2GH extension.
Shell gh extension install github/gh-bbs2gh
gh extension install github/gh-bbs2gh
Wenn du Hilfe zur BBS2GH extension benötigst, kannst du immer das Flag --help mit einem Befehl verwenden. Mit gh bbs2gh --help listest du z. B. alle verfügbaren Befehle auf, und mit gh bbs2gh migrate-repo --help zeigst du alle Optionen an, die für den Befehl migrate-repo verfügbar sind.
Schritt 2: Aktualisieren des BBS2GH extension of the GitHub CLI
Die BBS2GH extension of the GitHub CLI wird wöchentlich aktualisiert. Aktualisieren die Erweiterung, um sicherzustellen, dass du die neueste Version verwendest.
gh extension upgrade github/gh-bbs2gh
gh extension upgrade github/gh-bbs2gh
Schritt 3: Festlegen der Umgebungsvariablen
Bevor Sie BBS2GH extension für die Migration zu GitHub Enterprise Cloud verwenden können, müssen Sie ein personal access token erstellen, das auf die Zielorganisation zugreifen kann, und anschließend personal access token als Umgebungsvariable festlegen.
Außerdem müssen Umgebungsvariablen für den Benutzernamen und das Kennwort deiner Bitbucket Server-Instanz sowie ggf. für dein SMB-Kennwort festgelegt werden. Letzteres ist erforderlich, wenn deine Bitbucket Server-Instanz unter Windows ausgeführt wird.
-
Erstellen und speichern Sie ein personal access token (classic), das die Authentifizierung für die Zielorganisation auf GitHub Enterprise Cloud durchführt, und stellen Sie dabei sicher, dass das Token alle Anforderungen erfüllt. Weitere Informationen finden Sie unter Verwalten des Zugriffs für eine Migration von Bitbucket Server.
-
Legen Sie die Umgebungsvariablen fest, wobei Sie TOKEN durch das oben aufgezeichnete personal access token, USERNAME durch den Benutzernamen eines Bitbucket-Serverkontos mit Administrator- oder Superadministratorberechtigungen und PASSWORD durch das Kennwort für das Bitbucket-Serverkonto ersetzen.
-
Wenn du ein Terminal verwendest, führe den Befehl
exportaus.Shell export GH_PAT="TOKEN" export BBS_USERNAME="USERNAME" export BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows export SMB_PASSWORD="PASSWORD"
export GH_PAT="TOKEN" export BBS_USERNAME="USERNAME" export BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows export SMB_PASSWORD="PASSWORD" -
Wenn du PowerShell verwendest, führe den Befehl
$envaus.Shell $env:GH_PAT="TOKEN" $env:BBS_USERNAME="USERNAME" $env:BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows $env:SMB_PASSWORD="PASSWORD"
$env:GH_PAT="TOKEN" $env:BBS_USERNAME="USERNAME" $env:BBS_PASSWORD="PASSWORD" # If your Bitbucket Server instance runs on Windows $env:SMB_PASSWORD="PASSWORD"
-
-
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
SUBDOMAINdurch 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
exportaus.Shell export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com" -
Wenn du PowerShell verwendest, führe den Befehl
$envaus.Shell $env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
$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
Da viele Bitbucket-Serverinstanzen hinter Firewalls sitzen, verwendet der GitHub CLI BLOB-Speicher als Zwischenspeicherort, um Ihre Daten zu speichern, die aus dem Internet erreichbar sind.
Du generierst zunächst ein Archiv der Daten, die du migrieren möchtest, und pushst die Daten durch deine Firewall in den Blobspeicher.
Die GitHub CLI unterstützt die folgenden Blobspeicheranbieter:
- Amazon Web Services S3 (AWS)
- Azure Blob Storage
Bevor du eine Migration ausführen kannst, musst du einen Speichercontainer mit dem gewünschten Cloudanbieter zum Speichern deiner Daten einrichten.
Verwenden von GitHub-owned blob storage
Wenn Sie kein Blobspeicherkonto hinter Ihrer Firewall einrichten und GitHub Enterprise Importer keinen Zugriff darauf gewähren möchten, können Sie Repositories mit GitHub-owned blob storage unter Verwendung des Flags --use-github-storage migrieren. Dazu müssen Sie v1.9.0 (oder höher) von BBS2GH extension of the GitHub CLI verwenden.
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.
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.
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.
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.
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 von Bitbucket Server.
Schritt 5: Migrieren eines Repositorys
Du kannst Repositorys mit dem Befehl gh bbs2gh migrate-repo migrieren.
Wenn Sie ein Repository migrieren, führt BBS2GH extension of the GitHub CLI standardmäßig die folgenden Schritte aus:
- Herstellen einer Verbindung mit deiner Bitbucket Server-Instanz und Generieren jeweils eines Migrationsarchivs pro Repository
- Lädt das Migrationsarchiv von der Bitbucket Server-Instanz auf den Computer herunter, auf dem Sie BBS2GH extension of the GitHub CLI ausführen, über SFTP (Linux) oder SMB (Windows).
- Hochladen der Migrationsarchive in den Blobspeicheranbieter deiner Wahl
- Starten Sie die Migration mithilfe von GitHub Enterprise Cloudden URLs der Archive, die bei Ihrem Blob-Speicheranbieter gespeichert sind.
- Löschen des Migrationsarchivs von deinem lokalen Computer (Nach Abschluss der Migration musst du das Archiv manuell aus deinem Blobspeicheranbieter löschen.)
Alternativ können Sie GitHub CLI verwenden, um das Archiv zu erstellen, dieses Archiv manuell herunterzuladen und dann GitHub CLI verwenden, um die Migration fortzusetzen.
- Dem/Der GitHub CLI erlauben, das Migrationsarchiv herunterzuladen
- Das Migrationsarchiv manuell herunterladen
Dem GitHub CLI das Herunterladen des Migrationsarchivs erlauben
Verwende den Befehl gh bbs2gh migrate-repo, um ein einzelnes Repository zu migrieren.
Dieser Schritt muss über einen Computer ausgeführt werden, der über Zugriff auf Folgendes verfügt:
- Deine Bitbucket Server-Instanz über HTTPS
- Deine Bitbucket Server-Instanz über SFTP, wenn deine Bitbucket Server-Instanz unter Linux ausgeführt wird. Allgemein gilt: Wenn du über SSH auf den Server zugreifen kannst, kannst du auch SFTP verwenden.
- Deine Bitbucket Server-Instanz über SMB, wenn deine Bitbucket Server-Instanz unter Windows ausgeführt wird
- Deinen ausgewählten Blobspeicheranbieter
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \ --bbs-project PROJECT --bbs-repo CURRENT-NAME \ --github-org DESTINATION --github-repo NEW-NAME \ # If you are migrating to GHE.com: --target-api-url TARGET-API-URL # If your Bitbucket Server instance runs on Linux: --ssh-user SSH-USER --ssh-private-key PATH-TO-KEY # If your Bitbucket Server instance runs on Windows: --smb-user SMB-USER # If you are using AWS S3 as your blob storage provider: --aws-bucket-name AWS-BUCKET-NAME # If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer: --archive-download-host ARCHIVE-DOWNLOAD-HOST # If you are using GitHub owned blob storage: --use-github-storage
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT --bbs-repo CURRENT-NAME \
--github-org DESTINATION --github-repo NEW-NAME \
# If you are migrating to GHE.com:
--target-api-url TARGET-API-URL
# If your Bitbucket Server instance runs on Linux:
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
# If your Bitbucket Server instance runs on Windows:
--smb-user SMB-USER
# If you are using AWS S3 as your blob storage provider:
--aws-bucket-name AWS-BUCKET-NAME
# If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer:
--archive-download-host ARCHIVE-DOWNLOAD-HOST
# If you are using GitHub owned blob storage:
--use-github-storage
Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.
| Platzhalter | Wert |
|---|---|
| BBS-SERVER-URL | Die URL für deine Bitbucket Server-Instanz |
| PROJECT | Der Schlüssel für das Bitbucket Server-Projekt des Repositorys, das du migrieren möchtest |
| CURRENT-NAME | Der Name des Repositorys, das du migrieren möchtest |
| DESTINATION | Name der Zielorganisation |
| NEW-NAME | Der Name für das migrierte Repository |
| TARGET-API-URL | Die Basis-API-URL für die Unterdomäne deines Unternehmens mit GHE.com. Beispiel: https:/ |
| SSH-USER | Der Benutzername, der beim Herstellen einer Verbindung mit deinem Bitbucket-Server über SFTP verwendet werden soll, wenn deine Bitbucket Server-Instanz unter Linux ausgeführt wird |
| PATH-TO-KEY | Der Pfad zu deinem privaten SSH-Schlüssel (z. B. ~/.ssh/id_rsa), wenn deine Bitbucket Server-Instanz unter Linux ausgeführt wird Informationen zu Anforderungen an SSH-Schlüssel findest du unter Verwalten des Zugriffs für eine Migration von Bitbucket Server. |
| SMB-USER | Der Benutzername, der beim Herstellen einer Verbindung mit deinem Bitbucket-Server über SMB verwendet werden soll, wenn deine Bitbucket Server-Instanz unter Windows ausgeführt wird |
| AWS-BUCKET-NAME | Der Bucketname für deinen AWS S3-Bucket |
| ARCHIVE-DOWNLOAD-HOST | Der Host, der zum Herstellen einer Verbindung mit dem Bitbucket-Server- bzw. Rechenzentrumsinstanz über SSH oder SMB verwendet werden soll. Du musst dies nur angeben, wenn du einen Bitbucket Data Center-Cluster ausführst oder sich dein Bitbucket-Server hinter einem Lastenausgleich befindet. |
Hinweis
Wenn du einen Fehler mit dem Vermerk Renci.SshNet erhältst, hat das CLI Probleme, eine SFTP-Verbindung zu deinem Server herzustellen, um dein Migrationsarchiv herunterzuladen. Informationen zur Fehlerbehebung dieser Probleme findest du unter Problemlösung bei der Migration mit GitHub Enterprise Importer.
Manuelles Herunterladen des Migrationsarchivs
Standardmäßig führt die BBS2GH extension of the GitHub CLI gesamte Migration aus, einschließlich des Herunterladens des Migrationsarchivs aus der Bitbucket-Serverinstanz mit SFTP oder SMB.
Einige Kunden ziehen es jedoch vor, das Migrationsarchiv manuell herunterzuladen, beispielsweise weil ihr Server keinen SFTP-Zugriff bietet. In diesem Fall können Sie GitHub CLI verwenden, um das Archiv zu erstellen, das Archiv manuell herunterzuladen und anschließend mit GitHub CLI die Migration fortzusetzen.
Dieser Schritt muss über einen Computer ausgeführt werden, der über Zugriff auf Folgendes verfügt:
- Deine Bitbucket Server-Instanz über HTTPS
- Deinen ausgewählten Blobspeicheranbieter
Verwende den Befehl gh bbs2gh migrate-repo zunächst nur mit den folgenden Argumenten:
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \ --bbs-project PROJECT \ --bbs-repo CURRENT-NAME
gh bbs2gh migrate-repo --bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT \
--bbs-repo CURRENT-NAME
Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.
| Platzhalter | Wert |
|---|---|
| BBS-SERVER-URL | Die URL für deine Bitbucket Server-Instanz |
| PROJECT | Der Schlüssel für das Bitbucket Server-Projekt des Repositorys, das du migrieren möchtest |
| CURRENT-NAME | Der Name des Repositorys, das du migrieren möchtest |
Dein Migrationsarchiv wird generiert, und der Pfad wird in der Befehlsausgabe ausgegeben:
[12:14] [INFO] Export completed. Your migration archive should be ready on your
instance at $BITBUCKET_SHARED_HOME/data/migration/export/Bitbucket_export_9.tar
Im Allgemeinen wird $BITBUCKET_SHARED_HOME unter Linux auf /var/atlassian/application-data/bitbucket/shared und unter Windows auf C:\Atlassian\ApplicationData\Bitbucket\Shared festgelegt, die Werte können jedoch je nach Serverkonfiguration abweichen. Um dein gemeinsames Home-Verzeichnis zu identifizieren, siehe Problemlösung bei der Migration mit GitHub Enterprise Importer.
Laden Sie das Migrationsarchiv von Ihrer Bitbucket Server-Instanz herunter, und speichern Sie das Archiv auf dem Computer, auf dem Sie die GitHub CLIDatei ausführen.
Um Ihr Migrationsarchiv in GitHub zu importieren, verwenden Sie den Befehl gh bbs2gh migrate-repo erneut, diesmal mit anderen Argumenten:
gh bbs2gh migrate-repo --archive-path ARCHIVE-PATH \ --github-org DESTINATION --github-repo NEW-NAME \ --bbs-server-url BBS-SERVER-URL \ --bbs-project PROJECT \ --bbs-repo CURRENT-NAME \ # If you are using AWS S3 as your blob storage provider: --aws-bucket-name AWS-BUCKET-NAME # If you are migrating to GHE.com: --target-api-url TARGET-API-URL
gh bbs2gh migrate-repo --archive-path ARCHIVE-PATH \
--github-org DESTINATION --github-repo NEW-NAME \
--bbs-server-url BBS-SERVER-URL \
--bbs-project PROJECT \
--bbs-repo CURRENT-NAME \
# If you are using AWS S3 as your blob storage provider:
--aws-bucket-name AWS-BUCKET-NAME
# If you are migrating to GHE.com:
--target-api-url TARGET-API-URL
Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.
| Platzhalter | Wert |
|---|---|
| ARCHIVPFAD | Der Pfad zum Bitbucket Server-Migrationsarchiv, das du aus deiner Instanz heruntergeladen hast |
| DESTINATION | Name der Zielorganisation |
| NEW-NAME | Der Name für das migrierte Repository |
| BBS-SERVER-URL | Die URL für deine Bitbucket Server-Instanz |
| PROJECT | Der Schlüssel für das Bitbucket Server-Projekt des Repositorys, das du migrieren möchtest |
| CURRENT-NAME | Der Name des Repositorys, das du migrieren möchtest |
| AWS-BUCKET-NAME | Der Bucketname für deinen AWS S3-Bucket |
| TARGET-API-URL | Die Basis-API-URL für die Unterdomäne deines Unternehmens mit GHE.com. Beispiel: https:/ |
Abbrechen einer 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.
gh bbs2gh abort-migration --migration-id MIGRATION-ID
gh bbs2gh abort-migration --migration-id MIGRATION-ID
Schritt 6: Ü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.
Schritt 7: Migrieren mehrerer Repositorys
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.
Generieren eines Migrationsskripts
Für diesen Schritt muss ein Computer verwendet werden, der über HTTPS auf deine Bitbucket Server-Instanz zugreifen kann.
Führe den Befehl gh bbs2gh generate-script aus, um ein Migrationsskript zu generieren.
gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \ --github-org DESTINATION \ --output FILENAME \ # If you are migrating to GHE.com: --target-api-url TARGET-API-URL # If your Bitbucket Server instance runs on Linux: --ssh-user SSH-USER --ssh-private-key PATH-TO-KEY # If your Bitbucket Server instance runs on Windows: --smb-user SMB-USER # If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer: --archive-download-host ARCHIVE-DOWNLOAD-HOST # If you are using GitHub owned blob storage: --use-github-storage
gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \
--github-org DESTINATION \
--output FILENAME \
# If you are migrating to GHE.com:
--target-api-url TARGET-API-URL
# If your Bitbucket Server instance runs on Linux:
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
# If your Bitbucket Server instance runs on Windows:
--smb-user SMB-USER
# If you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer:
--archive-download-host ARCHIVE-DOWNLOAD-HOST
# If you are using GitHub owned blob storage:
--use-github-storage
Wenn das Skript das Migrationsprotokoll für jedes migrierte Repository herunterladen soll, fügst du das Flag --download-migration-logs hinzu. Weitere Informationen zu Migrationsprotokollen findest du unter Zugriff auf die Migrationsprotokolle von GitHub Enterprise Importer.
Ersetze die Platzhalter im obigen Befehl durch die folgenden Werte.
| Platzhalter | Wert |
|---|---|
| BBS-SERVER-URL | Die URL für deine Bitbucket Server-Instanz |
| DESTINATION | Name der Zielorganisation |
| FILENAME | Ein 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. |
| TARGET-API-URL | Die Basis-API-URL für die Unterdomäne deines Unternehmens mit GHE.com. Beispiel: https:/ |
| SSH-USER | Der Benutzername, der beim Herstellen einer Verbindung mit deinem Bitbucket-Server über SFTP verwendet werden soll, wenn deine Bitbucket Server-Instanz unter Linux ausgeführt wird |
| PATH-TO-KEY | Der Pfad zu deinem privaten SSH-Schlüssel (z. B. ~/.ssh/id_rsa), wenn deine Bitbucket Server-Instanz unter Linux ausgeführt wird Informationen zu Anforderungen an SSH-Schlüssel findest du unter Verwalten des Zugriffs für eine Migration von Bitbucket Server. |
| SMB-USER | Der Benutzername, der beim Herstellen einer Verbindung mit deinem Bitbucket-Server über SMB verwendet werden soll, wenn deine Bitbucket Server-Instanz unter Windows ausgeführt wird |
| ARCHIVE-DOWNLOAD-HOST | Der Host, der zum Herstellen einer Verbindung mit dem Bitbucket-Server- bzw. Rechenzentrumsinstanz über SSH oder SMB verwendet werden soll. Du musst dies nur angeben, wenn du einen Bitbucket Data Center-Cluster ausführst oder sich dein Bitbucket-Server hinter einem Lastenausgleich befindet. |
Ü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.
- Standardmäßig folgen Repositorynamen in GitHub einer
projectKey-repositoryNameKonvention. Beispielsweise würde ein Bitbucket-Server-Repository namensairports, das Teil des Projektsopen-sourceist und den SchlüsselOShat, in GitHub alsOS-airportsbezeichnet. Wenn Sie möchten, dass Repositorys auf GitHub einen anderen Namen tragen, aktualisieren Sie den Wert für das entsprechende--github-repo-Flag.
Wenn Sie BBS2GH 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 bbs2gh auszuführen.
Ausführen deines Migrationsskripts
Führe das generierte Skript aus, um deine Repositorys zu migrieren.
Dieser Schritt muss über einen Computer ausgeführt werden, der über Zugriff auf Folgendes verfügt:
- Deine Bitbucket Server-Instanz über HTTPS
- Deine Bitbucket Server-Instanz über SFTP, wenn deine Bitbucket Server-Instanz unter Linux ausgeführt wird. Allgemein gilt: Wenn du über SSH auf den Server zugreifen kannst, kannst du auch SFTP verwenden.
- Deine Bitbucket Server-Instanz über SMB, wenn deine Bitbucket Server-Instanz unter Windows ausgeführt wird
- Deinen ausgewählten Blobspeicheranbieter
Bevor du das Skript ausführst, musst du zusätzliche Umgebungsvariablen für die Authentifizierung bei deinem Blobspeicheranbieter festlegen.
- Lege für AWS S3 die folgenden Umgebungsvariablen fest.
AWS_ACCESS_KEY_ID: Zugriffsschlüssel-ID für Ihr BucketAWS_SECRET_ACCESS_KEY: Der geheime Schlüssel für Ihr BucketAWS_REGION: Die AWS-Region, in der sich Ihrem Bucket befindetAWS_SESSION_TOKEN: Das AWS-Sitzungstoken, wenn Sie temporäre AWS-Anmeldeinformationen verwenden (siehe Verwenden temporärer Anmeldeinformationen mit AWS-Ressourcen in der AWS-Dokumentation)
- Lege für Azure Blob Storage
AZURE_STORAGE_CONNECTION_STRINGauf 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.
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
./FILENAME -
Wenn du PowerShell verwendest, gibst du
.\ein.Shell .\FILENAME
.\FILENAME