No description
  • HTML 35.4%
  • CSS 27.6%
  • JavaScript 22.4%
  • Just 10.4%
  • Dockerfile 2.5%
  • Other 1.7%
Find a file
thermo 3299cab576
All checks were successful
Build & deploy blog / deploy (push) Successful in 6s
Build & deploy blog / build (push) Successful in 18s
Merge pull request 'add copyable anchor links on headings' (#8) from feat/anchor-links into main
Reviewed-on: #8
2026-10-28 09:53:52 +00:00
.forgejo/workflows create blog preview on PR 2026-10-17 16:48:42 +00:00
content add copyable anchor links on headings 2026-10-28 09:46:04 +00:00
static add copyable anchor links on headings 2026-10-28 09:46:04 +00:00
templates add copyable anchor links on headings 2026-10-28 09:46:04 +00:00
.dockerignore Blog statique (Zola) — thème terminal + déploiement GitOps 2026-07-06 16:24:39 +02:00
.envrc feat/tags-source-nix (#2) 2026-07-15 18:03:01 +00:00
.gitignore feat/tags-source-nix (#2) 2026-07-15 18:03:01 +00:00
config.toml add copyable anchor links on headings 2026-10-28 09:46:04 +00:00
Dockerfile create blog preview on PR 2026-10-17 16:48:42 +00:00
flake.lock upgrade zola to 0.22.1 2026-10-17 13:10:12 +00:00
flake.nix upgrade zola to 0.22.1 2026-10-17 13:10:12 +00:00
justfile add serve-lan recipe 2026-10-17 13:10:12 +00:00
nginx.conf Blog statique (Zola) — thème terminal + déploiement GitOps 2026-07-06 16:24:39 +02:00
README.md add copyable anchor links on headings 2026-10-28 09:46:04 +00:00

blog

Blog perso/tech statique, généré par Zola, servi sur blog.yagni.fr. Thème « terminal » : monospace (JetBrains Mono), sombre par défaut, avec une barre de commande interactive dans l'en-tête.

Écrire un article

Un article = un fichier Markdown dans content/blog/, avec un frontmatter TOML :

+++
title = "Mon titre"
date = 2026-07-06

[taxonomies]
tags = ["web", "outils"]
+++

Le corps de l'article en Markdown…

Le plus simple : le justfile génère le fichier (slug + date du jour pré-remplis) :

just new "Mon titre" web,outils   # → content/blog/mon-titre.md
just scratch "Note rapide"        # → content/scratch/… (titre & tags optionnels)
just scratch                      # scratch sans titre, slug horodaté
  • Le temps de lecture est calculé automatiquement au build (pas à saisir).
  • Les articles sont triés par date décroissante sur l'accueil.
  • La page à-propos est content/about.md.
  • Chaque titre reçoit une ancre (## Mon chapitre → #mon-chapitre) et un lien 🔗, visible au survol, qui copie l'URL du chapitre. Pour une ancre qui survit à une reformulation du titre : ## Mon chapitre {#chapitre}. Lien interne vérifié au build : [voir](@/blog/mon-article.md#chapitre).

Articles bilingues (fr/en)

Le français (fr) est la langue par défaut : un article content/blog/mon-article.md reste mono-langue tel quel. Pour lui ajouter une version anglaise, créer content/blog/mon-article.en.md (même nom de fichier, suffixe .en) — Zola relie les deux automatiquement et affiche un lien de bascule FR/EN dans le header. Rien à faire pour un article qui reste français (ou anglais) uniquement.

Développer en local

just serve     # zola serve — http://127.0.0.1:1111 avec live-reload
just serve-lan # idem, joignable depuis le réseau local — http://<ip>:1111 (ex. gond)
just build     # zola build — génère ./public
just           # liste les commandes disponibles

Sans rien installer : nix develop ouvre un shell avec just + zola (voir flake.nix), ou automatiquement via direnv (.envrc).

Sinon just (le lanceur de commandes, casey/just) doit être installé : cargo install just, brew install just ou apt install just.

Barre de commande (en-tête)

JavaScript vanilla (static/js/terminal.js), aucune dépendance. Commandes : ls / home (accueil), cat about.md / about, open <n|mot> (ouvrir un article), cd .. (retour), help, clear. Le toggle de thème est persisté dans localStorage.

Déploiement

Un push sur main déclenche .forgejo/workflows/deploy.yml : le site est bâti en image nginx (Dockerfile) avec kaniko, poussée sur le registry Forgejo (forgejo.yagni.fr/yagni/blog:<sha>), puis un déploiement GitOps est déclenché hors de ce dépôt.

Secrets CI requis : DEPLOY_USER / DEPLOY_TOKEN (voir l'en-tête du workflow).

Prévisualisation des pull requests

Chaque PR a sa preview sur https://pr-<n>.preview.yagni.fr, brouillons inclus — le même build que la prod, avec BASE_URL et PREVIEW=1 passés au Dockerfile (brouillons, et <meta name="robots" content="noindex"> via templates/base.html). .forgejo/workflows/preview.yml construit l'image forgejo.yagni.fr/yagni/blog:pr-<n>-<sha8> et poste le lien une fois dans la PR ; un ApplicationSet Argo CD dans yagni-infra la déploie, la met à jour quelques minutes après chaque push et la supprime à la fermeture de la PR.

La preview est publique (mais noindex), comme ce dépôt et le registry : un brouillon poussé sur une branche est déjà lisible par tous.