docs: ajout du projet Luz (luz.goutailler-olivier.com)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user