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

Closed
opened 2026-07-30 15:45:09 +00:00 by Damien · 0 comments
Owner

Contexte

gitea-runner/install.sh définit aujourd'hui :

GITEA_HOSTNAME="${GITEA_HOSTNAME:-gitea.taila5ad8.ts.net}"

Cette valeur est un hostname nu, utilisé à deux endroits :

  1. Le start_pre() du service OpenRC, qui attend la résolution MagicDNS via getent hosts "__GITEA_HOSTNAME__" — un hostname nu est ce qu'il faut ici.
  2. L'enregistrement du runner, où l'URL de l'instance était jusqu'ici http://gitea.taila5ad8.ts.net:3000.

Après #19, Gitea n'écoute plus que sur 127.0.0.1:3000 et n'est exposé sur le tailnet que via tailscale serve --https=443. L'URL devient https://gitea.taila5ad8.ts.net, sans port.

Modification

Séparer les deux usages plutôt que de surcharger une seule variable :

  • GITEA_HOSTNAME — reste un hostname nu, consommé par le getent du start_pre(). Inchangé.
  • GITEA_INSTANCE_URL — nouvelle variable, URL complète (https://gitea.taila5ad8.ts.net), consommée à l'enregistrement et propagée par exec_in_lxc().

Dériver la seconde de la première par défaut :

GITEA_INSTANCE_URL="${GITEA_INSTANCE_URL:-https://${GITEA_HOSTNAME}}"

Les deux restent surchargeables indépendamment.

Ré-enregistrement du runner

L'URL de l'instance est figée dans le fichier .runner généré à l'enregistrement. Changer la variable ne suffit pas : un runner déjà enregistré continuera de pointer sur l'ancienne URL.

Documenter la procédure dans gitea-runner/README.md :

  1. rc-service gitea-runner stop
  2. Supprimer /var/lib/gitea-runner/.runner
  3. Ré-enregistrer avec la nouvelle URL et un token frais depuis l'UI Gitea
  4. rc-service gitea-runner start

Le script ne doit pas tenter de le faire automatiquement : c'est une opération qui nécessite un token d'enregistrement obtenu manuellement, et la destruction silencieuse d'un .runner fonctionnel serait un mauvais comportement pour un script rejouable.

En revanche, il peut détecter l'incohérence — .runner présent pointant sur une URL différente de GITEA_INSTANCE_URL — et afficher un avertissement avec la marche à suivre.

Fichiers touchés

  • gitea-runner/install.sh — variables, exec_in_lxc(), messages de fin
  • gitea-runner/README.md — tableau des variables, section ré-enregistrement

Critères d'acceptation

  • Installation neuve : le runner s'enregistre sur https://gitea.taila5ad8.ts.net et prend des jobs
  • Le start_pre() résout toujours correctement le hostname via MagicDNS
  • Runner existant avec URL divergente : avertissement affiché, .runner non supprimé
  • Rejeu du script sur un runner cohérent : aucun avertissement, aucun effet de bord
  • Procédure de ré-enregistrement documentée dans le README
  • Les métriques de l'act_runner restent exposées après ré-enregistrement

Dépendances

Bloquée par #19 — l'URL cible n'existe qu'une fois tailscale serve en place sur le LXC Gitea.

## Contexte `gitea-runner/install.sh` définit aujourd'hui : ```bash GITEA_HOSTNAME="${GITEA_HOSTNAME:-gitea.taila5ad8.ts.net}" ``` Cette valeur est un **hostname nu**, utilisé à deux endroits : 1. Le `start_pre()` du service OpenRC, qui attend la résolution MagicDNS via `getent hosts "__GITEA_HOSTNAME__"` — un hostname nu est ce qu'il faut ici. 2. L'enregistrement du runner, où l'URL de l'instance était jusqu'ici `http://gitea.taila5ad8.ts.net:3000`. Après #19, Gitea n'écoute plus que sur `127.0.0.1:3000` et n'est exposé sur le tailnet que via `tailscale serve --https=443`. L'URL devient `https://gitea.taila5ad8.ts.net`, sans port. ## Modification Séparer les deux usages plutôt que de surcharger une seule variable : - `GITEA_HOSTNAME` — reste un hostname nu, consommé par le `getent` du `start_pre()`. Inchangé. - `GITEA_INSTANCE_URL` — nouvelle variable, URL complète (`https://gitea.taila5ad8.ts.net`), consommée à l'enregistrement et propagée par `exec_in_lxc()`. Dériver la seconde de la première par défaut : ```bash GITEA_INSTANCE_URL="${GITEA_INSTANCE_URL:-https://${GITEA_HOSTNAME}}" ``` Les deux restent surchargeables indépendamment. ## Ré-enregistrement du runner L'URL de l'instance est **figée dans le fichier `.runner`** généré à l'enregistrement. Changer la variable ne suffit pas : un runner déjà enregistré continuera de pointer sur l'ancienne URL. Documenter la procédure dans `gitea-runner/README.md` : 1. `rc-service gitea-runner stop` 2. Supprimer `/var/lib/gitea-runner/.runner` 3. Ré-enregistrer avec la nouvelle URL et un token frais depuis l'UI Gitea 4. `rc-service gitea-runner start` Le script ne doit **pas** tenter de le faire automatiquement : c'est une opération qui nécessite un token d'enregistrement obtenu manuellement, et la destruction silencieuse d'un `.runner` fonctionnel serait un mauvais comportement pour un script rejouable. En revanche, il peut **détecter** l'incohérence — `.runner` présent pointant sur une URL différente de `GITEA_INSTANCE_URL` — et afficher un avertissement avec la marche à suivre. ## Fichiers touchés - `gitea-runner/install.sh` — variables, `exec_in_lxc()`, messages de fin - `gitea-runner/README.md` — tableau des variables, section ré-enregistrement ## Critères d'acceptation - [ ] Installation neuve : le runner s'enregistre sur `https://gitea.taila5ad8.ts.net` et prend des jobs - [ ] Le `start_pre()` résout toujours correctement le hostname via MagicDNS - [ ] Runner existant avec URL divergente : avertissement affiché, `.runner` **non supprimé** - [ ] Rejeu du script sur un runner cohérent : aucun avertissement, aucun effet de bord - [ ] Procédure de ré-enregistrement documentée dans le README - [ ] Les métriques de l'act_runner restent exposées après ré-enregistrement ## Dépendances **Bloquée par #19** — l'URL cible n'existe qu'une fois `tailscale serve` en place sur le LXC Gitea.
Damien added this to the gitea-lxc-migration milestone 2026-07-30 15:45:09 +00:00
Damien added a new dependency 2026-07-30 19:09:27 +00:00
Damien removed a dependency 2026-07-30 19:10:25 +00:00
Damien added a new dependency 2026-07-30 19:11:21 +00:00
Damien added reference fix/runner-instance-url 2026-08-01 08:23:10 +00:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Reference: Damien/infra-scripts#22