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_USERetHARBOR_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.