fix(gitea-runner): URL d'instance complète et procédure de ré-enregistrement #27

Closed
Damien wants to merge 1 commits from fix/runner-instance-url into main
Owner

Contexte

GITEA_HOSTNAME faisait double usage : hostname nu pour le getent MagicDNS du start_pre(), et implicitement (via les instructions affichées) base de l'URL d'enregistrement (http://gitea.taila5ad8.ts.net:3000). Après le passage à tailscale serve --https=443 (#19), l'instance est joignable sur 443 sans port.

Changement

  • GITEA_HOSTNAME reste un hostname nu, inchangé, toujours consommé par le getent du start_pre().
  • Nouvelle variable GITEA_INSTANCE_URL, dérivée par défaut (https://${GITEA_HOSTNAME}), propagée par exec_in_lxc(), utilisée dans les instructions d'enregistrement affichées en fin d'install (--instance ${GITEA_INSTANCE_URL}).
  • check_runner_url_drift() : si .runner existe et pointe sur une URL différente de GITEA_INSTANCE_URL, avertissement affiché avec la marche à suivre — le script ne touche jamais .runner automatiquement (détruire silencieusement un runner enregistré et fonctionnel serait un mauvais comportement pour un script rejouable). Appelée en début de update_runner(), donc sur tout rejeu d'un runner déjà installé.
  • gitea-runner/README.md : tableau des variables mis à jour, nouvelle section « Re-registration » avec la procédure manuelle (stop → suppression de .runner → ré-enregistrement avec un token frais → start).

Vérification

Fonctions testées isolément dans un conteneur Alpine jetable (source, sans passer par main()) :

  • .runner avec address différente de GITEA_INSTANCE_URL → avertissement affiché, fichier non supprimé.
  • .runner avec address identique → silencieux, aucun effet de bord.
  • .runner absent → no-op silencieux (check_runner_url_drift retourne 0 immédiatement).

shellcheck gitea-runner/install.sh : aucune nouvelle alerte (seul le SC1091 info préexistant, identique à openbao/install.sh).

Dépendance

Bloquée par #19 côté infra réelle (l'URL cible n'existe qu'une fois tailscale serve en place sur le LXC Gitea), mais ce changement est autonome côté code — pas de dépendance de branche.

Closes #22

## Contexte `GITEA_HOSTNAME` faisait double usage : hostname nu pour le `getent` MagicDNS du `start_pre()`, et implicitement (via les instructions affichées) base de l'URL d'enregistrement (`http://gitea.taila5ad8.ts.net:3000`). Après le passage à `tailscale serve --https=443` (#19), l'instance est joignable sur 443 **sans port**. ## Changement - `GITEA_HOSTNAME` reste un hostname nu, inchangé, toujours consommé par le `getent` du `start_pre()`. - Nouvelle variable `GITEA_INSTANCE_URL`, dérivée par défaut (`https://${GITEA_HOSTNAME}`), propagée par `exec_in_lxc()`, utilisée dans les instructions d'enregistrement affichées en fin d'install (`--instance ${GITEA_INSTANCE_URL}`). - `check_runner_url_drift()` : si `.runner` existe et pointe sur une URL différente de `GITEA_INSTANCE_URL`, avertissement affiché avec la marche à suivre — **le script ne touche jamais `.runner` automatiquement** (détruire silencieusement un runner enregistré et fonctionnel serait un mauvais comportement pour un script rejouable). Appelée en début de `update_runner()`, donc sur tout rejeu d'un runner déjà installé. - `gitea-runner/README.md` : tableau des variables mis à jour, nouvelle section « Re-registration » avec la procédure manuelle (stop → suppression de `.runner` → ré-enregistrement avec un token frais → start). ## Vérification Fonctions testées isolément dans un conteneur Alpine jetable (`source`, sans passer par `main()`) : - `.runner` avec `address` différente de `GITEA_INSTANCE_URL` → avertissement affiché, fichier **non supprimé**. - `.runner` avec `address` identique → silencieux, aucun effet de bord. - `.runner` absent → no-op silencieux (`check_runner_url_drift` retourne 0 immédiatement). `shellcheck gitea-runner/install.sh` : aucune nouvelle alerte (seul le SC1091 info préexistant, identique à `openbao/install.sh`). ## Dépendance Bloquée par #19 côté infra réelle (l'URL cible n'existe qu'une fois `tailscale serve` en place sur le LXC Gitea), mais ce changement est autonome côté code — pas de dépendance de branche. Closes #22
Damien added 1 commit 2026-07-31 18:25:29 +00:00
GITEA_HOSTNAME was doing double duty: a bare hostname for the
start_pre() MagicDNS getent check, and (implicitly, via manual
instructions) a base for the registration URL. Since Gitea moved to
`tailscale serve --https=443` (#19), the instance is reachable on 443
with no port — the old implicit `http://<hostname>:3000` no longer
applies.

GITEA_HOSTNAME stays a bare hostname; GITEA_INSTANCE_URL is a new,
independently overridable variable defaulting to
https://${GITEA_HOSTNAME}, forwarded through exec_in_lxc and used in
the printed registration command.

The instance URL is frozen into .runner at registration time, so
changing the variable doesn't retroactively fix an already-registered
runner. check_runner_url_drift() detects a mismatch and warns with
the re-registration procedure, without touching .runner — deleting a
working runner's registration is a deliberate, manual, documented
step, not something a rerunnable install script should do on its own.

Closes #22
Damien closed this pull request 2026-08-01 17:44:20 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Damien/infra-scripts#27