Drift/Gitea: Difference between revisions

From Programvareverkstedet
m (uid -> id)
(Update notes about sync scripts)
Tag: 2017 source edit
 
(5 intermediate revisions by the same user not shown)
Line 8: Line 8:


=== Web-endepunkt ===
=== Web-endepunkt ===
Selve nettsiden blir hostet gjennom en nginx som revers-proxy på [[Maskiner/bekkalokk]], som de fleste andre tjenester.
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.
Nginx håndterer TLS og sertifikater, og sender dermed ukryptert HTTP trafikk til gitea gjennom en UNIX socket.


=== SSH ===
=== SSH ===
Gitea kjører en [https://docs.gitea.com/administration/config-cheat-sheet#server-server intern SSH server].
Gitea kjører en [https://docs.gitea.com/administration/config-cheat-sheet#server-server intern SSH server].
Dette gjør det litt enklere å håndtere tilganger og sandboxing på NixOS,
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,
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 <code>2222</code>.
og for tiden (april 2024) kjører den på port <code>2222</code>.
Dette kan gi litt rare URIs for upstreams, som <code>ssh://gitea@git.pvv.ntnu.no:2222/bruker/prosjekt.git</code>
Dette kan gi litt rare URIs for upstreams, som <code>ssh://gitea@git.pvv.ntnu.no:2222/bruker/prosjekt.git</code>


=== Bruker-sync skript ===
=== 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),
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 [https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html systemd-timer (et cron alternativ)].
så har vi et python-skript som er schedulet som en [https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html systemd-timer (et cron alternativ)].
Dette skriptet henter passwd fila på [[Maskiner/Microbel]], parser alle linjer, og lager og modifiser gitea-brukere gjennom [https://docs.gitea.com/next/development/api-usage gitea's REST API].
Dette skriptet henter passwd fila på [[Maskiner/Microbel]], parser alle linjer, og lager og modifiser gitea-brukere gjennom [https://docs.gitea.com/next/development/api-usage gitea's REST API]. Den passer nå (august 2024) også på å legge til både nye og eksisterende brukere som medlemmer i <code>Projects</code> og <code>Kurs</code> organisasjonene.
 
=== Web sync skript ===
 
Vi har laget et skript som går over alle fellesprosjekter i flere organisasjoner, og gir alle en SSH nøkkel. Denne nøkkelen kan brukes til å kopiere vev-innhold over til vevmaskinen vår (i 2024, [[Maskiner/bekkalokk]]). Skriptet kjører for tiden på [[Maskiner/bekkalokk]] daglig, med grunngivning at du sikkert ikke er helt klar med både CI og webinnhold idet du oppretter prosjektet. SSH nøkkelen finner du i https://git.pvv.ntnu.no/&lt;ORGANIZATION&gt;/&lt;PROJECT&gt;/settings/actions/secrets (gitt at <code>actions</code> er skrudd på i innstillingene) under navnet <code>WEB_SYNC_SSH_KEY</code>


=== CI ===
=== CI ===
På [[Maskiner/bekkalokk]] er det satt opp 3 instanser av [https://docs.gitea.com/usage/actions/act-runner gitea-act-runner].
På [[Maskiner/bekkalokk]] er det satt opp 3 instanser av [https://docs.gitea.com/usage/actions/act-runner gitea-act-runner].
Disse bruker [https://podman.io/docs podman] til å lage docker-lignende containere for å kjøre pipelines i en sandbox.
Disse bruker [https://podman.io/docs podman] til å lage docker-lignende containere for å kjøre pipelines i en sandbox.
Line 29: Line 37:
=== Database-operasjoner ===
=== Database-operasjoner ===


Noen ting er enklest å endre på direkte i databasen. Databasen til Gitea kan du finne på postgres-serveren (finnes på [[Maskiner/Bicep]] idet jeg skriver). Først må du logge deg in som rot, og så kjøre psql som rot, og koble til gitea databasen
Noen ting er enklest å endre på direkte i databasen. Databasen til Gitea kan du finne i [[Drift/Databaser|PostgreSQL]]. Først må du logge deg in som rot, og så kjøre psql som postgres system-brukeren, og koble til gitea databasen


  $ sudo -u postgres psql
  $ sudo -u postgres psql
Line 56: Line 64:


  UPDATE public.user SET email_notifications_preference = 'onmention' WHERE email_notifications_preference = 'enabled';
  UPDATE public.user SET email_notifications_preference = 'onmention' WHERE email_notifications_preference = 'enabled';
=== Historie ===
Tidligere har vi kjørt andre systemer for hosting av versjonskontrollerte kodelagere og samarbeid. Det gjelder blant annet [[Drift/TRAC|TRAC]] og [[Drift/Gogs|Gogs]]. Det meste av innholdet har blitt migrert over til Gitea. Gitea ble mest sannsynlig satt opp 22. april 2023 da en testaddresse ble lagt in i [[Drift/DNS_og_dvask|sonefila]], men ble ikke ordentlig tatt i bruk før rundt 4. juni 2023, da vi begynte å massemigrere prosjekter fra TRAC.

Latest revision as of 23:01, 27 August 2024

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

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 (april 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. Den passer nå (august 2024) også på å legge til både nye og eksisterende brukere som medlemmer i Projects og Kurs organisasjonene.

Web sync skript

Vi har laget et skript som går over alle fellesprosjekter i flere organisasjoner, og gir alle en SSH nøkkel. Denne nøkkelen kan brukes til å kopiere vev-innhold over til vevmaskinen vår (i 2024, Maskiner/bekkalokk). Skriptet kjører for tiden på Maskiner/bekkalokk daglig, med grunngivning at du sikkert ikke er helt klar med både CI og webinnhold idet du oppretter prosjektet. SSH nøkkelen finner du i https://git.pvv.ntnu.no/<ORGANIZATION>/<PROJECT>/settings/actions/secrets (gitt at actions er skrudd på i innstillingene) under navnet WEB_SYNC_SSH_KEY

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.

Database-operasjoner

Noen ting er enklest å endre på direkte i databasen. Databasen til Gitea kan du finne i PostgreSQL. Først må du logge deg in som rot, og så kjøre psql som postgres system-brukeren, og koble til gitea databasen

$ sudo -u postgres psql
postgres=# \c gitea
You are now connected to database "gitea" as user "postgres".
gitea=#

Heretter kan du gjøre endringer. Her er et par endringer vi har utført gjennom tidene.

Legg til mail for bruker

Kan være nyttig når du importerer et repo og brukeren har laget masse commits med en annen email enn den som er registrert i gitea

SELECT id FROM public.user WHERE name = 'oysteikt';
1234

INSERT INTO email_address(uid,email,lower_email,is_activated,is_primary) VALUES (1234,'oysteikt@example.com','oysteikt@example.com','1','0');

Slå av repo_units (actions, projects, releases, etc) for gruppe med repoer

Se liste over repo_unit typer her: https://github.com/go-gitea/gitea/blob/7bb38358114ef7f55ee9f56838df74f1dda969aa/models/unit/unit.go#L22-L33

DELETE FROM repo_unit WHERE repo_id IN (SELECT id FROM repository WHERE owner_name = 'oysteikt') AND type in (5, 6, 7, 8, 9);

Oppdater innstillinger for email-notifikasjoner for alle brukere

UPDATE public.user SET email_notifications_preference = 'onmention' WHERE email_notifications_preference = 'enabled';

Historie

Tidligere har vi kjørt andre systemer for hosting av versjonskontrollerte kodelagere og samarbeid. Det gjelder blant annet TRAC og Gogs. Det meste av innholdet har blitt migrert over til Gitea. Gitea ble mest sannsynlig satt opp 22. april 2023 da en testaddresse ble lagt in i sonefila, men ble ikke ordentlig tatt i bruk før rundt 4. juni 2023, da vi begynte å massemigrere prosjekter fra TRAC.