Skip to content

Commit 29dd453

Browse files
release-controller[bot]Release-ControllersophiethekingisaacmbrownCopilot
authored
Patch release notes for GitHub Enterprise Server (#61095)
Co-authored-by: Release-Controller <releasecontroller@github.com> Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> Co-authored-by: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Chris Rose <offbyone@github.com> Co-authored-by: Laura Coursen <lecoursen@github.com> Co-authored-by: John Clement <70238417+jclement136@users.noreply.github.com> Co-authored-by: Pallavi <96553709+pallsama@users.noreply.github.com> Co-authored-by: isaacmbrown <isaacmbrown@github.com> Co-authored-by: Devin Dooley <dooleydevin@github.com>
1 parent ba1c0ca commit 29dd453

41 files changed

Lines changed: 1291 additions & 85 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,6 +1287,12 @@ GHE_LICENSE_FILE=/path/license ghe-license import
12871287
# License synchronized.
12881288
```
12891289
1290+
## Migrations
1291+
1292+
### elm
1293+
1294+
`elm` is the command-line tool for {% data variables.product.prodname_elm %}, a tool for live migrations to {% data variables.enterprise.data_residency_site %}. See [AUTOTITLE](/migrations/elm/elm-cli-reference).
1295+
12901296
## Security
12911297
12921298
### ghe-find-insecure-git-operations

content/admin/data-residency/feature-overview-for-github-enterprise-cloud-with-data-residency.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ By design, the following features are permanently unavailable on {% data variabl
4040
| Feature | Details | More information |
4141
| :- | :- | :- |
4242
| Features unavailable with {% data variables.product.prodname_emus %} | Because {% data variables.product.prodname_emus %} is the only option for identity management on {% data variables.enterprise.data_residency_site %}, features that are unavailable with {% data variables.product.prodname_emus %} on {% data variables.product.prodname_dotcom_the_website %} are also unavailable on {% data variables.enterprise.data_residency_site %}. Notably, these include gists and public repositories. | [AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts) |
43-
| {% data variables.product.prodname_importer %} (the "Import repository" button on {% data variables.product.prodname_dotcom_the_website %}) | Instead, the **{% data variables.product.prodname_importer_proper_name %}** is available to migrate data. See [AUTOTITLE](/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer). | [AUTOTITLE](/migrations/importing-source-code/using-github-importer/about-github-importer) |
43+
| {% data variables.product.prodname_importer %} (the "Import repository" button on {% data variables.product.prodname_dotcom_the_website %}) | This is distinct from **{% data variables.product.prodname_importer_proper_name %}**, which is one of the tools available to migrate data. See [AUTOTITLE](/admin/data-residency/getting-started-with-data-residency-for-github-enterprise-cloud#5-migrate-data). | [AUTOTITLE](/migrations/importing-source-code/using-github-importer/about-github-importer) |
4444

4545
## Features that work differently
4646

content/admin/data-residency/getting-started-with-data-residency-for-github-enterprise-cloud.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ To migrate existing data to your new enterprise on {% data variables.enterprise.
116116
Optionally, you can migrate data to {% data variables.enterprise.data_residency_site %} during your trial. However, migrated organizations will count towards the limit of three new organizations during the trial.
117117

118118
* If you're migrating from {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.prodname_ghe_server %}, Azure DevOps, or Bitbucket Server, you can migrate source code history and metadata with {% data variables.product.prodname_importer_proper_name %}. See [AUTOTITLE](/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer).
119+
* For migrations from {% data variables.product.prodname_ghe_server %} 3.17 and later, you can use {% data variables.product.prodname_elm %}. This offers less downtime and better support for complex monorepos. See [AUTOTITLE](/migrations/elm/about-live-migrations).
119120
* If you're migrating from a different platform, see [AUTOTITLE](/migrations/overview/migration-paths-to-github#migrations-to-ghecom).
120121

121122
### Example script for {% data variables.product.prodname_importer_proper_name %}

content/admin/monitoring-and-managing-your-instance/multiple-data-disks/configuring-multiple-data-disks.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@ title: Configuring multiple data disks
33
product: '{% data variables.product.prodname_ghe_server %}'
44
intro: You can configure additional data disks and use them to host data of different services.
55
versions:
6-
ghes: '>= 3.19'
6+
ghes: '>= 3.17'
77
contentType: concepts
88
category:
99
- Scale your instance
1010
---
1111

12-
> [!NOTE]
13-
> The ability to configure and use multiple data disks is in {% data variables.release-phases.public_preview %} and subject to change. We would love to hear your feedback on the preview. You can share it with your customer success team, or leave a comment in the [community discussion post](https://github.com/orgs/community/discussions/181173). Our preferred option is sharing your feedback with your customer success team.
14-
1512
## Why introduce more disks to the GHES instance?
1613

1714
* Improved resource distribution:
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: About live migrations from GitHub Enterprise Server to GHE.com
3+
shortTitle: About live migrations
4+
intro: 'How do live migrations minimize downtime for developers?'
5+
versions:
6+
fpt: '*'
7+
ghes: '*'
8+
ghec: '*'
9+
contentType: concepts
10+
product: '{% data reusables.elm.ghes-version-requirement %}'
11+
---
12+
13+
{% data reusables.elm.preview-note %}
14+
15+
## What is {% data variables.product.prodname_elm %}?
16+
17+
{% data variables.product.prodname_elm %} ({% data variables.product.prodname_elm_short %}) is a service for migrating repositories from {% data variables.product.prodname_ghe_server %} to {% data variables.enterprise.data_residency %} ({% data variables.enterprise.data_residency_site %}). It is operated using a command line tool on {% data variables.product.prodname_ghe_server %}.
18+
19+
Migrations are "live" because users can continue using the source repository during most of the migration process. After the repository data is initially collected, webhooks check for changes to the repository, such as new commits or updates to settings. These changes are reported to {% data variables.product.prodname_elm_short %} and included in the migration.
20+
21+
An {% data variables.product.prodname_elm_short %} migration includes a single repository. Organization-level data, such as organization settings, teams, and projects, are **not** included in the migration and must be reconfigured manually on the destination enterprise.
22+
23+
## Differences from {% data variables.product.prodname_importer_proper_name %}
24+
25+
{% data variables.product.prodname_elm_short %} and {% data variables.product.prodname_importer_proper_name %} (GEI) are separate tools that both support migrating repositories from {% data variables.product.prodname_ghe_server %} to {% data variables.enterprise.data_residency_site %}.
26+
27+
The main benefits of {% data variables.product.prodname_elm_short %} are:
28+
29+
* **Reduced developer downtime**: During a migration with GEI, developers lose access to the repository for the duration of the migration. This downtime creates risks like blocked deployments or stalled feature work.
30+
* **Monorepo support**: {% data variables.product.prodname_elm_short %} is capable of migrating large, complex monorepos with deep histories. These often exceed the capacity of GEI.
31+
* **Better visibility**: {% data variables.product.prodname_elm_short %} provides detailed repository-level visibility into migration progress, surfacing granular failures so that you can be confident the migrated repository is an accurate replica.
32+
33+
However, because of the higher traffic load associated with live updates, {% data variables.product.prodname_elm_short %} supports fewer concurrent migrations than GEI: {% data reusables.elm.concurrent-migrations %}
34+
35+
You may want to use both tools over the course of a platform migration, prioritizing the repositories that will benefit most from {% data variables.product.prodname_elm_short %}.
36+
37+
## Overview of a migration
38+
39+
Typically, a site administrator runs a migration using the `elm` CLI tool, in a terminal session over SSH. The operator must provide {% data variables.product.pat_generic_plural %} with access to both {% data variables.product.prodname_ghe_server %} and the destination enterprise.
40+
41+
The high-level phases of a migration are:
42+
43+
1. **Creation**: The site admin runs CLI commands to create and start the migration, specifying the source repository and destination.
44+
1. **Preflight checks**: The migration service verifies parameters, tokens, network connectivity, and repository configuration.
45+
1. **Backfill**: The {% data variables.product.prodname_elm_short %} tool does an initial crawl to capture all repository data and sends it to the migration service on the destination platform. During the backfill phase, webhooks check for live updates to the repository as the migration continues.
46+
1. **Cutover**: The source repository is locked and any final live updates are sent to {% data variables.product.prodname_elm_short %}. This is the downtime period for developers.
47+
1. **Completion**: The migration is finished. The site admin can check the data was migrated successfully.
48+
1. **Follow-up**: An organization owner performs follow-up tasks on the destination enterprise, such as reconfiguring organization settings and reattributing activity to users.
49+
50+
## Next steps
51+
52+
To get ready to run a migration, see [AUTOTITLE](/migrations/elm/prepare-for-your-migration).
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: Completing your live migration from GitHub Enterprise Server to GHE.com
3+
shortTitle: Complete your migration
4+
intro: 'Complete follow-up tasks so users can start using the migrated repository.'
5+
versions:
6+
fpt: '*'
7+
ghes: '*'
8+
ghec: '*'
9+
contentType: how-tos
10+
permissions: 'Organization owners on {% data variables.enterprise.data_residency_site %}'
11+
---
12+
13+
{% data reusables.elm.preview-note %}
14+
15+
After you have run a migration with the `elm` CLI tool, there are some follow-up tasks to complete.
16+
17+
## Restore users' access
18+
19+
Because {% data variables.product.prodname_ghe_server %} and {% data variables.enterprise.data_residency_site %} use different provisioning and authentication systems, organization membership is not carried over between platforms. You will need to add users to the organization before you can reattribute activity to them in a migrated repository.
20+
21+
1. If you created a new organization for the migration process, add members to the organization. You can do this manually, but many enterprises manage organization membership from their identity provider (IdP) by syncing enterprise teams with IdP groups.
22+
1. Add organization members to the migrated repositories.
23+
24+
## Reattribute activity to users
25+
26+
{% data reusables.enterprise-migration-tool.about-mannequins %} For more information, see [AUTOTITLE](/migrations/overview/mannequins-and-user-activity).
27+
28+
Once user accounts have been added to the organization on {% data variables.enterprise.data_residency_site %}, you can invite users to reclaim a mannequin's activity. You can do this in the browser or, with the {% data variables.product.prodname_gei_cli %} tool, reclaim mannequins in bulk without the invite process.
29+
30+
### Reclaiming mannequins in the browser
31+
32+
{% data reusables.elm.reclaim-mannequins-in-browser %}
33+
34+
### Reclaiming mannequins in bulk
35+
36+
You can install the {% data variables.product.prodname_gei_cli %} to reclaim mannequins in bulk. See [AUTOTITLE](/migrations/using-github-enterprise-importer/completing-your-migration-with-github-enterprise-importer/reclaiming-mannequins-for-github-enterprise-importer#reclaiming-mannequins-with-the-gei-extension).
37+
38+
## Reattribute Git activity
39+
40+
{% data reusables.elm.git-activity %}
41+
42+
To reattribute Git activity on {% data variables.enterprise.data_residency_site %}, ensure the user's primary email address in your identity provider (IdP) matches the email address used for their commits. With {% data variables.product.prodname_emus %}, users cannot add email addresses to their user account on {% data variables.product.github %}, so users will not be able to reattribute their Git commits independently.
43+
44+
## Recreate organization settings
45+
46+
If you created a new organization for the migration process, restore settings such as policies, organization teams, and projects.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
title: Enterprise Live Migrations CLI reference
3+
shortTitle: ELM CLI reference
4+
intro: 'Detailed usage information for the {% data variables.product.prodname_elm_short %} CLI tool.'
5+
versions:
6+
fpt: '*'
7+
ghes: '*'
8+
ghec: '*'
9+
contentType: reference
10+
---
11+
12+
{% data reusables.elm.preview-note %}
13+
14+
## `elm migration` commands
15+
16+
| Command | Description |
17+
|---|---|
18+
| `elm migration create` | Creates a new migration for a single source repository |
19+
| `elm migration start --migration-id MIGRATION-ID` | Starts a migration |
20+
| `elm migration status --migration-id MIGRATION-ID` | Shows the status, progress, cutover readiness, and timing of a migration |
21+
| `elm migration list` | Lists all migrations and their statuses |
22+
| `elm migration cancel --migration-id MIGRATION-ID` | Cancels a migration in progress |
23+
| `elm migration cutover-to-destination --migration-id MIGRATION-ID` | Initiates the final cutover, locking the source repository and completing the migration |
24+
25+
Some of these commands can take additional options. See the later sections in this article.
26+
27+
## `elm migration create` options
28+
29+
Create a new migration to prepare for repository export and import.
30+
31+
| Flag | Required | Default | Description |
32+
|---|---|---|---|
33+
| `--source-org` | Yes | N/A | Slug of the source organization on {% data variables.product.prodname_ghe_server %} |
34+
| `--source-repo` | Yes | N/A | Name of the source repository |
35+
| `--target-org` | Yes | N/A | Slug of the destination organization on {% data variables.enterprise.data_residency_site %} |
36+
| `--target-repo` | Yes | N/A | Name of the destination repository |
37+
| `--target-api` | Yes | N/A | {% data reusables.elm.ghe-url-description %} |
38+
| `--pat-name` | Yes | N/A | This must be set to a static string: `system-pat` |
39+
| `--target-visibility` | No | `internal` | Visibility of the destination repository. Must be `private` or `internal`. Public repositories are not supported. |
40+
| `--start` | No | `false` | Automatically starts the migration after creating it |
41+
42+
## `elm migration list` options
43+
44+
| Flag | Required | Default | Description |
45+
|---|---|---|---|
46+
| `--status` | No | N/A | Filters results by migration status. Valid values: `created`, `queued`, `in_progress`, `paused`, `completed`, `failed`, `terminated`. |
47+
| `--page-size` | No | N/A | Number of results per page |
48+
| `--after` | No | N/A | Cursor for pagination, from a previous response |
49+
50+
## `elm migration cutover-to-destination` options
51+
52+
| Flag | Required | Default | Description |
53+
|---|---|---|---|
54+
| `--migration-id` | Yes | N/A | The ID of a migration that is ready for cutover. |
55+
| `--force` | No | `false` | By default, the command checks whether the migration target reports readiness before proceeding. Use `--force` to bypass this check when you are certain the migration state is correct. |
56+
57+
## Global flags and variables
58+
59+
The following properties can be provided either as environment variables or as flags on any command, with command flags taking priority. You should set these values _after_ applying the `ghe-config` configuration.
60+
61+
| Variable | Flag | Required | Description |
62+
|----------|------|----------|-------------|
63+
| API_URL | `--api-url` | Yes | Must be set to `{% data reusables.elm.localhost-value %}`. |
64+
| MIGRATION_MANAGER_HMAC_KEY | `--migration-manager-hmac-key` | Yes | Must be set to `{% data reusables.elm.hmac-key-value %}`. |
65+
| MIGRATION_TARGET_URL | `--migration-target-url` | Yes | {% data reusables.elm.ghe-url-description %} |
66+
| MIGRATION_TARGET_TOKEN | `--migration-target-token` | Yes | {% data reusables.elm.ghe-pat-description %} |
67+
| DEBUG_HTTP | `--debug-http` | No | Set to `true` to print the HTTP method, URL, headers, and error response body for each request, for debugging purposes |

content/migrations/elm/index.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: Live migrations from GitHub Enterprise Server to GHE.com
3+
shortTitle: Live migrations (GHES to GHE.com)
4+
intro: 'Use the Enterprise Live Migrations tool to migrate repositories with minimal downtime for developers.'
5+
versions:
6+
fpt: '*'
7+
ghec: '*'
8+
ghes: '*'
9+
children:
10+
- /about-live-migrations
11+
- /prepare-for-your-migration
12+
- /migrate-your-repository
13+
- /complete-your-migration
14+
- /troubleshooting
15+
- /migrated-data-reference
16+
- /elm-cli-reference
17+
---

0 commit comments

Comments
 (0)