forgejo : ne pas retelecharger un binaire deja pose

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 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-08-09 13:58:33 -04:00
parent 9feaf212c7
commit 2ec9cec76a

View file

@ -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 }}"