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 500 Internal server error på pull requests.
    6. 6 Legge til commit-eposter
    7. 7 Hvordan lage nytt repo
    8. 8 Hvordan lage en pull request
    9. 9 Hvordan Gitea driftes
    10. 10 Pushe direkte til cass
    11. 11 Problemer som kan oppstå
      1. 11.1 "remote unpack failed: unable to create temporary object directory"
    12. 12 TODO
    13. 13 LDAP/AD konfigurasjon
      1. 13.1 Gitea actions
      2. 13.2 Sende e-post om PR til itk-commits og ikke bruke post-commit hooken
      3. 13.3 Legge til egne integrasjoner til Gitea

«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 <brukernavn>
    
  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

500 Internal server error på pull requests.

Dette er mest sannsynlig fordi repoet ikke har en main branch. Bytt om navn til master til main, eller lag en tom main branch

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
  3. Deretter må du endre git configen til gitea
    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 til itk sitt hjemmeområdet. Dette kan gjøres med scriptet move-repos.py, men kjøres også automatisk som en cronjob. Hvis du skal kjøre den manuelt er det viktig at du endrer owner til gitea av alle filene etter!

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
.

Pushe direkte til cass

Dette bør egentlig ikke gjøres men kan gjøres i nødstilfelle

  1. gå inn i
    /home/cassarossa/felles/gitea/itk/<reponavn>
  2. gå inn i .git mappen og flytt alle filene i hooks til et annet sted
  3. Pass på at itk har rwx.
  4. push endringene dine
  5. legg til hooks igjen når du er ferdig!

Problemer som kan oppstå

"remote unpack failed: unable to create temporary object directory"

Dette betyr at det er noe feil med rettigheter. Pass på at tilgangene er riktige!

TODO

LDAP/AD konfigurasjon

Akkurat nå er det en halveis LDAP konfigurasjon på Gitea. Denne finnes her: https://gitea.samfundet.no/admin/auths/1. Det hadde vært praktisk med automatisk synkronisering av grupper.

Gitea actions

CI/CD løsning til Gitea som er kompatibel med Github actions løsninger. For å ha CI/CD må man ha docker på Cirkus (Cirkus har en kjerne der virtualization er skrudd av). Hvis man gjør dette kan man gjøre det lettere å pushe ut endringer i prod.

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

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.

Lenker: Start, git-repo

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2023-09-27 18:35 | Revisjon: 38 (historie, blame) | Totalt: 1877 kB | Rediger