From 357cf996edcc72c0bc3ff477808ee5bde67281c7 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Tue, 22 Sep 2026 12:36:38 +0200 Subject: [PATCH] fix(infra): donne au runner un nom distinct de son label --name reprenait runner_labels : un runner et son label portaient le meme eni-g3. Deux machines qui reprendraient cette racine s'enregistreraient sous le meme nom, ce que GitHub refuse. Le nom vaut desormais celui de l'hote, resolu sur la machine, et runner_nom permet de le forcer. Point 2 de la revue de la PR #144. Co-Authored-By: Claude Opus 5 (1M context) --- infra/terraform/environments/vm-eni/main.tf | 8 ++++++-- .../environments/vm-eni/terraform.tfvars.example | 4 ++++ infra/terraform/environments/vm-eni/variables.tf | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/infra/terraform/environments/vm-eni/main.tf b/infra/terraform/environments/vm-eni/main.tf index 09b81e1..44a9241 100644 --- a/infra/terraform/environments/vm-eni/main.tf +++ b/infra/terraform/environments/vm-eni/main.tf @@ -13,6 +13,9 @@ locals { en_tant_que = "${var.ssh_user == "root" ? "" : "sudo "}runuser -u ${var.proprietaire} --" provisionneur = "${path.root}/../../../../scripts/provision-host.sh" runner_archive = "actions-runner-linux-x64-${var.runner_version}.tar.gz" + # Substitution shell, evaluee par le sh -c distant : un nom de runner doit etre unique dans + # le depot, le nom d'hote l'est deja et le reste si cette racine sert a une autre machine. + runner_nom = var.runner_nom != "" ? var.runner_nom : "$(hostname -s)" } resource "null_resource" "docker_engine" { @@ -89,13 +92,14 @@ resource "null_resource" "environnements" { } # Piege : le jeton d'enregistrement expire en une heure. Un `apply` rejoue cette ressource des -# que `runner_version` ou `runner_labels` change, et redemande donc un jeton frais. +# que `runner_version`, `runner_labels` ou `runner_nom` change, et redemande donc un jeton frais. resource "null_resource" "runner_github" { depends_on = [null_resource.environnements] triggers = { version = var.runner_version labels = var.runner_labels + nom = local.runner_nom dossier = var.runner_dossier } @@ -123,7 +127,7 @@ resource "null_resource" "runner_github" { if [ ! -f ${var.runner_dossier}/.runner ]; then ${local.en_tant_que} sh -c 'cd ${var.runner_dossier} && ./config.sh --unattended --replace \ --url ${var.runner_url} --token ${var.runner_token} \ - --labels ${var.runner_labels} --name ${var.runner_labels} --work _work' + --labels ${var.runner_labels} --name ${local.runner_nom} --work _work' ${local.sudo}${var.runner_dossier}/svc.sh install ${var.proprietaire} fi ${local.sudo}${var.runner_dossier}/svc.sh start diff --git a/infra/terraform/environments/vm-eni/terraform.tfvars.example b/infra/terraform/environments/vm-eni/terraform.tfvars.example index 7628587..9f5df93 100644 --- a/infra/terraform/environments/vm-eni/terraform.tfvars.example +++ b/infra/terraform/environments/vm-eni/terraform.tfvars.example @@ -16,3 +16,7 @@ runner_version = "2.330.0" # depot peut le creer. terraform.tfvars est ignore par git, mais le jeton ne doit pas y rester # apres l'apply. runner_token = "A_RENSEIGNER" + +# Nom du runner cote GitHub. Vide par defaut : le nom d'hote de la machine. A renseigner +# seulement si deux runners doivent tourner sur la meme machine, leurs noms devant differer. +# runner_nom = "eni-g3-bis" diff --git a/infra/terraform/environments/vm-eni/variables.tf b/infra/terraform/environments/vm-eni/variables.tf index 746fa24..29be228 100644 --- a/infra/terraform/environments/vm-eni/variables.tf +++ b/infra/terraform/environments/vm-eni/variables.tf @@ -77,6 +77,12 @@ variable "runner_labels" { default = "eni-g3" } +variable "runner_nom" { + type = string + description = "Nom du runner cote GitHub, unique dans le depot. Vide : le nom d'hote de la machine, qui reste unique si cette racine est reprise pour une seconde VM. A renseigner pour faire tourner deux runners sur la meme machine." + default = "" +} + variable "runner_dossier" { type = string description = "Dossier d'installation du runner sur la machine."