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:
parent
096edc378e
commit
14cb68c4c5
3 changed files with 79 additions and 34 deletions
|
|
@ -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` |
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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__":
|
||||
|
|
|
|||
Loading…
Reference in a new issue