fix: logo wiki servi depuis docs/assets/ (hors git, généré par build-assets.py)

overrides/partials/logo.html : remplace l'URL static.alpinux.org par
{{ base_url }}/assets/alpinux-logo.png — le logo est inclus dans le
build MkDocs, pas servi depuis le CDN.

scripts/build-assets.py : sépare les deux destinations :
- docs/assets/alpinux-logo.png (200×200, pour le wiki)
- /tmp/alpinux-static-assets/ (512px + favicons → static.alpinux.org/logo/)
Plus d'argument --out ; les chemins sont fixes et documentés.

docs/technique/deploiement-wiki.md :
- schéma mis à jour (SVG → build-assets.py → PNG → mkdocs build)
- ajout de l'étape 3 "Générer le logo" dans la procédure manuelle
- script deploy-wiki.sh inclut python3 scripts/build-assets.py
- tableau résumé mis à jour
- prérequis : ajout pillow et chromium

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Cédrix 2026-05-03 09:15:44 +02:00
parent 096edc378e
commit 14cb68c4c5
3 changed files with 79 additions and 34 deletions

View file

@ -15,13 +15,19 @@ Cette page décrit comment mettre en ligne une nouvelle version du wiki après a
## Vue d'ensemble
```
docs/assets/alpinux-logo.svg (source, dans git)
│ build-assets.py (à faire si le SVG a changé)
docs/assets/alpinux-logo.png (généré, hors git) + /tmp/ → static.alpinux.org
Gitea (origin/main)
│ git pull (sur le serveur)
Dépôt local serveur
│ mkdocs build
│ mkdocs build --strict
/var/www/clients/client1/web2/web/wiki-static/
@ -30,15 +36,26 @@ Dépôt local serveur
https://wiki.alpinux.org
```
!!! info "Images et logo"
Les fichiers PNG ne sont **pas stockés dans git**. Le logo (`docs/assets/alpinux-logo.png`)
est généré par `build-assets.py` avant le build MkDocs. Les autres images des articles
sont hébergées sur **static.alpinux.org**.
---
## Prérequis côté serveur
- Python 3 et pip installés
- MkDocs et le thème Material installés :
- MkDocs, le thème Material et Pillow installés :
```bash
pip install mkdocs-material
pip install mkdocs-material pillow
```
- Chromium installé (pour `build-assets.py`) :
```bash
sudo apt install chromium
```
- Un clone du dépôt présent sur le serveur (à faire une seule fois) :
@ -73,7 +90,24 @@ git pull
Vérifiez que la commande affiche bien les fichiers modifiés. Si elle affiche `Already up to date`, le serveur est déjà à jour.
### 3. Lancer le build MkDocs
### 3. Générer le logo (si le SVG a changé)
Le logo PNG n'est pas dans git — il est généré depuis le SVG source :
```bash
python3 scripts/build-assets.py
```
Cette commande produit :
- `docs/assets/alpinux-logo.png` — logo 200×200 inclus dans le wiki
- `/tmp/alpinux-static-assets/` — logo 512px + favicons à uploader sur `static.alpinux.org/logo/`
!!! tip
Si seul le contenu Markdown a changé (aucune modification du SVG), cette étape peut être ignorée.
Le `docs/assets/alpinux-logo.png` du précédent build est toujours présent sur le serveur.
### 4. Lancer le build MkDocs
```bash
mkdocs build --strict
@ -91,7 +125,7 @@ INFO - Documentation built in X.XX seconds
Le dossier `site_dir` est maintenant mis à jour. Apache sert immédiatement les nouveaux fichiers — **pas besoin de redémarrer Apache**.
### 4. Vérifier en ligne
### 5. Vérifier en ligne
Ouvrez [https://wiki.alpinux.org](https://wiki.alpinux.org) et vérifiez que la modification apparaît bien.
@ -111,6 +145,9 @@ echo "==> Récupération des modifications..."
cd "$WIKI_DIR"
git pull
echo "==> Génération du logo..."
python3 scripts/build-assets.py
echo "==> Build MkDocs..."
mkdocs build --strict
@ -205,6 +242,7 @@ Ouvrez [http://localhost:8000](http://localhost:8000) — MkDocs recharge automa
| Action | Commande |
|---|---|
| Mettre à jour le dépôt serveur | `git pull` |
| Générer le logo PNG (si SVG modifié) | `python3 scripts/build-assets.py` |
| Construire et déployer | `mkdocs build --strict` |
| Tester en local | `mkdocs serve` |
| Déployer via script | `/home/alpinux/deploy-wiki.sh` |
| Déployer via script (tout en un) | `/home/alpinux/deploy-wiki.sh` |

View file

@ -1,3 +1,3 @@
<img src="https://static.alpinux.org/logo/alpinux-logo.png"
<img src="{{ base_url }}/assets/alpinux-logo.png"
alt="Alpinux"
class="md-logo__image">

View file

@ -4,12 +4,13 @@ Génère les assets binaires (logo PNG + favicons) depuis la source SVG.
Dépendances : Pillow, chromium
Usage :
python3 scripts/build-assets.py [--out /chemin/de/sortie]
python3 scripts/build-assets.py
Les fichiers générés sont ensuite uploadés sur static.alpinux.org/logo/
Sorties :
docs/assets/alpinux-logo.png logo 200×200 inclus dans le wiki (MkDocs)
/tmp/alpinux-static-assets/ favicons + logo 512px à uploader sur static.alpinux.org/logo/
"""
import argparse
import subprocess
import tempfile
import os
@ -19,6 +20,8 @@ from PIL import Image, ImageDraw, ImageFont
REPO = Path(__file__).resolve().parent.parent
SVG = REPO / "docs/assets/alpinux-logo.svg"
DOCS_OUT = REPO / "docs/assets"
CDN_OUT = Path("/tmp/alpinux-static-assets")
FONT_R = "/usr/share/fonts/truetype/msttcorefonts/arial.ttf"
FONT_B = "/usr/share/fonts/truetype/msttcorefonts/arialbd.ttf"
COLOR = (15, 78, 143) # #0f4e8f
@ -74,21 +77,22 @@ def add_text(canvas: Image.Image) -> Image.Image:
return canvas
def build_logo(out_dir: Path):
"""Build 200×200 logo PNG."""
def build_logo_wiki(docs_out: Path):
"""Build 200×200 logo PNG → docs/assets/ (servi par MkDocs, non commité)."""
shapes = render_shapes(SVG, 200, 164)
canvas = Image.new("RGBA", (200, 200), (255, 255, 255, 255))
canvas.paste(shapes, (0, 0))
canvas = add_text(canvas)
path = out_dir / "alpinux-logo.png"
path = docs_out / "alpinux-logo.png"
canvas.convert("RGB").save(path)
print(f" {path} (200×200)")
print(f" {path} (200×200) → wiki MkDocs")
# 512px high-res version
def build_logo_cdn(cdn_out: Path):
"""Build 512×512 logo PNG → CDN (static.alpinux.org/logo/)."""
shapes512 = render_shapes(SVG, 512, 421)
canvas512 = Image.new("RGBA", (512, 512), (255, 255, 255, 255))
canvas512.paste(shapes512, (0, 0))
# Scale text proportionally
draw = ImageDraw.Draw(canvas512)
size = 77
f_reg = ImageFont.truetype(FONT_R, size)
@ -103,13 +107,13 @@ def build_logo(out_dir: Path):
bb = f.getbbox(char)
draw.text((x - bb[0], y - bb[1]), char, font=f, fill=COLOR)
x += w
path512 = out_dir / "alpinux-logo-512.png"
path512 = cdn_out / "alpinux-logo-512.png"
canvas512.convert("RGB").save(path512)
print(f" {path512} (512×512)")
print(f" {path512} (512×512) → static.alpinux.org/logo/")
def build_favicons(out_dir: Path):
"""Build favicon PNG set + .ico from the icon portion of the SVG."""
def build_favicons(cdn_out: Path):
"""Build favicon PNG set + .ico → CDN (static.alpinux.org/logo/)."""
icon_src = render_shapes(SVG, 200, 164).crop((0, 0, 164, 164))
sizes = {
@ -124,31 +128,34 @@ def build_favicons(out_dir: Path):
img = icon_src.resize((sz, sz), Image.LANCZOS)
bg = Image.new("RGBA", (sz, sz), (255, 255, 255, 255))
bg.paste(img, (0, 0))
p = out_dir / name
p = cdn_out / name
bg.save(p)
imgs[sz] = bg
print(f" {p} ({sz}×{sz})")
print(f" {p} ({sz}×{sz}) → static.alpinux.org/logo/")
ico = out_dir / "favicon.ico"
ico = cdn_out / "favicon.ico"
imgs[16].save(ico, format="ICO", sizes=[(16,16),(32,32),(48,48)],
append_images=[imgs[32], imgs[48]])
print(f" {ico} (multi-size: 16+32+48)")
print(f" {ico} (multi-size: 16+32+48) → static.alpinux.org/logo/")
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--out", default="/tmp/alpinux-static-assets",
help="Répertoire de sortie (défaut: /tmp/alpinux-static-assets)")
args = parser.parse_args()
out_dir = Path(args.out)
out_dir.mkdir(parents=True, exist_ok=True)
DOCS_OUT.mkdir(parents=True, exist_ok=True)
CDN_OUT.mkdir(parents=True, exist_ok=True)
print("Génération des assets Alpinux...")
build_logo(out_dir)
build_favicons(out_dir)
print(f"\nFichiers dans : {out_dir}")
print()
print("── Logo wiki (docs/assets/) ──")
build_logo_wiki(DOCS_OUT)
print()
print("── CDN static.alpinux.org/logo/ ──")
build_logo_cdn(CDN_OUT)
build_favicons(CDN_OUT)
print()
print(f"Fichiers CDN dans : {CDN_OUT}")
print("À uploader sur : static.alpinux.org/logo/")
print()
print("Ensuite : mkdocs build")
if __name__ == "__main__":