EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Migracija s GitLab.com na samostalno hostirani GitLab

Kada tim prelazi s GitLab.com na vlastitu instancu, kod je samo dio posla. Zadaci (issues), zahtjevi za spajanje (merge requests), oznake, prekretnice i njihova povijest također se moraju prenijeti, po mogućnosti bez ručnog kopiranja.

GitLab za to ima ugrađenu metodu zvanu direct transfer. Vaša se instanca povezuje s GitLab.com putem HTTPS-a pomoću osobnog pristupnog tokena i kopira grupu zajedno s njezinim projektima. Uvoz se izvodi u pozadini, a po završetku možete provjeriti svaki preneseni element.

Ove upute pokazuju potpunu migraciju jedne grupe: pripremu GitLab.com, pokretanje uvoza, provjeru rezultata i dovršetak koraka koje direct transfer ne pokriva. Svi su koraci testirani na stvarnoj migraciji s GitLab.com na GitLab 19.5 na Ubuntuu 26.04.

Što trebate prije migracije

Samostalno hostiranu GitLab instancu koja je instalirana i radi. Ako je još nemate, prvo je instalirajte, pogledajte upute Kako instalirati GitLab na namjenski poslužitelj.

Administratorski pristup svojoj GitLab instanci.

Ulogu Owner u grupi koju želite migrirati na GitLab.com. Stranica za uvoz navodi samo grupe u kojima ste Owner.

Odlazni HTTPS pristup s vašeg poslužitelja na https://gitlab.com.

Dovoljno slobodnog prostora na disku poslužitelja za sve repozitorije koje migrirate te slobodan prostor u /tmp: GitLab ondje raspakirava privremene arhive migracije.

Info

GitLab.com uvijek radi na novijoj verziji od samostalno hostirane instance. U našem testu to nije spriječilo migraciju.

U ovim uputama svugdje zamijenite gitlab.example.com domenom svoje instance.

Što se migrira

Direct transfer prenosi:

  • grupu i njezine projekte;
  • repozitorije sa svim granama i poviješću commitova, hashevi commitova ostaju isti;
  • zadatke i zahtjeve za spajanje s izvornim brojevima;
  • oznake, prekretnice i povijest aktivnosti;
  • izvorne datume izrade.

Uvezeni doprinosi i neka članstva najprije se povezuju sa zamjenskim korisnicima (placeholder). Nakon uvoza njih ponovno dodjeljujete stvarnim računima na svojoj instanci.

Direct transfer ne prenosi:

  • CI/CD varijable, varijable rasporeda pipelinea i okidače pipelinea;
  • deploy ključeve i deploy tokene;
  • slike container registryja i package registry;
  • zapisnike i artefakte CI/CD poslova;
  • webhookove;
  • okruženja i feature flagove;
  • pravila odobravanja zahtjeva za spajanje i povezane zadatke;
  • udaljene mirrore.

Pipelineovi se migriraju kao zapisi sa svojim statusima, ali bez zapisnika poslova i artefakata.

Warning

Prije početka isplanirajte kako ćete vratiti ove elemente. CI/CD varijable, deploy ključevi i deploy tokeni često sadrže lozinke i API ključeve, pa ih nakon uvoza ručno ponovno izrađujete. Slike kontejnera i paketi se ne kopiraju: ponovno ih pošaljite na svoju instancu ili ih ponovno izgradite pomoću CI-ja.

Priprema računa GitLab.com

Učinite svoju e-adresu javnom. Na GitLab.com odaberite svoj avatar u gornjem desnom kutu, a zatim Edit profile. U polju Public email odaberite svoju e-adresu i na dnu stranice odaberite Update profile settings.

Izradite osobni pristupni token. Vaša instanca koristi ovaj token za čitanje vaših podataka na GitLab.com. U lijevom izborniku profila idite na Access > Personal access tokens.

Odaberite Generate token, a zatim Legacy token.

Ispunite obrazac:

  • Token name: bilo koji naziv, na primjer migration.
  • Expiration date: za migraciju je dovoljno nekoliko dana.
  • Select scopes: odaberite api. Nemojte ga miješati s read_api.

Odaberite Generate token. Kopirajte token, počinje s glpat-, i spremite ga na sigurno mjesto. GitLab.com ga prikazuje samo jednom.

Warning

Ne šaljite token u chatovima ni e-poštom. Svatko tko ga ima dobiva potpuni API pristup vašem računu GitLab.com dok token ne istekne ili se ne opozove.

Uključivanje direct transfera na vašoj instanci

Prijavite se u svoju GitLab instancu kao administrator. Odaberite Admin u gornjem desnom kutu, idite na Settings > General i proširite Import and export settings. Pod Allow migrating GitLab groups and projects by direct transfer označite potvrdni okvir Enabled i odaberite Save changes.

U istom odjeljku provjerite dvije postavke koje utječu na ponovnu dodjelu korisnika nakon uvoza:

  • Allow contribution mapping to administrators: kada je uključena, doprinose možete ponovno dodijeliti i administratorskim računima;
  • Skip confirmation when administrators reassign placeholder users: kada je uključena, doprinosi se ponovno dodjeljuju odmah, bez odobrenja korisnika.

Povezivanje instance s GitLab.com

U gornjoj traci odaberite Create new (ikona plusa), zatim New group > Import group.

Ispunite obrazac za povezivanje:

  • GitLab source instance base URL: https://gitlab.com
  • Personal access token: token koji ste izradili na GitLab.com.

Odaberite Connect instance.

Otvara se stranica Import groups by direct transfer s popisom vaših grupa na GitLab.com.

Pokretanje uvoza

Pronađite grupu na popisu. U polju Path of the new group otvorite Select parent group i odaberite gdje smjestiti grupu:

  • No parent izrađuje grupu najviše razine, isto kao na GitLab.com;
  • postojeća grupa na vašoj instanci uvozi grupu u sebe kao podgrupu. Ako je nadređena grupa privatna, javne grupe i projekti s GitLab.com nakon uvoza postaju privatni.

Warning

Taj je odabir obavezan. Dok ne odaberete nadređenu grupu, GitLab prikazuje Select a parent group i ne pokreće uvoz.

Provjerite putanju nove grupe, prema zadanim postavkama podudara se s nazivom na GitLab.com. Ostavite odabrano Import user memberships kako bi se članovi grupe prenijeli.

Warning

Nemojte mijenjati grupu i njezine projekte na GitLab.com nakon što uvoz započne. Promjene napravljene tijekom migracije možda neće stići do vaše instance. Zamolite tim da do završetka uvoza ne šalje kod i ne uređuje zadatke.

U retku grupe odaberite Import with projects. Status se mijenja u Importing.

Info

Ako nema gumba Import with projects, provjerite Default minimum role required to create projects u Admin > Settings > General > Visibility and access controls. Kada je postavljeno na No one, GitLab ne može uvoziti projekte.

Uvoz se izvodi u pozadini pa stranicu možete zatvoriti. Vrijeme ovisi o broju i veličini projekata: u našem testu grupa s dva mala projekta trajala je oko dvije minute.

Provjera rezultata

Kada se uvoz završi, status se mijenja u Complete.

Ako je status Failed ili Partially completed, odaberite Show errors da vidite koji elementi nisu uvezeni. Neuspjelu ili djelomičnu migraciju možete ponoviti s iste stranice ili putem API-ja.

Odaberite Migration details. Stranica Migration history prikazuje grupu i svaki projekt s njegovim statusom.

Otvorite uvezenu grupu i provjerite njezin sadržaj.

Projekti. Svi projekti grupe moraju biti na popisu.

Zadaci i zahtjevi za spajanje. U izborniku grupe otvorite Work items i Merge requests. Brojevi, oznake i prekretnice su sačuvani, a uvezeni elementi imaju značku Imported.

Repozitorij. U projektu idite na Code > Branches. Provjerite jesu li prisutne sve očekivane grane i podudaraju li se njihovi najnoviji commitovi s izvornim repozitorijem.

Info

Autori zadataka i zahtjeva za spajanje prikazani su kao Placeholder users, na primjer Placeholder John Smith. To je očekivano, njih ćete ponovno dodijeliti kasnije u ovim uputama.

Ako zahtjev za spajanje prikazuje Cannot be merged automatically, otvorite ga i provjerite karticu Changes. Ako ne prikazuje promjene, zahtjev za spajanje nije imao commitova ni na GitLab.com, pa nema što spajati. To nije pogreška migracije.

Ponovna izrada CI/CD varijabli

Na GitLab.com otvorite projekt i idite na Settings > CI/CD, proširite Variables i zabilježite svaku varijablu s njezinim opcijama, na primjer Protected i Masked.

Na svojoj instanci otvorite isti projekt i isti odjeljak. Popis varijabli projekta je prazan.

Odaberite Add variable i izradite svaku varijablu s istim ključem, vrijednošću i opcijama. Ponovite to za varijable grupe ako ih koristite.

Rasporedi pipelinea migriraju se bez svojih varijabli. Ako vaši rasporedi koriste varijable, u projektu otvorite Build > Pipeline schedules i dodajte ih svakom rasporedu.

Ponovna dodjela zamjenskih korisnika

Tijekom uvoza GitLab izrađuje zamjenske korisnike za autore doprinosa i za uvezene članove s GitLab.com. Da biste njihove zadatke, zahtjeve za spajanje i komentare povezali sa stvarnim računima, ponovno dodijelite zamjenske korisnike. Prvo na instanci izradite račune svojeg tima kako biste imali kome dodijeliti.

Otvorite grupu najviše razine, odnosno samu uvezenu grupu ili njezinu nadređenu ako ste je uvezli kao podgrupu, idite na Manage > Members i odaberite karticu Placeholders. U ovoj grupi trebate ulogu Owner. Popis Awaiting reassignment prikazuje sve zamjenske korisnike.

U retku zamjenskog korisnika otvorite Select user i odaberite račun na svojoj instanci. Provjerite je li u pravom retku odabran pravi račun, zatim odaberite Reassign i Confirm reassignment.

Warning

Ponovna dodjela ne može se poništiti. Pogrešan odabir daje doprinose i pristup jedne osobe drugom korisniku, zato prije potvrde provjerite svaki redak.

Status se mijenja u Reassigning. Nakon minute osvježite stranicu: zamjenski korisnik prelazi na karticu Reassigned.

Zadatak sada prikazuje stvarni račun kao autora, a izvorni datum izrade je sačuvan.

Info

Ako je Skip confirmation when administrators reassign placeholder users uključena, kao na našoj testnoj instanci, doprinosi se ponovno dodjeljuju odmah. Ako je isključena, odabrani korisnik prvo mora prihvatiti ponovnu dodjelu.

Servisni računi GitLab.com, na primjer Duo Code Review, također dolaze kao zamjenski korisnici. Nemaju pandan na vašoj instanci: ostavite ih kakvi jesu ili odaberite Do not reassign. Za mnogo korisnika koristite Reassign with CSV file na istoj kartici.

Dovršetak migracije

Opozovite token. Na GitLab.com idite na Access > Personal access tokens i odaberite Revoke pored tokena za migraciju.

Ažurirajte udaljenu adresu na računalima programera. U svakoj lokalnoj kopiji repozitorija usmjerite Git na svoju instancu:

git remote set-url origin [email protected]:group/project.git

Zamijenite group/project putanjom projekta na svojoj instanci.

Ponovno postavite integracije i automatizaciju. Webhookovi, deploy ključevi, deploy tokeni i okidači pipelinea ne migriraju se, pa ih ponovno izradite na svojoj instanci. Registrirajte CI/CD runnere na svojoj instanci. Vanjske usluge, poput obavijesti u chatu ili sustava za praćenje zadataka, ponovno povežite u postavkama svakog projekta.

Pokrenite nove pipelineove na uvezenim zahtjevima za spajanje. Uvezeni pipelineovi zadržavaju svoj izvorni status i mogu zadovoljiti uvjet Pipelines must succeed bez ponovnog izvođenja. Prije spajanja uvezenog zahtjeva za spajanje pokrenite za njega novi pipeline na svojoj instanci.

Zatvorite staru kopiju. Kada sve radi na vašoj instanci, arhivirajte ili izbrišite grupu na GitLab.com kako ondje nitko ne bi nastavio raditi.

Za odabir poslužitelja za svoju GitLab instancu pogledajte stranicu Namjenski poslužitelji za GitLab.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA