Migracija z GitLab.com na samostojno gostovani GitLab
Ko se ekipa preseli z GitLab.com na lastno instanco, je koda le del dela. Prenesti je treba tudi težave (issues), zahteve za združitev (merge requests), oznake, mejnike in njihovo zgodovino, po možnosti brez ročnega kopiranja.
GitLab ima za to vgrajeno metodo, imenovano direct transfer. Vaša instanca se prek HTTPS z osebnim dostopnim žetonom poveže z GitLab.com in skopira skupino skupaj z njenimi projekti. Uvoz poteka v ozadju, po koncu pa lahko preverite vsak prenesen element.
Ta navodila prikazujejo celotno selitev ene skupine: pripravo GitLab.com, zagon uvoza, preverjanje rezultata in zaključek korakov, ki jih direct transfer ne pokriva. Vsi koraki so bili preizkušeni na pravi selitvi z GitLab.com na GitLab 19.5 v Ubuntuju 26.04.
Kaj potrebujete pred selitvijo
Samogostovano instanco GitLab, ki je nameščena in deluje. Če je še nimate, jo najprej namestite, glejte navodila Kako namestiti GitLab na namenski strežnik.
Skrbniški dostop do svoje instance GitLab.
Vlogo Owner v skupini, ki jo želite preseliti, na GitLab.com. Stran za uvoz prikaže samo skupine, v katerih ste Owner.
Odhodni dostop HTTPS z vašega strežnika do https://gitlab.com.
Dovolj prostega prostora na disku strežnika za vse repozitorije, ki jih selite, in prost prostor v /tmp: GitLab tam razpakira začasne arhive selitve.
GitLab.com vedno deluje v novejši različici od samogostovane instance. V našem preizkusu to selitve ni preprečilo.
V teh navodilih povsod zamenjajte gitlab.example.com z domeno svoje instance.
Kaj se preseli
Direct transfer prenese:
- skupino in njene projekte;
- repozitorije z vsemi vejami in zgodovino commitov, zgoščene vrednosti commitov ostanejo enake;
- težave in zahteve za združitev z izvirnimi številkami;
- oznake, mejnike in zgodovino dejavnosti;
- izvirne datume ustvarjanja.
Uvoženi prispevki in nekatera članstva se najprej povežejo z nadomestnimi uporabniki (placeholder). Po uvozu jih ponovno dodelite pravim računom na svoji instanci.
Direct transfer ne prenese:
- spremenljivk CI/CD, spremenljivk razporedov cevovodov in sprožilcev cevovodov;
- ključev za uvajanje (deploy keys) in žetonov za uvajanje (deploy tokens);
- slik container registry in package registry;
- dnevnikov in artefaktov opravil CI/CD;
- spletnih kljuk (webhooks);
- okolij in zastavic funkcij (feature flags);
- pravil za odobritev zahtev za združitev in povezanih težav;
- oddaljenih zrcal.
Cevovodi se prenesejo kot zapisi z njihovimi statusi, vendar brez dnevnikov opravil in artefaktov.
Pred začetkom načrtujte, kako boste te elemente obnovili. Spremenljivke CI/CD, ključi za uvajanje in žetoni za uvajanje pogosto vsebujejo gesla in ključe API, zato jih po uvozu ustvarite ročno. Slike vsebnikov in paketi se ne kopirajo: ponovno jih potisnite na svojo instanco ali znova zgradite s CI.
Priprava računa GitLab.com
Naredite svoj e-poštni naslov javen. Na GitLab.com v zgornjem desnem kotu izberite svoj avatar in nato Edit profile. V polju Public email izberite svoj e-poštni naslov in na dnu strani izberite Update profile settings.

Ustvarite osebni dostopni žeton. Vaša instanca ta žeton uporablja za branje vaših podatkov na GitLab.com. V levem meniju profila pojdite na Access > Personal access tokens.

Izberite Generate token in nato Legacy token.

Izpolnite obrazec:
- Token name: poljubno ime, na primer
migration. - Expiration date: za selitev je dovolj nekaj dni.
- Select scopes: izberite
api. Ne zamenjajte ga zread_api.


Izberite Generate token. Kopirajte žeton, ki se začne z glpat-, in ga shranite na varno mesto. GitLab.com ga prikaže samo enkrat.

Žetona ne pošiljajte v klepetih ali po e-pošti. Kdor ga ima, dobi poln dostop API do vašega računa GitLab.com, dokler žeton ne poteče ali ni preklican.
Vklop direct transfer na vaši instanci
Prijavite se v svojo instanco GitLab kot skrbnik. V zgornjem desnem kotu izberite Admin, pojdite na Settings > General in razširite Import and export settings. Pod Allow migrating GitLab groups and projects by direct transfer označite potrditveno polje Enabled in izberite Save changes.

V istem razdelku preverite dve nastavitvi, ki vplivata na ponovno dodelitev uporabnikov po uvozu:
- Allow contribution mapping to administrators: če je vklopljena, lahko prispevke dodelite tudi skrbniškim računom;
- Skip confirmation when administrators reassign placeholder users: če je vklopljena, se prispevki dodelijo takoj, brez odobritve uporabnika.
Povezava instance z GitLab.com
V zgornji vrstici izberite Create new (ikona plus), nato New group > Import group.

Izpolnite obrazec za povezavo:
- GitLab source instance base URL:
https://gitlab.com - Personal access token: žeton, ki ste ga ustvarili na GitLab.com.
Izberite Connect instance.

Odpre se stran Import groups by direct transfer s seznamom vaših skupin na GitLab.com.

Zagon uvoza
Poiščite skupino na seznamu. V polju Path of the new group odprite Select parent group in izberite, kam postaviti skupino:
- No parent ustvari skupino najvišje ravni, enako kot na GitLab.com;
- obstoječa skupina na vaši instanci uvozi skupino vanjo kot podskupino. Če je nadrejena skupina zasebna, javne skupine in projekti z GitLab.com po uvozu postanejo zasebni.
Ta izbira je obvezna. Dokler ne izberete nadrejene skupine, GitLab prikazuje Select a parent group in uvoza ne zažene.
Preverite pot nove skupine, privzeto se ujema z imenom na GitLab.com. Pustite izbrano Import user memberships, da se člani skupine prenesejo.

Po začetku uvoza skupine in njenih projektov na GitLab.com ne spreminjajte. Spremembe med selitvijo morda ne bodo prišle do vaše instance. Prosite ekipo, naj do konca uvoza ne potiska kode in ne ureja težav.
V vrstici skupine izberite Import with projects. Status se spremeni v Importing.
Če gumba Import with projects ni, preverite Default minimum role required to create projects v Admin > Settings > General > Visibility and access controls. Če je nastavljeno No one, GitLab ne more uvažati projektov.

Uvoz poteka v ozadju, zato lahko stran zaprete. Čas je odvisen od števila in velikosti projektov: v našem preizkusu je skupina z dvema majhnima projektoma trajala približno dve minuti.
Preverjanje rezultata
Ko se uvoz konča, se status spremeni v Complete.
Če je status Failed ali Partially completed, izberite Show errors, da vidite, kateri elementi niso bili uvoženi. Neuspelo ali delno selitev lahko ponovite na isti strani ali prek API.

Izberite Migration details. Stran Migration history prikaže skupino in vsak projekt z lastnim statusom.

Odprite uvoženo skupino in preverite njeno vsebino.
Projekti. Vsi projekti skupine morajo biti na seznamu.

Težave in zahteve za združitev. V meniju skupine odprite Work items in Merge requests. Številke, oznake in mejniki so ohranjeni, uvoženi elementi pa imajo značko Imported.

Repozitorij. V projektu pojdite na Code > Branches. Preverite, ali so prisotne vse pričakovane veje in ali se njihovi zadnji commiti ujemajo z izvornim repozitorijem.

Avtorji težav in zahtev za združitev so prikazani kot Placeholder users, na primer Placeholder John Smith. To je pričakovano, ponovno jih boste dodelili kasneje v teh navodilih.
Če zahteva za združitev prikazuje Cannot be merged automatically, jo odprite in preverite zavihek Changes. Če ne prikazuje sprememb, zahteva za združitev tudi na GitLab.com ni imela commitov, zato ni kaj združiti. To ni napaka selitve.

Ponovna ustvaritev spremenljivk CI/CD
Na GitLab.com odprite projekt in pojdite na Settings > CI/CD, razširite Variables in si zapišite vsako spremenljivko z njenimi možnostmi, na primer Protected in Masked.

Na svoji instanci odprite isti projekt in isti razdelek. Seznam spremenljivk projekta je prazen.

Izberite Add variable in ustvarite vsako spremenljivko z istim ključem, vrednostjo in možnostmi. Postopek ponovite za spremenljivke skupine, če jih uporabljate.
Razporedi cevovodov se prenesejo brez svojih spremenljivk. Če vaši razporedi uporabljajo spremenljivke, v projektu odprite Build > Pipeline schedules in jih dodajte vsakemu razporedu.
Ponovna dodelitev nadomestnih uporabnikov
Med uvozom GitLab ustvari nadomestne uporabnike za avtorje prispevkov in za uvožene člane z GitLab.com. Da bi njihove težave, zahteve za združitev in komentarje povezali s pravimi računi, nadomestnike ponovno dodelite. Najprej na instanci ustvarite račune svoje ekipe, da boste imeli komu dodeliti.
Odprite skupino najvišje ravni, torej samo uvoženo skupino ali njeno nadrejeno skupino, če ste jo uvozili kot podskupino, pojdite na Manage > Members in izberite zavihek Placeholders. V tej skupini potrebujete vlogo Owner. Seznam Awaiting reassignment prikazuje vse nadomestne uporabnike.

V vrstici nadomestnega uporabnika odprite Select user in izberite račun na svoji instanci. Preverite, ali je v pravi vrstici izbran pravi račun, nato izberite Reassign in Confirm reassignment.

Ponovne dodelitve ni mogoče razveljaviti. Napačna izbira da prispevke in dostop ene osebe drugemu uporabniku, zato pred potrditvijo preverite vsako vrstico.
Status se spremeni v Reassigning. Čez minuto osvežite stran: nadomestnik se premakne na zavihek Reassigned.


Težava zdaj kot avtorja prikazuje pravi račun, izvirni datum ustvarjanja pa je ohranjen.

Če je Skip confirmation when administrators reassign placeholder users vklopljena, kot na naši preizkusni instanci, se prispevki dodelijo takoj. Če je izklopljena, mora izbrani uporabnik dodelitev najprej sprejeti.
Storitveni računi GitLab.com, na primer Duo Code Review, prav tako pridejo kot nadomestniki. Na vaši instanci nimajo ustreznika: pustite jih, kot so, ali izberite Do not reassign. Za veliko uporabnikov uporabite Reassign with CSV file na istem zavihku.
Zaključek selitve
Prekličite žeton. Na GitLab.com pojdite na Access > Personal access tokens in ob žetonu za selitev izberite Revoke.
Posodobite oddaljeni naslov na računalnikih razvijalcev. V vsaki lokalni kopiji repozitorija usmerite Git na svojo instanco:
git remote set-url origin [email protected]:group/project.git
Zamenjajte group/project s potjo projekta na svoji instanci.
Ponovno nastavite integracije in avtomatizacijo. Spletne kljuke, ključi za uvajanje, žetoni za uvajanje in sprožilci cevovodov se ne prenesejo, zato jih ustvarite na svoji instanci. Registrirajte izvajalce (runners) CI/CD pri svoji instanci. Zunanje storitve, kot so obvestila v klepetu ali sledilniki težav, znova povežite v nastavitvah vsakega projekta.
Zaženite nove cevovode na uvoženih zahtevah za združitev. Uvoženi cevovodi ohranijo izvirni status in lahko izpolnijo pogoj Pipelines must succeed, ne da bi se ponovno izvedli. Preden združite uvoženo zahtevo za združitev, zanjo na svoji instanci zaženite nov cevovod.
Zaprite staro kopijo. Ko vse deluje na vaši instanci, skupino na GitLab.com arhivirajte ali izbrišite, da tam nihče ne nadaljuje dela.
Za izbiro strežnika za svojo instanco GitLab glejte stran Namenski strežniki za GitLab.