Gitea

From Programvareverkstedet

Gitea er en tjeneste vi bruker for å oppbevare og dele kode. Du kan bruke den som et alternativ til GitHub eller IDI GitLaben. Den kjører på Maskiner/bekkalokk og er tilgjengelig på https://git.pvv.ntnu.no

Bruk

For generell bruk, se https://docs.gitea.com/category/usage

På loginsiden kan du logge inn med vanlig PVV-brukernavn og passord

Lag og klon et nytt repo

1. Trykk på "New Repository" i menyen i øvre høyre hjørne

Klikk "New Repository"

2. Fyll inn feltene du føler er nødvendig. De 2 viktigste er:

  * "Repository Name" - navnet på repoet
  * "Visibility Level" - om repoet skal være offentlig eller privat
Opprett nytt repo

3. Følg instruksjonene for å klone repoet, ev. spør noen i drift om hjelp.

Klon repo

Bruk av CI

Se https://docs.gitea.com/usage/actions/quickstart#use-actions

Historie

Tidlig 2023 ble både TRAC og Gogs tatt ned, og byttet ut med Gitea. De fleste repoer ble migrert (med unntak av noen vi ikke fant kildekode for i datamappene), og det ble satt opp prosjektgrupper for repo-er som tidligere var samarbeidsprosjekter. Repo-er hvor vi så at det hovedsakelig var én person som jobbet, ble omgjort til brukerens personlige repo.

Drifts-detaljer

Kildekode

https://git.pvv.ntnu.no/Drift/pvv-nixos-config/src/branch/main/hosts/bekkalokk/services/gitea

Web-endepunkt

Selve nettsiden blir hostet gjennom en nginx som revers-proxy på Maskiner/bekkalokk, som de fleste andre tjenester. Nginx håndterer TLS og sertifikater, og sender dermed ukryptert HTTP trafikk til gitea gjennom en UNIX socket.

SSH

Gitea kjører en intern SSH server. Dette gjør det litt enklere å håndtere tilganger og sandboxing på NixOS, men resulterer også i at SSH-serveren på kjøre på en annen port enn den vanlige SSH serveren, og for tiden (arpil 2024) kjører den på port 2222. Dette kan gi litt rare URIs for upstreams, som ssh://gitea@git.pvv.ntnu.no:2222/bruker/prosjekt.git

Bruker-sync skript

Ettersom Gitea kjører på nixos, og vi ikke har fått satt opp et ordentlig bruker-sync system enda (april 2024), så har vi et python-skript som er schedulet som en systemd-timer (et cron alternativ). Dette skriptet henter passwd fila på Maskiner/Microbel, parser alle linjer, og lager og modifiser gitea-brukere gjennom gitea's REST API.

CI

Maskiner/bekkalokk er det satt opp 3 instanser av gitea-act-runner. Disse bruker podman til å lage docker-lignende containere for å kjøre pipelines i en sandbox.