You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2024-09-18-github-migration-tools.md
+9-9
Original file line number
Diff line number
Diff line change
@@ -22,28 +22,28 @@ Based on my migration experience, here are additional tools I've found useful, o
22
22
|**Organization**|||
23
23
| - Metadata | N/a | Name of org, description, settings, OAuth app policy, scheduled reminders, org owners, etc. |
24
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 |
25
+
| - Org level webhooks |[Analysis script (count)](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/gh-cli/get-organizations-webhooks-count.sh),<br>[Analaysis script (detailed)](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 |
26
26
| - 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 |
27
-
|**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 |
28
-
|**Projects**|N/a ||
27
+
|**Discussions**|[Analysis script (count) for each org](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-discussions-count.sh),<br>[Analysis script (count) for each repo in an org](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organizations-repositories-discussions-count.sh)| Discussions exist in repos, but may have to configure which repo will be used for org discussions |
28
+
|**Projects**|||
29
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 |
|**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 |
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),<br>[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 |
|**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, and everything below will need to be recreated |
36
+
|**Actions**|| Action runs don't migrate, workflows will migrate with code, and everything below will need to be recreated |
37
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
38
| - Environments |[gh-environments](https://github.com/katiem0/gh-environments)| Environments need to be recreated |
39
39
| - Variables |[gh-seva](https://github.com/katiem0/gh-seva?tab=readme-ov-file)| Variables need to be recreated |
40
-
| - Self-hosted runners |N/a| Runners need to be re-created |
41
-
| - Larger runners | N/a | Larger GitHub-hosted runners need to be re-created |
40
+
| - Self-hosted runners |[Analysis script for all org runners](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organization-self-hosted-runners-organization-runners.sh),<br>[Analysis script for all repo runners in org](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organization-self-hosted-runners-repository-runners.sh),<br> [Analysis script for repo+org runners in org](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-organization-self-hosted-runners-all-runners.sh),<br>[Analysis script for enterprise runners](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-enterprise-self-hosted-runners.sh)| Runners need to be re-created |
41
+
| - Larger runners | N/a | Larger GitHub-hosted runners need to be re-created; no API for large runners|
42
42
|**Rulesets**|[gh-migrate-rulesets](https://github.com/katiem0/gh-migrate-rulesets)| Rulesets are not migrated |
43
43
|**Packages**|[See package migration posts](/categories/packages/)| Packages are not migrated |
|**LFS**|[Migrate LFS artifacts](/posts/migrate-git-lfs-artifacts/)| LFS is not migrated |
46
-
|**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 |
46
+
|**Username mapping**|[Getting SAML entities at enterprise](https://github.com/joshjohanning/github-misc-scripts/blob/main/gh-cli/get-saml-identities-in-enterprise.sh),<br>[Getting SAML entities 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
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
48
|**Deploy keys**|[gh-migrate-deploy-keys](https://github.com/mona-actions/gh-migrate-deploy-keys)| Deploy keys are not migrated |
0 commit comments