From 166d29262223a6fa90a939592cc346e77e611800 Mon Sep 17 00:00:00 2001 From: Leander Furumo Date: Mon, 2 Nov 2026 23:48:30 +0100 Subject: [PATCH] Add vedtekter target to deploy script Co-Authored-By: Claude Opus 5.5 --- deploy/uiogaming-deploy | 24 +++++++++++++++++++++++- driftsdokumentasjon.md | 7 +++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/deploy/uiogaming-deploy b/deploy/uiogaming-deploy index f48f29d..c74b0de 100755 --- a/deploy/uiogaming-deploy +++ b/deploy/uiogaming-deploy @@ -7,7 +7,8 @@ # # The workflow runs `ssh github_deploy@uiogaming.no `. SSH puts in # SSH_ORIGINAL_COMMAND. The script updates that repo to origin/main and rebuilds the service -# from the top-level docker-compose.yml, which owns all the containers. +# from the top-level docker-compose.yml, which owns all the containers. The vedtekter target has +# no container: it copies the current statutes from the dokumenter repo to the folder nginx serves. set -euo pipefail ROOT=/srv/uiogaming @@ -20,8 +21,11 @@ declare -A REPO=( [mustafa]=mustafa [name100]=name-100-uio-gamers [uiogaming.no]=uiogaming.no + [vedtekter]=dokumenter ) +STATUTES_DIR=/var/www/uiogaming.no/vedtekter + svc=${SSH_ORIGINAL_COMMAND:-} if [[ ! $svc =~ ^[a-z0-9.-]+$ || -z ${REPO[$svc]:-} ]]; then echo "Usage: ssh github_deploy@uiogaming.no " >&2 @@ -36,6 +40,24 @@ git -C "$repo" fetch --quiet origin "$BRANCH" git -C "$repo" reset --hard "origin/$BRANCH" echo "==> Now at $(git -C "$repo" log -1 --format='%h %s')" +if [[ $svc == vedtekter ]]; then + # nginx serves these two fixed names. Copy to a temporary file first so the swap is atomic + src="$repo/styrende dokumenter/vedtekter/gjeldende" + for pair in "vedtekter:Vedtekter UiO Gaming" "statutes:Statutes UiO Gaming"; do + name=${pair%%:*} + matches=("$src/${pair#*:} ("*" - ).pdf") + if [[ ${#matches[@]} -ne 1 || ! -f ${matches[0]} ]]; then + echo "Expected exactly one current PDF for ${pair#*:} in $src" >&2 + exit 1 + fi + install -m 644 "${matches[0]}" "$STATUTES_DIR/.$name.pdf.tmp" + mv -f "$STATUTES_DIR/.$name.pdf.tmp" "$STATUTES_DIR/$name.pdf" + echo "==> Published $(basename "${matches[0]}") as $name.pdf" + done + echo "==> Done" + exit 0 +fi + cd "$ROOT" docker compose up -d --build "$svc" diff --git a/driftsdokumentasjon.md b/driftsdokumentasjon.md index 5b6675f..655228a 100644 --- a/driftsdokumentasjon.md +++ b/driftsdokumentasjon.md @@ -281,6 +281,7 @@ I skrivende stund fungerer dette for følgende tjenester: - [Mustafa](#mustafa---discord-bot) - [Mustaboard](#mustaboard) - [name-100-uio-gamers](#name-100-uio-gamers) +- [Vedtekter](#oppdatere-vedtekter) (ingen container, les mer ved å trykke på lenken) ## Secrets og variabler @@ -400,11 +401,9 @@ Kan være lurt å børste støv av maskinen en gang i blant :) (både inni og ut Vedtektsdokumentene er laget med LaTeX og finnes [her](https://github.com/UiO-Gaming/dokumenter/tree/main/styrende%20dokumenter/vedtekter). Jeg liker ikke helt filstrukturen her, men det er et forsøk på å skille mellom norsk og engelsk, samt hva som er gamle og gjeldende vedtekter. -Fordi jeg er veldig nøye på metadata, som ingen egentlig bryr seg om, så foretrekker jeg å gjøre denne prosessen på egenhånd. Så lenge filnavnene som legges ut på GitHub er konsekvente derimot så er jeg fornøyd. Husk også å bruke datoen til den relevante generalforsamlingen på både forsiden samt filnavnene. +Prosessen er automatisert. Oppdater LaTeX-kilden og datoen på forsiden (datoen til den relevante generalforsamlingen), og push til _main_. En GitHub Action arkiverer de gamle vedtektene, bygger nye PDF-er med riktig metadata og åpner en pull request. Se [README-en i dokumenter](https://github.com/UiO-Gaming/dokumenter/tree/main/styrende%20dokumenter/vedtekter) for detaljer. -Jeg hadde tenkt til å lage et script som automatiserer denne prosessen, men per d.d har ikke dette skjedd. - -Vedtektsfilene som man finner på [vedtekter.uiogaming.no](https://vedtekter.uiogaming.no) og [statutes.uiogaming.no](https://statutes.uiogaming.no) ligger i `/var/www/uiogaming.no/vedtekter`. Merk at filene må hete `vedtekter.pdf` og `statutes.pdf` for å fungere. +Når pull requesten merges, kjører workflowen `publiser-vedtekter.yml` (`ssh github_deploy@uiogaming.no vedtekter`). Deploy-scriptet oppdaterer `/srv/uiogaming/dokumenter` og kopierer de gjeldende vedtektene til `/var/www/uiogaming.no/vedtekter`, der [vedtekter.uiogaming.no](https://vedtekter.uiogaming.no) og [statutes.uiogaming.no](https://statutes.uiogaming.no) henter dem. Filene må hete `vedtekter.pdf` og `statutes.pdf` for å fungere, og det ordner scriptet. # Rutiner