GitHub : Déployer un site web vers EX2#

EX2 permet de déployer un site web via git ou FTP. Voyons comment automatiser le déploiement via FTP.

Prérequis#

Nous utiliserons lftp pour l’envoi des fichiers :

sudo apt install lftp

Se connecter au cPanel de l’instance sur EX2 pour ajouter un compte FTP. La seule caractéristique à vérifier est que le répertoire sélectionné soit bien le dossier final contenant les fichiers, par exemple public_html/luma.

Manuel#

Les étapes suivantes peuvent servir à déployer depuis n’importe quelle machine et ne sont pas liées à GitHub.

Constantes#

D’abord, nous aurons besoin de définir ces constantes :

FTP_URL='HOST'
FTP_USER='USERNAME'
FTP_PASSWORD='PASSWORD'

Répliquer#

Voici la dernière étape qui permet de faire un miroir d’un dossier local vers un dossier distant (remplacer FOLDER par le dossier local) :

lftp \
    -e 'set ssl:verify-certificate false ; mirror --delete --transfer-all --reverse --verbose=1 ./FOLDER . ; quit' \
    -u "${FTP_USER},${FTP_PASSWORD}" \
    "ftp://${FTP_URL}"

Automatisation#

Maintenant que les étapes sont connues, nous utiliserons un workflow GitHub pour déployer le site à chaque changement poussé sur la branche principale du dépôt.

Secrets#

Dans les paramètres du dépôt GitHub, créer des secrets identiques aux constantes déclarées plus haut.

Workflow#

Voici le script YAML complet :

.github/workflows/deploy.yml#
name: Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install dependencies
        run: sudo apt install -y lftp

      - name: Mirror
        run: |
          lftp \
            -e 'set ssl:verify-certificate false ; mirror --delete --transfer-all --reverse --verbose=1 ./FOLDER . ; quit' \
            -u '${{ secrets.FTP_USER }},${{ secrets.FTP_PASSWORD }}' \
            'ftp://${{ secrets.FTP_URL }}'

Exemple Complet#

Un exemple spécifique à Python, utilisé par ce site même, peut être visible par ici : BoboTiG/luma deploy.yml.

📜 Historique#

2025-01-04

Premier jet.