Gitea ☕

Gitea er en tjeneste vi selv kjører på cassarossa (gitea.samfundet.no). Hvis du er kjent med Github, så vil Gitea være veldig gjenkjennelig. Med dette kan vi lage «Pull requests» (foreslå å merge en branch inn i hovedbranchen) og med det enklere diskutere endringer før de kommer i produksjon. Gitea har også støtte for «Issues» hvor vi kan ha oversikt over problemer/bugs/feature-forslag.

Innholdsfortegnelse

    1. 1 «Hvordan blir jeg med i ITK på Gitea?»
    2. 2 Noen standarder
    3. 3 Hvordan lage SSH-nøkkel
    4. 4 Hvordan flytte repo over til Gitea
    5. 5 Legge til commit-eposter
    6. 6 Hvordan lage nytt repo
    7. 7 Hvordan lage en pull request
    8. 8 Hvordan Gitea driftes
    9. 9 Problemer som kan oppstå
      1. 9.1 Unpacker error
      2. 9.2 Hooks står i veien for direkte commits til repoene
      3. 9.3 SSH kaster masse «Spoofing»-meldinger
    10. 10 Andre gjenger og Gitea
    11. 11 TODO
      1. 11.1 Legge til egne integrasjoner til Gitea
      2. 11.2 Automatisk pulling på Cirkus
      3. 11.3 Script som flytter repoer automatisk
      4. 11.4 Sende e-post om PR til itk-commits og ikke bruke post-commit hooken

«Hvordan blir jeg med i ITK på Gitea?»

LDAP-integrasjon er på vei. Inntil den er på plass: spør en administrator (f.eks. olebra) om å legge deg til :-)

Noen standarder

  1. Bruk eksisterende labels som er spesifisert i organisasjonen ITK. Prøv å ikke lage custom labels til hvert eneste repo. Dette er for å unnga duplikater.
  2. Små bokstaver på reponavn
  3. Commit meldinger skal være på engelsk, PR og issues skal være på norsk.
  4. Bruk SSH-nøkkel!

Hvordan lage SSH-nøkkel

  1. Kjør ssh-keygen i .ssh-mappen din.
  2. Lag en config i .ssh, her er en mal:
    Host gitea.samfundet.no
        preferredauthentications publickey
        IdentityFile ~/.ssh/<din-privat-nøkkel>
        User gitea
    
  3. Kopier den offentlige delen av nøkkelen
  4. Gå inn på Gitea -> profilbildet ditt -> Settings -> SSH / GPG Keys -> Add Key og lim inn det du kopierte

Hvordan flytte repo over til Gitea

  1. Lag et nytt repository på Gitea med ITK som owner (ev. deg selv om det er et privatprosjekt)
  2. Gå inn i /home/cassarossa/felles/gitea/itk
  3. Slett .git filen som gitea lagde
  4. Lag symlink til det repoet du vil migrere med:
     ln -s /home/cassarossa/itk/felles/git/<reponavn>
    
  5. Hvis ikke repoet har .git på slutten legger du det til på symlinken. (Pass på at du gjør det på symlinken og ikke det faktiske repoet!)
  6. Gjør gitea og gruppen itk owner av repoet. Eller gi gitea skrive-, lese- og execute-tilganger

Legge til commit-eposter

  1. Gå inn i /hooks/ i repoet
  2. Dersom det finnes en post-receive.d mappe gjøre dette:
    ln -s /home/cassarossa/itk/felles/git/post-receive post-receive.d/itk-commits
    ellers så gjør du det her:
    ln -s /home/cassarossa/itk/felles/git/post-receive post-receive
  3. Deretter må du endre git configen til
    sudo su gitea 
    git config --add hooks.mailinglist "itk-commits@samfundet.no"
    (fellesliste for mindre prosjekter, større prosjekter (mdb2, billig, etc.) har gjerne dedikert mailingliste)
     
    git config --add hooks.emailprefix "[prosjektnavn] "
    
  4. E-postene vil nå bli sendt som gitea :).

Hvordan lage nytt repo

Tidligere når man skulle lage nye repoer brukte man dette:

git init --bare --shared=group

Nå er det derimot lurere å gjøre det igjennom Gitea, siden den i tillegg legger inn et par hooks som Gitea trenger.

Etter at du har laget nytt repo på Gitea er det lurt å flytte repoet, som man gjør under migrering (Hvordan flytte repo over til Gitea). Dette er for å ikke fylle opp felles-mappen på cassarossa, og for at alle repoene skal ligge et sted. Bruk symlink :). Følg også Legge til commit-eposter.

Hvordan lage en pull request

  1. Lag en ny branch og gjør endringene dine
  2. Push den til Gitea
  3. Under «Pull Request» klikk «New Pull Request»
  4. Skriv hva du har gjort og be andre se over 👍

Hvordan Gitea driftes

Det kjører en systemd-tjeneste på cassarossa. Konfigurasjonen ligger i /etc/gitea/app.ini, se Gitea sine sider for mulige innstillinger. Gitea er ikke tilgjengelig offisielt fra Debian sine repo (det er noen som har pakket det sammen, men ikke offisielt.) Oppgradering må med andre ord gjøres manuelt. Det skal i teorien være å bytte ut binærfilen /usr/local/bin/gitea med den nye versjonen. Se «Upgrade from an old Gitea».

Gitea ble oppdatert fra versjon 15 til 17 ved å bytte ut binærfilen i /usr/local/bin/gitea. Pass på å lese hva som har blitt endret. Noen endringer kan brekke Gitea, og det står hva slags eventuelle endringer man må gjøre i dokumentasjonen.

Gitea kjører også med en skreddersydd systemd-config definert i

/etc/systemd/system/gitea.service
.

Problemer som kan oppstå

Unpacker error

Dette betyr at det er noe feil med rettigheter. Dette kan skje med repoer som har blitt migrert, grunnet manglende ACL-rettigheter. Pass på at default kan skrive.

Hooks står i veien for direkte commits til repoene

Alle commits burde hovedsakelig gå igjennom Gitea, men dersom man må pushe til repoene, må man skippe hooks.

Dette gjør man med følgende:

git reset
git commit --no-verify -m "<melding>"
git push --no-verify

Dersom dette ikke skulle funke kan du slette/flytte "gitea" fra hooks, men helst ikke gjør dette!

SSH kaster masse «Spoofing»-meldinger

Slett Gitea fra known_hosts i .ssh-mappen (som feilmeldingen foreslår). Dette oppstår fordi gitea.samfundet.no var på altersex før. Gjør dette dersom du bare hadde ssh nøkkel på gitea på altersex!

Andre gjenger og Gitea

Det er lagt opp til at andre gjenger kan bruke Gitea. Organisasjoner må i så fall lages.

TODO

Legge til egne integrasjoner til Gitea

Så bra! :D Gitea har faktisk et REST-API med Swagger som gir en god oversikt over de tilgjengelige endepunktene. Bare besøk https://gitea.samfundet.no/api/swagger. Resten av Gitea sin dokumentasjon kan hjelpe deg videre 👍. Det er mulig for å legge til mye rart.

Automatisk pulling på Cirkus

Dette har blitt gjort sånn halveis. Det ligger et repo som heter webhooks som klarer å pulle automatisk når man pusher til Gitea. Man må derimot fikse gode rettigheter til dette, slik at dette kan skje trygt.

Script som flytter repoer automatisk

Repoer burde flyttes automatisk til /home/cassarossa/itk/felles/git. Kanskje en cron-jobb som kjører hver uke/dag?

Sende e-post om PR til itk-commits og ikke bruke post-commit hooken

Hadde vært nice å sende e-post til itk-commits dersom man gjør en PR, så alle får vite om det. Gitea skal ha native funskjonalitet til å sende e-post om commits i følge denne issuen. https://github.com/go-gitea/gitea/issues/8365

Lenker: Start, git-repo

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2022-11-15 13:33 | Revisjon: 30 (historie, blame) | Totalt: 1820 kB | Rediger