Hyppää sisältöön

🛡️ Migraatio -opas

Repositorioiden uudelleennimeäminen ja standardointiprosessi

Tämä opas määrittelee yhdenmukaisen tavan siirtää vanhat projektit RepoDock‑standardin mukaisiksi. Prosessi varmistaa, että: - projektien nimet noudattavat ekosysteemin sääntöjä - GitLab‑polut päivittyvät oikein - paikalliset Git‑yhteydet säilyvät toimivina - automaatio ja CI/CD eivät rikkoudu - dokumentaatio pysyy yhtenäisenä

1. Uudelleennimeämisen vaiheet

A. GitLab Web UI

  1. Avaa projektisi GitLabissa Settings > General

  2. Päivitä visuaalinen nimi Project name

    • Saa sisältää välilyöntejä
    • Ei vaikuta URL‑osoitteeseen
    • Päivitä projektin polku Advanced (Expand) > Change path:
    • Syötä uusi nimi kebab-case‑muodossa
    • Tämä muuttaa projektin URL‑osoitteen
    • Vanha URL lakkaa toimimasta

B. Paikallinen ympäristö (Terminal/Bach)

Kun palvelimen URL muuttuu, paikallinen Git-yhteys on päivitettävä.

Kun GitLabin projektipolku muuttuu, paikallinen Git‑remote täytyy päivittää.

  1. Siirry projektikansioon

    cd oma-projekti
    

  2. Päivitä remote‑osoite

    git remote set-url origin https://gitlab.com/MipoRepo/uusi-nimi.git
    

  3. Testaa yhteys

git pull

2. Automaattinen tarkastus ja asetustiedosto (validator.py | standards.json)

Validator‑työkalu varmistaa, että projektin nimi, rakenne ja kriittiset tiedostot noudattavat RepoDock‑ekosysteemin standardeja. Työkalu koostuu kahdesta tiedostosta:

  • validator.py – suorittaa tarkistukset
  • standards.json – sisältää ekosysteemin nimeämis- ja rakennesäännöt Näiden avulla voidaan varmistaa, että jokainen projekti on yhdenmukainen ja automaatiolle turvallinen.

Validator tarkistaa:

  • projektin nimen etuliitteen
  • kebab-case‑muodon
  • kriittisten tiedostojen olemassaolon
  • mahdolliset polkuviitteet, jotka tulee päivittää

Tiedostojen sijoittaminen

Sijoita molemmat projektin juureen:

/project-root
│
├── validator.py
├── standards.json
└── ...

validator.py

import os
import re
import json
import difflib

def load_standards(filename="standards.json"):
    """Lataa sallitut standardit JSON-tiedostosta."""
    try:
        with open(filename, 'r') as f:
            return json.load(f)
    except FileNotFoundError:
        print(f"❌ Virhe: Tiedostoa {filename} ei löytynyt.")
        return None

def check_repo_health():
    config = load_standards()
    if not config:
        return

    valid_prefixes = config.get("valid_prefixes", [])
    folder_name = os.path.basename(os.getcwd())
    issues = []

    # Erotetaan käyttäjän syöttämä etuliite
    user_prefix = folder_name.split('-')[0] if '-' in folder_name else folder_name

    # 1. Älykäs nimen tarkastus JSON-listan perusteella
    if user_prefix not in valid_prefixes:
        matches = difflib.get_close_matches(user_prefix, valid_prefixes, n=1, cutoff=0.6)
        if matches:
            issues.append(f"❌ Virheellinen etuliite: '{user_prefix}'. Tarkoititko kenties: '{matches[0]}-'?")
        else:
            issues.append(f"❌ Tuntematon etuliite '{user_prefix}'. Sallitut: {', '.join(valid_prefixes)}")

    # 2. Muototarkastus (kebab-case)
    if not re.match(r'^[a-z0-9]+-[a-z0-9-]+$', folder_name):
        issues.append("⚠️  Nimen muoto ei ole puhdas kebab-case (pienet kirjaimet, numerot ja viivat).")

    # 3. Tarkistetaan JSONissa määritellyt kriittiset tiedostot
    for file in config.get("required_files", []):
        if os.path.exists(file):
            issues.append(f"ℹ️  Tiedosto {file} löytyi: Varmista, ettei sisällä vanhoja polkuviitteitä.")

    # Tulosten yhteenveto
    print("\n" + "="*40)
    if not issues:
        print("âś… REPO VASTAA STANDARDEJA")
    else:
        print("🔍 LÖYDYT VIRHEET JA HUOMIOT:")
        for issue in issues:
            print(issue)
    print("="*40 + "\n")

if __name__ == "__main__":
    check_repo_health()

Sijoita standards.json projektin juurikansioon, josta validator-skripti voi lukea sen.

Tallenna tiedosto nimellä:

standards.json
{
  "version": "1.0",
  "description": "RepoDock-nimeämisstandardit ja kriittiset tiedostot",
  "valid_prefixes": [
    "study",
    "project",
    "tool",
    "lab",
    "infra",
    "config",
    "engine"
  ],
  "naming_convention": "kebab-case",
  "required_files": [
    ".gitlab-ci.yml",

  ]
}

Suoritus

python3 validator.py

⚠️ 3. Huomioitavaa (Tekniset riskit)

Uudelleennimeäminen vaikuttaa useisiin automaation osiin. Käytä alla olevaa taulukkoa varmistaaksesi, että kaikki tekniset kytkökset päivitetään.

Kohde Vaikutus Toimenpide
CI/CD Putket .gitlab-ci.yml saattaa sisältää kiinteitä polkuja tai viittauksia vanhaan repoon. Etsi ja korvaa vanha nimi tiedostosta. Tarkista erityisesti artifacts ja paths -määritykset.
Docker Registry Container Registryn polku muuttuu suoraan projektin URL:n mukana. Päivitä kaikki docker pull ja docker push -komennot skripteissäsi. Päivitä myös Kubernetes- tai Compose-tiedostojen kuvaviittaukset.
Ristiinviittaukset Muut repositoriot saattavat viitata tähän projektiin Git Submodulena. Tarkista muiden projektien .gitmodules -tiedostot ja päivitä niihin uusi URL-osoite.
API-integraatiot Webhookit ja ulkoiset integraatiot (esim. Jira/Slack) käyttävät usein projektin polkua. Päivitä integraatioasetukset GitLabin asetuksista ja vastaanottavasta päästä.

âś… 4. Migration Checklist (Master)

Suorita nämä asiat jokaisen siirrettävän projektin kohdalla varmistaaksesi ekosysteemin yhteensopivuuden:

  • [ ] Kansio nimetty uudelleen standardin mukaiseksi (esim. tool- tai project- etuliite).
  • [ ] GitLab Path muutettu (Settings > Advanced > Change path).
  • [ ] Local Remote päivitetty (git remote set-url origin [uusi-url]).
  • [ ] README.md päivitetty (Vastaa uutta nimeä ja sisältää vaaditun metadatan).
  • [ ] Validator-skripti ajettu (Tulos: "âś… Standardin mukainen").
  • [ ] Scrum-rakenne tarkistettu (Kansio scrum/01_backlog/ luotu, jos kyseessä on laaja kehitysprojekti).

Dokumentin tila: Luonnos — Pvm: 10.01.2026