Skip to content

Commit 30cf2db

Browse files
committed
making enhancements and fixes to migration post
1 parent 7bdf01a commit 30cf2db

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

_posts/2024-09-18-github-migration-tools.md

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ author: Josh Johanning
44
date: 2024-09-18 10:30:00 -0500
55
description: A collection of additional tools to assist with your GitHub migration experience
66
categories: [GitHub, Migrations]
7-
tags: [GitHub, Migrations, Azure DevOps, git, gh cli, Scripts, Bitbucket]
7+
tags: [GitHub, Migrations, Azure DevOps, Git, gh cli, Scripts, Bitbucket]
88
---
99

1010
## Overview
@@ -21,40 +21,45 @@ Based on my migration experience, here are additional tools I've found useful, o
2121
|------|---------|-------|
2222
| **Organization** | | |
2323
| - Metadata | N/a | Name of org, description, settings, OAuth app policy, scheduled reminders, org owners, etc. |
24-
| - Custom repo roles | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-custom-repository-roles-count.sh) | |
25-
| - Org level webhooks | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-webhooks.sh) | |
24+
| - Custom repo roles | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-custom-repository-roles-count.sh) | Any custom org roles will need to be migrated as well |
25+
| - Org level webhooks | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-webhooks.sh),<br>[gh-organization-webhooks](https://github.com/katiem0/gh-organization-webhooks) | Need to know what webhook secrets are, can't retrieve in UI/API |
2626
| - IP allow list | [Get org IP allow list](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organization-ip-allow-list.sh),<br>[Get enterprise IP allow list](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-enterprise-ip-allow-list.sh),<br>[Set IP allow list rules for](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/set-ip-allow-list-rules.sh) | The get scripts save rules to CSV and the set script sets them in target |
2727
| **Discussions** | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-discussions-count.sh) | Discussions exist in repos, but may have to configure which repo will be used for org discussions |
2828
| **Projects** | N/a | |
29-
| - Projects v2 | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-projects-count.sh), [Migrator](https://github.com/timrogers/gh-migrate-project?tab=readme-ov-file) | |
29+
| - Projects v2 | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-projects-count.sh),<br>[gh-migrate-project](https://github.com/timrogers/gh-migrate-project?tab=readme-ov-file) | CLI utility can help migrate org-level projects |
3030
| - Org Projects (classic) | [Analysis script](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-projects-count-classic.sh) | Deprecated |
3131
| - Repo Projects (classic) | N/a | Deprecated |
32-
| **GitHub apps** | [Analysis script for org apps](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-apps.sh),<br>[Analysis script by org app count](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-apps-count.sh) | |
33-
| **Teams / membership** | [gh-migrate-teams](https://github.com/mona-actions/gh-migrate-teams),<br>[gh-migrate-team-permission](https://github.com/mona-actions/gh-migrate-team-permission),<br>[Recreate security in repos & teams](https://github.com/joshjohanning/github-misc-scripts/tree/main/scripts/recreate-security-in-repositories-and-teams),<br>[Create teams from list](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/create-teams-from-list.sh) | There are different ways to migrate teams/membership |
32+
| **GitHub apps** | [Analysis script for org apps](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-apps.sh),<br>[Analysis script by org app count](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-apps-count.sh) | The [manifest flow](https://docs.github.com/en/apps/sharing-github-apps/registering-a-github-app-from-a-manifest) help when recreating apps manually |
33+
| **Teams / membership** | [gh-migrate-teams](https://github.com/mona-actions/gh-migrate-teams),<br>[gh-migrate-team-permission](https://github.com/mona-actions/gh-migrate-team-permission),<br>[Recreate security in repos & teams](https://github.com/joshjohanning/github-misc-scripts/tree/main/scripts/recreate-security-in-repositories-and-teams),<br>[Create teams from list](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/create-teams-from-list.sh),[gh-collaborators](https://github.com/katiem0/gh-collaborators) | Use the [recreation script](https://github.com/joshjohanning/github-misc-scripts/tree/main/scripts/recreate-security-in-repositories-and-teams) if wanting to mirror teams/membership |
3434
| **User settings** | N/a | PATs, SSH keys, notification settings |
3535
| **Webhook secrets** | [Script to analyze webhooks](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-repositories-webhooks-csv.sh),<br>[gh-migrate-webhook-secrets CLI](https://github.com/mona-actions/gh-migrate-webhook-secrets) | Repo-level webhooks migrate, but webhook secrets need to be recreated |
36-
| **Actions** | N/a | Action runs don't migrate, workflows will migrate with code |
37-
| - Repo/org secrets | [gh-secrets-migrator](https://github.com/dylan-smith/gh-secrets-migrator),[gh-seva](https://github.com/katiem0/gh-seva?tab=readme-ov-file) | Actions secrets values can only be retrieved during Actions runtime |
38-
| - Environments | [Migrator CLI](https://github.com/katiem0/gh-environments) | |
39-
| - Variables | [gh-seva](https://github.com/katiem0/gh-seva?tab=readme-ov-file) | |
36+
| **Actions** | N/a | Action runs don't migrate, workflows will migrate with code, and everything below will need to be recreated |
37+
| - Repo/org secrets | [gh-secrets-migrator](https://github.com/dylan-smith/gh-secrets-migrator),<br>[gh-seva](https://github.com/katiem0/gh-seva?tab=readme-ov-file) | Actions secrets values can only be retrieved during Actions runtime |
38+
| - Environments | [gh-environments](https://github.com/katiem0/gh-environments) | Environments need to be recreated |
39+
| - Variables | [gh-seva](https://github.com/katiem0/gh-seva?tab=readme-ov-file) | Variables need to be recreated |
4040
| - Self-hosted runners | N/a | Runners need to be re-created |
4141
| - Larger runners | N/a | Larger GitHub-hosted runners need to be re-created |
42-
| **Rulesets** | [gh-migrate-rulesets](https://github.com/katiem0/gh-migrate-rulesets) | |
43-
| **Packages** | [See package migration posts](/categories/packages/) | |
42+
| **Rulesets** | [gh-migrate-rulesets](https://github.com/katiem0/gh-migrate-rulesets) | Rulesets are not migrated |
43+
| **Packages** | [See package migration posts](/categories/packages/) | Packages are not migrated |
4444
| **Code owners** | [Code owners mapping helper](https://github.com/joshjohanning/github-misc-scripts/blob/main/scripts/update-codeowners-mappings.js) | Updating org/team names |
45-
| **LFS** | [Migrate LFS artifacts](/posts/migrate-git-lfs-artifacts/) | |
45+
| **LFS** | [Migrate LFS artifacts](/posts/migrate-git-lfs-artifacts/) | LFS is not migrated |
4646
| **Username mapping** | [SAML at enterprise](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-saml-identities-in-enterprise.sh),<br>[SAML at org](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-saml-identities-in-organization.sh) | Getting SAML identities can help map personal github.com accounts by tying their email to their identity provider credential |
47+
| **Repository visibility** | [gh-repo-visibility](https://github.com/mona-actions/gh-repo-visibility) | Repos migrate as private by [default](https://docs.github.com/en/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products#setting-repository-visibility) |
48+
| **Deploy keys** | [gh-migrate-deploy-keys](https://github.com/mona-actions/gh-migrate-deploy-keys) | Deploy keys are not migrated |
4749

4850
## Migration Planning Tooling
4951

5052
These tools are more for helping you plan / track a migration. For example, you can use some of these tools to potentially identify problem repositories before you start the migration (e.g. with `git-sizer`, repositories that contain large files committed), or otherwise repositories with a lot of pull requests that will take longer to migrate.
5153

5254
| Tool | Description |
5355
| --- | --- |
54-
| **[gh-repo-stats](https://github.com/mona-actions/gh-repo-stats)** | GH CLI extension to pull statistics on repository metadata used in GitHub migrations |
56+
| **[gh-repo-stats](https://github.com/mona-actions/gh-repo-stats)** | GitHub CLI extension to pull statistics on repository metadata used in GitHub migrations |
5557
| **[gh-migration-audit](https://github.com/timrogers/gh-migration-audit)** | Audits GitHub repositories to highlight data that cannot be automatically migrated using GitHub's migration tools |
5658
| **[gh ado2gh inventory-report](https://docs.github.com/en/enterprise-cloud@latest/migrations/overview/planning-your-migration-to-github#building-a-basic-inventory-of-the-repositories-you-want-to-migrate)** | Azure DevOps to GitHub inventory report using the GEI commands |
57-
| **[git-sizer](https://github.com/github/git-sizer)** | Compute various size metrics for a Git repository, flagging those that might cause problems |
59+
| **[git-sizer](https://github.com/github/git-sizer)** & **[gh-sizer](https://github.com/timrogers/gh-sizer)** | Compute various size metrics for a Git repository, flagging those that might cause problems |
60+
| **[gh-bbs-analyzer](https://github.com/mona-actions/gh-bbs-analyzer)** | GitHub CLI extension for analyzing BitBucket Server to get migration statistics |
61+
| **[gh-gitlab-stats](https://github.com/mona-actions/gh-gitlab-stats)** | GitHub CLI extension to pull statistics on GitLab repository and server metadata |
62+
| **[gh-pma](https://github.com/mona-actions/gh-pma)** | Post-Migration Audit (PMA) Extension For GitHub CLI |
5863
| **[github-migration-monitor](https://github.com/timrogers/github-migration-monitor)** | Monitors GitHub Enterprise Importer (GEI) migrations for an organization through a simple command line tool |
5964

6065
## Non-technical Migration Planning Tips
@@ -89,6 +94,7 @@ Special thanks to everyone who has contributed to these OSS tools!
8994
- [antgrutta](https://github.com/antgrutta)
9095
- [bryantson](https://github.com/bryantson)
9196
- [pmartindev](https://github.com/pmartindev)
97+
- [samueljmello](https://github.com/samueljmello)
9298
- And many more I am SURE I am missing
9399

94100
## Summary

0 commit comments

Comments
 (0)