Workflow de déploiement de mon blog avec Forgejo Actions
Ce blog est un blog statique, construit à partir de Jekyll. Il peut donc être construit à l’avance, afin de générer des fichiers entièrement statiques, qui seront déployés sur un serveur web qui les servira sur internet. C’est donc une excellente occasion pour mettre en place une CI avec Forgejo Actions, afin d’automatiser le build de ce blog.
Je ne fais ici que de la CI, pas de CD (je ne déploie pas automatiquement sur mon serveur web), car j’utilise NixOS pour mon serveur web, et je préfère donc définir manuellement le commit exact du blog que je déploie.
Je travaille avec deux dépots de code : blog, qui contient les sources du blog, et blog-static, qui contient le résultat du build du blog (et qui est concrètement ce qui est servi par mon serveur web). La CI a donc pour but de récupérer les sources, compiler le blog, et push le résultat sur le deuxième dépot.
# .forgejo/workflows/main.yml
# We execute this workflow on each commit pushed
on:
push:
jobs:
build:
runs-on: docker
container:
# the Checkout Action needs node to run
image: node:bookworm
steps:
# First, clone the source repo
- name: Clone repo
uses: actions/checkout@v4
# Then, clone the static repo on the build output path
- name: Clone static repo
uses: actions/checkout@v4
with:
repository: chapeau/blog-static
path: _site
# This repo needs a token because we will push on it later
token: ${{ secrets.GH_PAT }}
ref: main
- name: Setup
env:
MAIL: ${{ secrets.MAIL }}
shell: bash
run: |
# Install some dependencies for the blog
apt update
apt install -y bundler git apt-utils
# This configuration is mandatory to make commits
git config --global user.email "$MAIL"
git config --global user.name "CI Builder"
# Install ruby dependencies
bundle install
# Build the blog
bundle exec jekyll build
# Commit and push
cd _site
git add --all
git commit -m "Build"
git push -u origin main
Pour utiliser ce workflow, deux choses sont nécessaires : un runner Forgejo bien sur, et quelques secrets.
J’utilise un simple runner docker, installé en suivant la documentation officielle.
Les secrets se définissent dans l’interface web de Forgejo, pour le projet, dans Paramètres -> Actions -> Secrets
. Deux sont nécessaires pour ce workflow : MAIL
, qui contient simplement l’adresse mail utilisée pour les commits, et GH_PAT
, qui contient un token d’authentification associé à votre compte, avec des droits d’accès en écriture sur les dépots. Pour le générer, allez dans Configuration -> Applications
.