Files
Enclume/docs/INSTALLATION-INITIALE.md
T
hcornet de7a691861
Construction et publication / verifier (push) Successful in 41s
Construction et publication / verifier (pull_request) Successful in 11s
Construction et publication / publier (pull_request) Skipped
Construction et publication / publier (push) Failing after 6m3s
Enclume : editeur CLAPI, catalogue de 26 packs, empaquetage Docker
2026-09-10 11:32:03 +02:00

3.1 KiB

Création des emplacements — Gitea et Harbor

À faire une seule fois, avant le premier git push. Les valeurs ci-dessous sont celles qu'attendent compose.yaml et .gitea/workflows/build.yaml.

Gitea

Deux dépôts, pas un.

Dépôt Contenu Visibilité
enclume l'application, les images, la CI public
enclume-catalogue uniquement catalog/, les packs YAML public

Le catalogue vit à part parce que catalog-sync le tire directement : ajouter un pack devient un commit, sans reconstruction d'image. C'est aussi ce qui rendra les contributions par pull request lisibles — on relit dix lignes de YAML, pas un diff mêlé au code.

Sur enclume :

  • branche par défaut main, protégée : pas de push direct, fusion par pull request
  • Actions activées, avec un runner ayant accès au démon Docker
  • secrets du dépôt : HARBOR_USER et HARBOR_TOKEN (le compte robot créé plus bas)
  • licence MIT à la racine

Sur enclume-catalogue : même protection de branche. C'est là qu'arriveront les soumissions modérées du chantier 5.

Harbor

Projet enclume, en accès public : n'importe qui peut alors tirer les images pour s'auto-héberger, sans compte chez toi. Seule la publication demande une authentification.

Dépôts créés automatiquement au premier push : enclume/web et enclume/catalog-sync.

Compte robot

Créer un robot au niveau du projet, nommé robot$enclume-ci, avec les droits push et pull sur les dépôts — rien d'autre, pas de suppression. Le secret généré va dans HARBOR_TOKEN côté Gitea, le nom complet du robot dans HARBOR_USER.

Immuabilité des versions

Règle d'immuabilité sur les tags correspondant à [0-9]*.[0-9]*.[0-9]*.

C'est le réglage qui donne sa valeur au retour arrière : une version publiée ne peut plus être écrasée, donc ENCLUME_TAG=1.3.2 désigne aujourd'hui exactement la même image qu'au jour de sa publication.

Rétention

Conserver les 10 derniers tags correspondant à [0-9]*.[0-9]*.[0-9]*, et purger les tags 0.0.0-main.* de plus de 30 jours. Les tags sha-* servent au diagnostic, une rétention de 30 jours suffit.

Analyse

Scanner automatiquement à la publication. Ne pas activer « empêcher le déploiement d'images vulnérables » au démarrage : une CVE sans correctif dans une image de base bloquerait un déploiement urgent. Le rapport Trivy dans la CI suffit à surveiller.

Enchaînement

git remote add origin https://gitea.tips-of-mine.com/hubert/enclume.git
git push -u origin main

La CI construit, teste et publie 0.0.0-main.<commit>. Pour une vraie version :

git tag v1.0.0 && git push origin v1.0.0

Puis sur le serveur, dans le répertoire du compose :

cp .env.example .env      # renseigner ENCLUME_TAG=1.0.0 et le domaine
docker compose pull && docker compose up -d
curl -s https://<domaine>/sante

Réseau Traefik

Le compose attend un réseau externe nommé traefik. S'il porte un autre nom dans ton installation, ajuster la section networks et l'étiquette traefik.docker.network.