diff --git a/docs/technique/deploiement-wiki.md b/docs/technique/deploiement-wiki.md index 0ca9c28..683bba0 100644 --- a/docs/technique/deploiement-wiki.md +++ b/docs/technique/deploiement-wiki.md @@ -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` | diff --git a/overrides/partials/logo.html b/overrides/partials/logo.html index 98a1aa8..318fb80 100644 --- a/overrides/partials/logo.html +++ b/overrides/partials/logo.html @@ -1,3 +1,3 @@ -Alpinux diff --git a/scripts/build-assets.py b/scripts/build-assets.py index f34e973..a3b82a0 100644 --- a/scripts/build-assets.py +++ b/scripts/build-assets.py @@ -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__":