Comment ce site utilise Forgejo
Pour plusieurs raisons, je suis en train de quitter GitHub depuis quelques mois. Je n’irai pas trop dans le détail, surtout parce que ce billet de blogue décrit pas mal mon parcours, et je crois, celui de plusieurs autres participants au mouvement du logiciel libre.
Disons que la valeur ajoutée par GitHub à travers les communautés de pratique et les interactions avec d’autres humains n’est plus au rendez-vous, surtout que ces interactions authentiques se font de plus en plus rares. À chaque époque sa peste, j’imagine, SourceForge ayant été rendu inutile et nuisible par la publicité malveillante et intrusive, et maintenant GitHub qui s’est auto-infligé un essaim d’«agents» automatisés.

Brehms Thierleben, Schwarm der Wanderheuschrecke (Acrididae). Domaine public, https://commons.wikimedia.org/w/index.php?curid=3527863
Comme premier pas vers un avenir plus libre et durable, je me suis donné la tâche de déposer la configuration Hugo et les codes sources de mes sites web professionnel et politique dans une instance auto-hébergée de Forgejo (le saviez-vous, le nom de ce logiciel est en espéranto … comment savoir qu’on a affaire à un truc de vrai geeks!)
Cela m’a donné l’opportunité d’enfin implémenter une mise à jour automatique du site déclenchée par les mises à jour du dépôt Git, oui, du CI/CD toi chose. En plus, c’est pas mal plus simple et sécuritaire avec Forgejo qu’avec GitLab - on peut tout faire avec Podman en mode «rootless» par défaut (rien à installer sauf Podman lui-même!)
J’ai même pris l’initiative de réécrire la documentation de Forgejo à ce sujet, donc allez-y jeter un coup d’œil…
Le CI est pas mal simple. Le fait d’être auto-hébergé permet
d’économiser beaucoup de bande passante, car je peux simplement créer
ma propre image Podman localement sur le server avec ce petit
Containerfile:
FROM docker.io/rclone/rclone@sha256:644d46272797bb681f9fa25506fbe0cb72c963906a0994f2852a70cf6ec70fee as rclone
FROM ghcr.io/gohugoio/hugo@sha256:af0d6b63ec74e18f6d0d87c19c08412f5653a89145787992b4aafc8dd29aa7cd
COPY --from=rclone /usr/local/bin/rclone /usr/local/bin/rclone
Puis le rendre accessible au runner dans sa configuration:
labels:
- custom-website:docker://localhost/custom-website
Par la suite, les informations d’utilisateur et mot de passe sont enregistrées dans des secrets de Forgejo Actions, et je n’ai qu’à les définir dans l’environnement pour les donner à rclone, que j’utilise pour mettre à jour le site avec WebDAV:
jobs:
build:
runs-on: custom-website
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Build
run: hugo
- name: Deploy
env:
RCLONE_CONFIG_WWW_TYPE: webdav
RCLONE_CONFIG_WWW_URL: https://webdav.fastmail.com
RCLONE_CONFIG_WWW_USER: ${{ secrets.WEBDAV_USER }}
RCLONE_CONFIG_WWW_PASS: ${{ secrets.WEBDAV_PASSWORD }}
run: rclone sync public www:dhd.ecolingui.ca/files/website
Comme disait l’autre, c’est pas trop compliqué que ça!