diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..22e5d16 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,11 @@ +# Changelog + +## 2026-06-05 — Ajout du projet Luz + +- `Home.md` — ajout de Luz dans l'architecture et le tableau des services +- `Installation-Production.md` — section 7 Luz avec commandes de démarrage et secrets requis +- `Mise-a-jour-Applications.md` — procédure de rollback Luz, Luz ajouté dans la boucle de mise à jour globale + +## 2026-06-02 — Fix CI release Bonsai-webapp : bump version commité avant merge main + +- `Mise-a-jour-Applications.md` — documentation du bug (package.json modifié non commité bloquait git checkout main) et de la correction (commit du bump avant le merge, sauvegarde du RELEASE_HEAD) diff --git a/Home.md b/Home.md index 6cbf4dc..5a0001e 100644 --- a/Home.md +++ b/Home.md @@ -15,6 +15,7 @@ Internet ├── bonsai.goutailler-olivier.com │ ├── /api → Bonsai API (Spring Boot) │ └── / → Bonsai Webapp (front-end) + ├── luz.goutailler-olivier.com → Luz (front-end Angular) ├── cloud.goutailler-olivier.com → Nextcloud └── notes.goutailler-olivier.com → Trilium ``` @@ -28,6 +29,7 @@ Internet | Keycloak | `keycloak/` | `auth.goutailler-olivier.com` | | Bonsai API | `bonsai-api/` | `bonsai.goutailler-olivier.com/api` | | Bonsai Webapp | `bonsai-webapp/` | `bonsai.goutailler-olivier.com` | +| Luz | `luz/` | `luz.goutailler-olivier.com` | | Nextcloud | `nextcloud/` | `cloud.goutailler-olivier.com` | | Trilium | `trilium/` | `notes.goutailler-olivier.com` | @@ -36,3 +38,4 @@ Internet - [Installation Production](Installation-Production) - [Installation Développement](Installation-Developpement) - [Mise à jour des applications](Mise-a-jour-Applications) +- [CI/CD — Pipelines Gitea Actions](CI-CD) diff --git a/Installation-Production.md b/Installation-Production.md index 6aa501d..b64e29a 100644 --- a/Installation-Production.md +++ b/Installation-Production.md @@ -131,7 +131,25 @@ L'image `git.goutailler-olivier.com/bonsai/bonsai-webapp:latest` est également --- -## 7. Nextcloud +## 7. Luz + +```bash +cd luz/ +docker compose up -d +``` + +L'image `git.goutailler-olivier.com/gato/luz:latest` est construite par la CI Gitea lors d'une release. Aucune variable d'environnement spécifique n'est requise. + +**Secrets Gitea à configurer dans le dépôt Luz :** + +| Secret | Description | +|---|---| +| `RELEASE_TOKEN` | Token Gitea avec droits `write:packages` et `write:repository` | +| `WATCHTOWER_TOKEN` | Token HTTP de l'API Watchtower pour déclencher le redéploiement | + +--- + +## 9. Nextcloud ```bash cd nextcloud/ @@ -149,7 +167,7 @@ Variables à personnaliser dans `docker-compose.yml` avant le premier lancement --- -## 8. Trilium +## 10. Trilium ```bash cd trilium/ @@ -173,8 +191,9 @@ mkdir -p /home/gato/Applications/Trilium/data 4. Gitea 5. Bonsai API 6. Bonsai Webapp -7. Nextcloud -8. Trilium +7. Luz +8. Nextcloud +9. Trilium ``` --- diff --git a/Mise-a-jour-Applications.md b/Mise-a-jour-Applications.md index 0ccfe2d..9fda409 100644 --- a/Mise-a-jour-Applications.md +++ b/Mise-a-jour-Applications.md @@ -53,6 +53,46 @@ docker compose up -d --- +## Notes sur le workflow de release (CI) + +### `fetch-depth: 0` requis sur le checkout + +Le job `release.yml` de Bonsai-webapp (et Bonsai-api) effectue un `git merge` du tag de release dans `main` à la fin du pipeline. `actions/checkout@v4` fait par défaut un clone superficiel (`--depth 1`), ce qui empêche git de trouver l'ancêtre commun entre le tag et `main` → erreur `refusing to merge unrelated histories`. + +**Solution appliquée** : ajouter `fetch-depth: 0` sur le step Checkout : + +```yaml +- name: Checkout + uses: https://github.com/actions/checkout@v4 + with: + fetch-depth: 0 +``` + +Sans ce paramètre, tout nouveau runner qui clone le dépôt avec historique limité fera échouer l'étape « Merge release to main ». + +### Bump de version commité avant le merge + +Le step « Bump version in package.json » modifie `package.json` pour y inscrire la version de la release. Ce changement est **commité sur le HEAD détaché** (tag checkout) avant que le build Docker ne commence. Le step « Merge release to main » sauvegarde ensuite le hash de ce commit (`RELEASE_HEAD`) et merge ce commit (et non le tag) sur `main` : + +```yaml +- name: Bump version in package.json + run: | + # ... sed + git config ... + git add package.json + git commit -m "chore: set version to $VERSION" + +- name: Merge release to main + run: | + RELEASE_HEAD=$(git rev-parse HEAD) + git checkout main + git merge --no-ff "$RELEASE_HEAD" -m "chore: release ..." + git push origin main +``` + +**Pourquoi** : sans ce commit préalable, `git checkout main` échoue avec *"Your local changes would be overwritten by checkout"* car `package.json` est modifié mais non commité. + +--- + ## Revenir à une version précédente (rollback) Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher au serveur manuellement. @@ -76,7 +116,7 @@ Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher ### Ce que fait le workflow en coulisse 1. Retague l'image `image:vX.Y.Z` en `image:latest` dans le registry Gitea -2. (Si `restore_db=yes`) Se connecte en SSH au serveur, arrête l'API, restaure le dump PostgreSQL +2. (Si `restore_db=yes`) Via le socket Docker du runner, arrête l'API et restaure le dump PostgreSQL depuis `/opt/backups/bonsai-api/` 3. Déclenche Watchtower → redéploie le conteneur avec la version rétrogradée --- @@ -112,10 +152,18 @@ docker start bonsai-api --- +## Rollback Luz + +1. Aller dans **Gitea → Luz → Actions → Rollback → Run workflow** +2. Saisir la version cible (ex. `v1.2.3`) +3. Lancer — Watchtower redéploie automatiquement + +--- + ## Mettre à jour tous les services d'un coup ```bash -for dir in traefik keycloak gitea bonsai-api bonsai-webapp nextcloud trilium; do +for dir in traefik keycloak gitea bonsai-api bonsai-webapp luz nextcloud trilium; do echo "=== $dir ===" (cd "$dir" && docker compose pull && docker compose up -d) done