Architecture du site

nora.nckm.eu

Illustration

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 :

  1. récupération du code source (git clone)
  2. installation des dépendances (pip install)
  3. conversion des fichiers Markdown en pages HTML (python3 -m nckm.site)
    utilisation des modules markdown et jinja2
  4. copie des fichiers de flux depuis le dépôt nckm-feed
  5. création d'une archive (site.tar.gz)
    contenu : pages HTML, images, styles, fonts
  6. 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 :

  1. 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 :

  1. lecture des flux de syndication et génération des fichiers agrégés (python3 -m nckm.feed)
    utilisation des modules feedparser et jinja2
  2. sauvegarde des fichiers sur le dépôt nckm-feed (git push)
    • feed.txt : liste des flux
    • feed.json : date de mise à jour
    • feed.md : agrégation au format Markdown
    • feed.html : agrégation au format HTML
    • feed.xml : agrégation au format Atom
    • feed.opml : liste des flux au format OPML

Diagramme

Diagramme de l'architecture :

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/"

Un commentaire sur un de mes articles ? Commencez une discussion sur ma liste de diffusion en envoyant un email à ~nora/public-inbox@lists.sr.ht [règles]