En commençant ce nouveau blog, je dois vous parler de Cecil : un générateur de site statique écrit en PHP.
La documentation étant très fournie, je ne vais pas vous montrer comment l'installer, je vais par contre vous présenter comment je déploie ce site sur Github Actions.
Cecil est un générateur de site statique écrit en PHP. C'est lui qui fait tourner ce site et c'est également lui qui motorise ma page de liens.
Arnaud Ligny est son papa et je crois pouvoir dire qu'il travaille régulièrement dessus. D'ailleurs son support sur Github est très réactif.
Si vous souhaitez en savoir plus sur Cecil, je ne peux que vous renvoyer vers le site officiel : https://cecil.app
Attends Fred, tu es en train de nous dire qu'à chaque article que tu publies tu fais un déploiement, une mise en prod ?
Oui, alors effectivement dis comme cela, cela pourrait faire peur.
Mais je vous rassure, c'est un déploiement automatique via les Github Actions.
Alors si jamais les mots "Déploiement automatique, Github actions" sont du charabia pour vous, je ne peux que vous conseiller d'aller voir la formation CI/CD de l'ami Yoan Dev. En suivant ce lien vous aurez droit à 15% de réduction. (ce n'est pas un lien affilié 😉)
Alors petite mise au point, mon hébergeur (o2switch) ne me permet pas de faire du SSH via Github Actions donc cela m'oblige à passer par du FTP à la place.
Mais je peux vous assurer que c'est pleinement fonctionnel.
Mais si vous préférez faire différement, il vous suffira d'adapter le script dans sa partie deploiement.
Bien évidemment avant de vous lancer il y a quelques prérequis.
Configurer vos secrets pour votre projet. Dans mon cas, il s'agit de :
Si cela, n'est pas déjà fait, il faut créer un répertoire .github/workflows
comme dans l'illustration ci-dessous :
Ensuite copiez/collez/adaptez le script ci-dessous dans un fichier que vous pouvez appeler par exemple main.yml
.
name: ftpdeployment
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
extensions: mbstring, gd, imagick, intl, gettext
- name: Build with Cecil
uses: Cecilapp/Cecil-Action@v3
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: website
path: _site
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: website
path: _site
- name: FTP Deploy
uses: SamKirkland/FTP-Deploy-Action@4.3.3
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: ./_site/
Quelques explications rapides :
_site
contenant le site statique généré_site
en le nommant website
afin qu'il puisse être utiliser lors du job suivant_site
via FTP en utilisant les secrets précédemment enregistrés sur githubSi tout se passe bien lors du premier déploiement, le script FTP Deploy va créer tous les répertoires et fichiers nécessaires.
Lors des prochains push
, il n'uploadera que les nouveaux fichiers et les fichiers modifiés.
Avec ce setup très simple, il me suffit d'écrire mes fichiers markdown, de les commiter et pusher pour qu'ils apparraissent en ligne dans la minute qui suit. Idem évidemment pour mes fichiers de templates.
Je rajouterai l'excellente remarque d'Arnaud :
Et précisons que le déploiement est atomique : si l'étape de (re)build du site est en échec pour une raison ou pour une autre l'archive n'est pas créée, donc pas envoyée par FTP, donc pas de risque de "casser" le site en prod 😊
C'est vraiment très plaisant à utiliser et puis en terme de performance et de sécurité, il n'y pas photo.
Et puis, le dernier avantage, et non des moindres, c'est qu'on peut mettre en prod le vendredi et ça, ça n'a pas de prix !! ;-)