GitHub : Déployer un site web vers Gandi¶
Gandi permet de déployer un site web via git ou SFTP. Voyons comment automatiser le déploiement via SFTP. Nous utiliserons lftp pour l’envoi des fichiers : Les étapes suivantes peuvent servir à déployer depuis n’importe quelle machine et ne sont pas liées à GitHub. D’abord, nous aurons besoin de définir ces constantes : Indication Bien que nécessaire, cette étape est à ne faire qu’une seule fois par machine. Approuver la connexion au serveur pour éviter l’erreur « Fatal error: Host key verification failed » : Voici la dernière étape qui permet de faire un miroir d’un dossier local vers un dossier distant (remplacer 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. Dans les paramètres du dépôt GitHub, créer des secrets identiques aux constantes déclarées plus haut. Voici le script YAML complet : Un exemple spécifique à Python, utilisé par ce site même, peut être visible par ici : BoboTiG/luma deploy.yml. Premier jet.Prérequis¶
sudo apt install lftp
Manuel¶
Constantes¶
SFTP_URL='HOST'
SFTP_USER='USERNAME'
SFTP_PASSWORD='PASSWORD'
SFTP_PATH='/mnt/vhost/site/subfolder/'
⚠️ Approuver la Connexion¶
mkdir -p ~/.ssh \
&& ssh-keyscan -H "${SFTP_URL}" >> ~/.ssh/known_hosts
Répliquer¶
FOLDER
par le dossier local) :lftp \
-e "mirror --delete --transfer-all --reverse --verbose=1 ./FOLDER ${SFTP_PATH} ; quit" \
-u "${SFTP_USER},${SFTP_PASSWORD}" \
"sftp://${SFTP_URL}"
Automatisation¶
Secrets¶
Workflow¶
# yamllint disable rule:line-length
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: Setup SSH
run: |
mkdir -p ~/.ssh
ssh-keyscan -H ${{ secrets.SFTP_URL }} >> ~/.ssh/known_hosts
- name: Mirror
run: |
lftp \
-e 'mirror --delete --transfer-all --reverse --verbose=1 ./FOLDER ${{ secrets.SFTP_PATH }} ; quit' \
-u '${{ secrets.SFTP_USER }},${{ secrets.SFTP_PASSWORD }}' \
'sftp://${{ secrets.SFTP_URL }}'
Exemple Complet¶
📜 Historique¶