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.