Mettre automatiquement son site statique à jour par FTP avec les Github actions

J’ai récemment commencé à passer certains de mes sites de WordPress en statique

Il me manquait un moyen de les mettre à jour à chaque modification.

Pour rappel, avec un site statique, chaque nouveau billet est une modification. En plus du nouvel article, tout un ensemble de pages doit être modifié (liste par catégorie, auteur, index…). Tout ce travail est fait automatiquement par Hugo mais il génère « juste » les pages en local.

J’aurais pu commencer par écrire un petit script que j’aurais exécuté en local mais hébergeant tout mon site sous Github, une autre solution s’offrait à moi.

En effet depuis peu (A l’heure où j’écris ces ligne, la fonctionnalité est toujours en bêta), Github propose les Github Actions.

La promesse est simple:

Automatisez vos workflows de l’idée à la mise en production.

Avec « automatiser » et « workflow » dans la même phrase, il ne m’en faut pas plus pour avoir envie de jouer avec!

La mission du jour sera donc d’utiliser une action qui copiera en FTP les différents fichiers du site à chaque mise à jour.
La mise à jour d’un changement vers Github se fait via ce que l’on appelle un push. Chaque push sera donc le déclencheur de la mise à jour.

Créer ou récupérer un compte FTP

Vous aurez besoin de récupérer le compte FTP vous permettant d’accéder à votre site. Cette information est fournie par votre hébergeur. Il est également possible de créer un compte dédié pour cette tâche.

Vous devrez donc avoir les informations suivantes:

  • Login FTP
  • Mot de passe FTP
  • Adresse du serveur FTP
  • Et parfois le port à utiliser (généralement 21)

Note: On peut aussi le faire en SFTP mais comme il ya plus d’hébergeurs qui proposent du FTP, je me suis limité à ce cas dans cet exemple. Si vous avez la possibilité de faire du SFTP, privilégiez le.

Création de l’action

  • Se connecter sur Github
  • Sélectionner le dépôt que vous vous souhaitez
  • Cliquer sur l’onglet Actions
  • Puis sur Set up a workflow yourself
Créez une nouvelle github actions
Créez une nouvelle github actions

Collez alors le code suivant dans main.yml

on: push
name: Publish Website
jobs:
  fTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: FTP-Deploy-Action
      uses: SamKirkland/FTP-Deploy-Action@master
      env:
        FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }}
        FTP_SERVER: ${{ secrets.FTP_SERVER }}
        FTP_USERNAME: ${{ secrets.FTP_USERNAME }}        

Sauvegardez, l’action est alors créée.

Renseignez les « secrets »

L’action est créée mais est incapable de fonctionner. En effet, à ce stade, nous ne lui avons pas indiqué où copier les fichiers et ni avec quelle identité le faire.

Github dispose d’une section appelée secrets. Elle est accessible via l’onglet Settings.

Renseigner les secrets
Renseigner les secrets

Nous allons y ajouter les 3 secrets suivants:

  • FTP_SERVER: Adresse FTP du serveur
  • FTP_USERNAME: Nom d’utilisateur du serveur
  • FTP_PASSWORD: Mot de passe

Testons le tout

Faites une modification, validez-là avec un commit et faites un push. Le processus n’est pas immédiat et peut prendre un peu de temps suivant le nombre de fichiers à copier.

Si tout s’est bien passé, vous devriez-voir une ligne apparaitre dans l’onglet Actions signifiant que le déploiement s’est déroulé avec succès.

Houra, l'action s'est bien déroulée
Houra, l’action s’est bien déroulée

Laisser un commentaire