Skip to content

github/gh-gei

main
Switch branches/tags
Code

Latest commit

…ei and ado2gh (#382)

* Add --download-migration-logs option to generate-script.

* Wrap a couple commands in Exec in GenerateScriptCommand.

* Remove unused param to MigrateGithubRepoScript in GenerateScriptCommand.

* Add more tests for GenerateScriptCommand with migration logs.

* Remove extra param from MigrateGithubRepoScript calls.

* Add release notes for --download-migration-logs option.

* Add --download-migration-logs to ado2gh generate-script.

* Always check exit code of migrate-repo in parallel ADO scripts.

* Add tests for downloading migration logs to GenerateScriptCommandTests.

* Pass --download-migration-logs to integration tests.

* Fix possibly null variable in GenerateScriptCommandTests.

* Add DownloadMigrationLogs to GenerateScriptOptions in GenerateScriptCommand.

* Remove some unused parameters from GenerateScriptCommand.

* Include download-logs command ado2gh generate-script's --all.

* Add AssertMigrationLogFileExists integration test helper.

* Add ado2gh integration tests to ensure migration logs exist.

* Add gei integration tests to ensure migration logs exist.

* Use better log message for AssertMigrationLogFileExists helper.

* Use async Task in AssertMigrationLogFileExists helper.

* Add --wait option to download-logs command for gei.

* Add --wait option to download-logs command for ado2gh.

* Add --wait to download-logs in gei GenerateScriptCommand.

* Add --wait to download-logs in ado2gh GenerateScriptCommand.

* Remove unnessary assignments from DownloadLogsCommand classes.

* Fix style to ifs in DownloadLogsCommand classes.

* Un-hide download-logs commands from gei and ado2gh.

* Update gei DownloadLogsCommand to always retry with a timeout.

* Update ado2gh DownloadLogsCommand to always retry with a timeout.

* Add comment to timeoutMinutes var in DownloadLogsCommandTests.

* Check for --timeout-minutes param in DownloadLogsCommandTests.

* Don't pass --wait to download-logs in GenerateScriptCommand.

* Don't pass --wait to download-logs in ado2gh GenerateScriptCommand.

* Use Pascal case in names for all tests.

* Use var instead of explicit type in DownloadLogsCommand classes.

* Add readonly to DateTimeNow Funcs.

* Fix Pascal case on a couple DownloadLogsCommand tests.

* Use hard-coded timeout in gei DownloadLogsCommand.

* Remove unused variable in gei DownloadLogsCommandTests.

* Use hard-coded timeout in ado2gh DownloadLogsCommand.

* Use constants in DownloadLogsCommandTests test classes.

* Add newline in a test for gei DownloadLogsCommand.

* Update grammar in DownloadLogsCommand classes.

* Use syntactic sugar null check in DownloadLogsCommand classes.

* Remove async from AssertMigrationLogFileExists.

* Use BeTrue() in AssertMigrationLogFileExists.

* Use implicit type in for loops in DownloadLogsCommand classes.

* Remove redundant cast to string in DownloadLogsCommandTests classes.

* Add 24h availability warning to gei DownloadLogsCommand.

* Add 24h availability warning to ado2gh DownloadLogsCommand.

* Remove null params to Invoke in DownloadLogsCommandTests classes.

* Remove --download-migration-logs from ado2gh integration tests.

* Don't include org name in start of migration log output.

* Don't test for log output in DownloadLogsCommand classes.

* Call download-logs command after other ado2gh commands.

co-authored-by: Dylan Smith <dylan-smith@github.com>

* Add DOWNLOAD MIGRATION LOGS output in ado2gh generate-script.

* adopted Polly for retry logic

* Refactor gei test for single ADO repo with migration logs.

* Refactor gei test for ADO server with single repo and migration logs.

* Refactor remaining gei GenerateScriptCommandTests.

* Join GetOsDistPath() in AssertMigrationLogFileExists.

* Make _httpRetryInterval readonly in RetryPolicy.

* Use Polly in gei DownloadLogsCommand.

* Remove unused "using" in DownloadLogsCommandTests.

* Fix broken tests from merging main.

* Add verbose logs to HttpDownloadService.

* Fix curly location in HttpDownloadService.

Co-authored-by: Dylan Smith <dylan-smith@github.com>
5b17740

Git stats

Files

Permalink
Failed to load latest commit information.

GitHub Enterprise Importer CLI

Actions Status: CI

The GitHub Enterprise Importer (GEI, formerly Octoshift) is a highly customizable API-first migration offering designed to help you move your enterprise to GitHub Enterprise Cloud. The GEI-CLI wraps the GEI APIs as a cross-platform console application to simplify customizing your migration experience.

GEI is in a public beta for GitHub Enterprise Cloud.

Using the GEI CLI

There are 2 separate CLIs that we ship:

  • gh gei - Intended for running migrations from anywhere supported to GitHub.
  • ado2gh - Extends the basic migration support in gh gei to include extra commands such as re-wiring Azure Pipelines and configure Azure Boards integration post-migration.

To use ado2gh download the latest version from the Releases in this repo.

To use gh gei first install the latest GitHub CLI, then run the command

gh extension install github/gh-gei

We update the gei extension frequently, to ensure you're using the latest version run this command on a regular basis:

gh extension upgrade github/gh-gei

To see the available commands and options run:

ado2gh --help

gh gei --help

GitHub to GitHub Usage (GHEC -> GHEC)

  1. Create Personal Access Tokens with access to the source GitHub org, and the target GitHub org (for more details on scopes needed refer to our official documentation).

  2. Set the GH_SOURCE_PAT and GH_PAT environment variables.

  3. Run the generate-script command to generate a migration script.

gh gei generate-script --github-source-org ORGNAME --github-target-org ORGNAME

  1. The previous command will have created a migrate.ps1 script. Review the steps in the generated script and tweak if necessary.

  2. The migrate.ps1 script requires powershell to run. If not already installed see the install instructions to install powershell on Windows, Linux, or Mac. Then run the script.

Refer to the official documentation for more details (and differences when migrating from GHES or to GHAE).

Azure DevOps to GitHub Usage

  1. Create Personal Access Tokens with access to the Azure DevOps org, and the GitHub org (for more details on scopes needed refer to our official documentation).

  2. Set the ADO_PAT and GH_PAT environment variables.

  3. Run the generate-script command to generate a migration script.

ado2gh generate-script --ado-org ORGNAME --github-org ORGNAME --all

  1. The previous command will have created a migrate.ps1 script. Review the steps in the generated script and tweak if necessary.

  2. The migrate.ps1 script requires powershell to run. If not already installed see the install instructions to install powershell on Windows, Linux, or Mac. Then run the script.

Refer to the official documentation for more details.

Quick Start Videos

You'll find videos below to help you quickly get started with the GEI CLI. Be sure to pick the videos relevant to your migration scenario.

NOTE: We don't update these videos as often as we update the CLI, so they may not exactly match the functionality in the latest release of this CLI.

Migrating from Azure DevOps to GitHub

Video guides below will help you get started with your first migration. Then help you build up to orchestrating a complete end-to-end production migration.

Contributions

See Contributing for more info on how to get involved.