GitLab to GitHub Migration Guide
Step-by-step checklist for migrating repositories from GitLab to GitHub. Each repo follows the same per-repo process; cross-cutting tasks are handled once after all repos are moved.
For full repo details, see the Repository Inventory. For CI translation patterns, see the CI/CD Translation Reference.
Naming Convention​
GitHub repos use flat namespace. For nested GitLab subgroup repos:
| GitLab Pattern | GitHub Pattern |
|---|---|
publicala/<name> | <name> (as-is) |
publicala/fenice/dev/<name> | fenice-<name> |
publicala/fenice/dep/env/<name> | fenice-<name> |
publicala/fenice/dep/dependencies/<name> | fenice-<name> |
publicala/fenice-legacy-archived/<name> | <name> (already prefixed) |
publicala_exercises/<name> | <name> |
Phase 1: Setup (one-time)​
Tools​
- Install GitHub CLI:
brew install gh - Install Actions Importer:
gh extension install github/gh-actions-importer - Verify:
gh actions-importer version(expect v1.3.6+) - Authenticate:
gh auth loginwith org admin access - Configure Actions Importer:
gh actions-importer configure(set GitLab instance URL, tokens)
Organization Settings​
- Review
publicalaorg settings on GitHub - Configure default repository permissions (read for members)
- Create branch protection rule template for
main:- Require pull request reviews (1 approval)
- Require status checks to pass
- Require branches to be up to date
- No force pushes
- Set up org-level secrets for shared values:
SENTRY_AUTH_TOKENCLOUDFLARE_API_TOKENLARAVEL_CLOUD_*deploy hooks (per-repo)NPM_TOKEN(for GitHub Packages, if needed)
Team Members​
Invite all team members to the publicala GitHub Organization (not the Enterprise account directly). Organization membership grants repo access via teams and roles; Enterprise seats are consumed automatically when a member joins an org under it.
- Invite the following members via GitHub API (completed 2026-03-18). Enterprise Cloud licenses were manually increased from 7 to 20 before sending invitations:
| Name | |
|---|---|
| MartÃn Alejandro Paz | apaz@publica.la |
| Juan Pablo Locatelli | jplocatelli@publica.la |
| Valentina Rojas | vrojas@publica.la |
| Gonzalo Parra | gparra@publica.la |
| Augusto Rucle | arucle@publica.la |
| Kijam López | klopez@publica.la |
| Nicolás Parola | nparola@publica.la |
| Cecilia Saleme | csaleme@publica.la |
| Nicolás Cabal Cullen | ncabal@publica.la |
| Anabella Pippo | apippo@publica.la |
| AgustÃn Acevedo | aacevedo@publica.la |
| José Luis Tanicuchà | jtanicuchi@publica.la |
| Lara Macarena Sastre | lsastre@publica.la |
| Lucca Costa Leandro | lcosta@publica.la |
| Francisco Laurino | flaurino@publica.la |
- Assign org role:
Memberfor all (Owners: Franco, Nicolas F already set) - Created
Core TeamGitHub Team with Write access (2026-03-24). All org members added. See Access Management for usage. - Verify all members have accepted invitations
- Clean up duplicate account: Ignacio Milano has both
igmilanoandimilano-pla