Il s'agit d'un site statique dont les pages sont générées à chaque modification. Le principe est le suivant : lorsqu'un fichier est modifié sur le dépôt (git.sr.ht), le site est reconstruit dans une machine virtuelle (builds.sr.ht) et déployé vers l'espace d'hébergement (pages.sr.ht).
Génération du site : nckm.site
Les étapes de construction, exécutées dans un environnement Alpine Linux et détaillées dans les fichiers manifests .build.yml
et .build_feed.yml
, sont les suivantes :
- récupération du code source (
git clone
) - installation des dépendances (
pip install
) - conversion des fichiers Markdown en pages HTML (
python3 -m nckm.site
)
utilisation des modules markdown et jinja2 - copie des fichiers de flux depuis le dépôt nckm-feed
- création d'une archive (
site.tar.gz
)
contenu : pages HTML, images, styles, fonts - déploiement de l'archive (
hut pages publish
)
Génération des toots : nckm.toot
L'étape supplémentaire suivante est lancée si nécessaire en se basant sur le fichier twtxt.txt
contenant la liste des toots au format twtxt :
- publication d'un toot sur Mastodon (
python3 -m nckm.toot
)
utilisation du module mastodon
Génération du flux d'actualités : nckm.feed
Les étapes supplémentaires suivantes sont lancées à la demande :
- lecture des flux de syndication et génération des fichiers agrégés (
python3 -m nckm.feed
)
utilisation des modules feedparser et jinja2 - sauvegarde des fichiers sur le dépôt nckm-feed (
git push
)feed.txt
: liste des fluxfeed.json
: date de mise à jourfeed.md
: agrégation au format Markdownfeed.html
: agrégation au format HTMLfeed.xml
: agrégation au format Atomfeed.opml
: liste des flux au format OPML
Diagramme
Diagramme de l'architecture :
Code source du diagramme :
graph TD
A(fa:fa-globe git.sr.ht) -->|clone| B(fa:fa-globe builds.sr.ht)
B -->|install| C{ }
C --> D1[fa:fa-file *.md]
C --> D2[fa:fa-file twtxt.txt]
C --> D3[fa:fa-file feed.txt]
D1 -->|build nckm.site| D1A[fa:fa-file html]
D2 -->|build nckm.toot| D2A(fa:fa-link mamot.fr)
D3 -->|build nckm.feed| D3A[fa:fa-file feed.json<br>md html xml opml]
D3A -->|push nckm-feed| D3B(fa:fa-globe git.sr.ht)
D3A -->|package| D1B
D1A -->|package| D1B[fa:fa-archive site.tar.gz]
D1B -->|deploy| D1C(fa:fa-globe pages.sr.ht<br>nora.nckm.eu)
click G "https://mamot.fr/"