Přeskočit na obsah

Git a repozitáře

Sencai obsahuje integrovaný Git hosting postavený na Gitea — self-hosted, open-source Git platformě. Každá organizace dostane vlastní izolovaný namespace, kde žijí repozitáře, balíčky a CI pipeline.

  • Organizačně oddělená — Repozitáře patří organizaci, ne jednotlivým uživatelům. Každý člen organizace k nim přistupuje podle své role.
  • Self-hosted — Váš kód zůstává na infrastruktuře Sencai (nebo vaší vlastní, pokud používáte BYOC). Nic není sdíleno s externími Git hostingy.
  • Připravena pro CI/CD — Gitea Actions (kompatibilní s GitHub Actions) spouštějí pipeline přímo z vašich workflow souborů.

Přejděte do Gravity → Git (/gravity/git), kde uvidíte seznam všech repozitářů aktuálně vybrané organizace.

Pomocí výběru organizace v záhlaví přepínáte mezi organizacemi. Seznam repozitářů se aktualizuje automaticky.

  1. Otevřete Gravity → Git
  2. Klikněte na Nový repozitář
  3. Vyplňte údaje:
    • Název — Slug repozitáře (malá písmena, povoleny pomlčky; např. my-service)
    • Popis (volitelný) — Krátký popis zobrazený v seznamu repozitářů
    • ViditelnostSoukromý (pouze členové organizace) nebo Veřejný
    • Auto-inicializace — Vytvoří počáteční commit s README.md, takže repozitář je ihned klonovatelný
  4. Klikněte na Vytvořit repozitář

Repozitář se objeví v seznamu během několika sekund a je připraven ke klonování.

  1. Otevřete repozitář
  2. Přejděte na záložku Nastavení
  3. Přejděte dolů do sekce Nebezpečná zóna
  4. Klikněte na Smazat tento repozitář
  5. Zadejte celý název repozitáře pro potvrzení
  6. Klikněte na Rozumím, smazat repozitář

Každý repozitář má šest záložek:

Úvodní stránka repozitáře. Zobrazuje:

  • Popis a volitelný odkaz na web

  • Adresa pro klonování — zkopírujte HTTP nebo SSH adresu pro klonování:

    Terminál
    # HTTP (produkce)
    git clone https://git.sencai.space/acme-corp/my-service.git
    # SSH (produkce, port 22)
    git clone git@git.sencai.space:acme-corp/my-service.git
  • Témata — štítky pro vyhledatelnost

  • Meta informace — čas posledního push, počet hvězdiček, forků, přehled jazyků

Prohlížení stromové struktury repozitáře na libovolné větvi nebo tagu. Kliknutím na soubor zobrazíte jeho obsah inline. Podporované náhledy zahrnují Markdown, JSON, YAML a většinu zdrojových souborů.

Tlačítko Otevřít ve VS Code (zobrazeno u souborů i adresářů) spustí VS Code s předvyplněnou adresou repozitáře přes schéma vscode://. Vyžaduje nainstalované rozšíření VS Code Remote.

Kompletní historie commitů aktuální větve. Každý záznam zobrazuje:

  • Zprávu commitu a zkrácené SHA
  • Jméno autora a avatar
  • Relativní i absolutní čas

Kliknutím na SHA commitu zobrazíte úplný diff.

Odlehčený systém pro správu issues v rámci repozitáře.

  • Pomocí filtru Otevřené / Uzavřené přepínáte zobrazení
  • Kliknutím na Nový issue vytvoříte issue s názvem, popisem a volitelnými štítky
  • Na issues lze odkazovat ze zpráv commitů syntaxí #<číslo>

Gitea slouží také jako registr balíčků. Balíčky publikované do namespace tohoto repozitáře se zobrazí zde:

TypPříklad
Container (OCI)Docker images přes docker push
npmnpm publish --registry ...
PyPIpip install --index-url ...
HelmHelm chart repository
GenericBinární artefakty přes curl upload

Příkazy pro publikování jednotlivých typů najdete v dokumentaci Gitea package registry.

Nastavení repozitáře (dostupné vlastníkům organizace a správcům repozitáře):

Obecné

  • Přejmenování repozitáře
  • Aktualizace popisu a webu
  • Změna viditelnosti (soukromý ↔ veřejný)
  • Povolení nebo zakázání sledování issues

Deploy Keys SSH klíče jen pro čtení nebo pro čtení i zápis určené pro automatizované nasazení (CI runnery, servery). Na rozdíl od uživatelských SSH klíčů jsou deploy klíče omezeny na jeden repozitář.

Webhooky Konfigurace odchozích HTTP webhooků spouštěných při push, pull requestu, issue nebo release eventu. Slouží k propojení externích služeb.

Secrets & Variables Secrets a proměnné na úrovni repozitáře využívané workflow Gitea Actions:

  • Secrets — Zašifrované hodnoty přístupné jako ${{ secrets.MY_SECRET }} ve workflow
  • Variables — Prostý text přístupný jako ${{ vars.MY_VAR }} ve workflow

Mirrors umožňují sledovat externí Git repozitář a automaticky stahovat aktualizace podle plánu.

Přejděte do Gravity → Git → Mirrors (/gravity/git/mirrors), kde spravujete mirrors aktuální organizace.

  1. Klikněte na Přidat mirror
  2. Vyplňte:
    • Remote URL — Adresa zdrojového repozitáře (doporučeno HTTPS; např. https://github.com/acme/upstream.git)
    • Název — Název lokálního repozitáře, který bude vytvořen ve vaší organizaci
    • Auth token (volitelný) — Personal access token pro soukromé zdrojové repozitáře
    • Interval synchronizace — Jak často stahovat změny:
      • 8 hodin
      • 24 hodin (výchozí)
      • 72 hodin
      • 168 hodin (týdně)
  3. Klikněte na Vytvořit mirror

Gitea stahuje vzdálený repozitář v nastaveném intervalu a udržuje lokální kopii aktuální. Manuální synchronizaci můžete spustit také z Nastavení repozitáře → Mirror.

  1. Otevřete Gravity → Git → Mirrors
  2. Najděte mirror v seznamu
  3. Klikněte na ikonu Smazat
  4. Potvrďte smazání

Lokální kopie repozitáře bude odstraněna z vaší organizace. Zdrojový repozitář není dotčen.

Přejděte do Gravity → Git → CI (/gravity/git/ci) pro přehled všech spuštění workflow Gitea Actions napříč organizací.

Každý run zobrazuje:

  • Repozitář a název workflow
  • Spouštěcí událost (push, pull request, plán, ruční spuštění)
  • Stav: úspěch, selhání nebo probíhá
  • Čas a dobu trvání

Kliknutím na run zobrazíte logy jednotlivých jobů.

Gitea Actions používá stejnou YAML syntaxi jako GitHub Actions. Sencai Gitea je nakonfigurována tak, aby hledala workflow soubory v těchto adresářích (v tomto pořadí):

  1. .sencai/workflows/doporučeno (nativní cesta Sencai)
  2. .gitea/workflows/
  3. .github/workflows/

Vytvořte .sencai/workflows/ci.yml ve svém repozitáři:

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Instalace závislostí
run: npm ci
- name: Testy
run: npm test

Pushněte soubor, čímž spustíte první run. Stav se zobrazí v záložce CI a v Gravity → Git → CI.

Q: Klonování selhává s chybou „Repository not found”

A: Ověřte, že používáte správný název organizace a slug repozitáře. Zkontrolujte, že jste členem organizace a že viditelnost repozitáře vám umožňuje přístup.

Q: SSH klonování selhává s „Permission denied (publickey)”

A: Ujistěte se, že máte přidaný veřejný SSH klíč v Sencai pod Nastavení účtu → SSH klíče. Konektivitu otestujete příkazem ssh -T git@git.sencai.space v produkci, nebo ssh -T -p 9033 git@localhost v lokálním vývoji.

Q: Workflow je ve frontě, ale nespouští se

A: Pro label runs-on ve vašem workflow není dostupný žádný runner. Požádejte správce o kontrolu registrovaných runnerů v administraci Gitea.

Q: Mirror se neaktualizuje

A: Zdrojová URL může být nedostupná nebo auth token mohl expirovat. Přejděte do Nastavení repozitáře → Mirror a spusťte manuální synchronizaci, abyste viděli chybovou zprávu.

Q: „Otevřít ve VS Code” nereaguje

A: Ujistěte se, že máte nainstalované VS Code a aktivní rozšíření Remote Repositories (nebo Remote — SSH). Schéma vscode:// musí být registrováno ve vašem prohlížeči.