From 2ec9cec76ac020e2618f096d17dbcdb8f91b9912 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Sun, 9 Aug 2026 13:58:33 -0400 Subject: [PATCH] forgejo : ne pas retelecharger un binaire deja pose MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trouve par le passage d'idempotence : « Connection failure: The read operation timed out » sur le telechargement du binaire — 106 Mo deja presents sur la machine. get_url n'avait aucune garde (ni checksum, ni condition d'existence), alors que le chemin de destination PORTE la version : forgejo-10.0.0 ne peut pas designer un autre contenu demain. Chaque deploiement recontactait donc un serveur tiers pour un fichier immuable. Un deploiement de flotte echouait parce qu'un serveur externe etait lent. Sur une plateforme qui se veut souveraine, c'est une dependance de trop sur le chemin critique. Co-Authored-By: Claude Opus 5 --- roles/serveur_forgejo/tasks/main.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/roles/serveur_forgejo/tasks/main.yml b/roles/serveur_forgejo/tasks/main.yml index a27c400..de40596 100644 --- a/roles/serveur_forgejo/tasks/main.yml +++ b/roles/serveur_forgejo/tasks/main.yml @@ -51,7 +51,22 @@ create_home: true comment: "Git Version Control" +# Le chemin de destination PORTE la version : `forgejo-10.0.0` ne peut pas designer un +# autre contenu demain. Le binaire est donc immuable une fois pose, et le retelecharger +# n'a aucun sens — or `get_url` sans garde recontacte le serveur distant a CHAQUE +# deploiement, pour 106 Mo deja presents. +# +# Constate le 2026-08-09 pendant le passage d'idempotence : « Connection failure: The +# read operation timed out ». Un deploiement de flotte echouait parce qu'un serveur tiers +# etait lent — sur une plateforme qui se veut souveraine, c'est une dependance de trop +# sur le chemin critique. +- name: Le binaire de cette version est-il deja pose ? + ansible.builtin.stat: + path: "/usr/local/bin/forgejo-{{ serveur_forgejo_version }}" + register: serveur_forgejo_binaire_present + - name: Telecharger le binaire Forgejo + when: not serveur_forgejo_binaire_present.stat.exists ansible.builtin.get_url: url: "{{ serveur_forgejo_url }}" dest: "/usr/local/bin/forgejo-{{ serveur_forgejo_version }}"