Cloud

Déployer automatiquement son site avec GitHub Actions et SFTP

Déployer automatiquement son site avec GitHub Actions et SFTP

Il y a quelques temps j’ai voulu actualiser le site web qui permettait de mettre en avant mes compétences de formateur certifié Microsoft. Comme c’est plus que jamais la mode, je me suis aidé de l’IA afin de monter en compétences sur un nouveau domaine : développement en React et publication au sein de mon hébergeur habituel Infomaniak.

Bien que le site ne soit composé que de 3 pages, la création et la mise à jour étaient fastidieuse car il fallait compiler le code, l’exporter depuis mon container local sur mon poste de travail puis finalement l’exporter chez Infomaniak. J’ai donc cherché à optimiser tout ça et j’ai utilisé GitHub Actions afin d’automatiser cette publication.

Prérequis et contexte

Aperçu de mon site de formateur Microsoft

Je dispose donc d’un site basique développé en React. L’ensemble du code est conservé sur un repository privé GitHub et je développe localement sur ma machine via un container fonctionnant sur un distribution Linux Alpine (je passe cette partie car ce n’est pas l’objectif de l’article).

Processus de mise à jour automatisé

Créer les secrets dans GitHub

Avant toute chose, vous devez récupérer les identifiants de connexion à votre espace SFTP. Sur Infomaniak, vous disposez d’une section dédiée appelée FTP / SSH dans votre portail d’administration. C’est là que vous retrouverez le nom du serveur, l’identifiant et le mot de passe pour vous connecter en SFTP (port 22/TCP).

Récupération de vos identifiants SFTP dans Infomaniak

Pour que la connexion puisse être totalement automatisée, nous allons devoir stocker ces informations dans des secrets sur notre repository GitHub.

Connectez-vous sur votre repo GitHub et allez dans la section Settings > Secrets and variables puis dans l’onglet Secrets. Définissez ensuite 3 nouveaux secrets pour l’adresse/hostname de connexion à votre serveur, l’identifiant et enfin le mot de passe de connexion.

Créer les secrets dans GitHub

Création d’un fichier de Workflow

Avec Visual Studio Code, créez désormais un nouveau fichier Workflow. N’oubliez pas respecter l’emplacement et le format du fichier qui est particulier à GitHub.

J’ai créé mon fichier .github/workflows/deploy.yml qui décrit les étapes : récupérer le code, installer les dépendances, builder le projet React, puis envoyer le dossier build sur le serveur.

Voici le code que j’ai utilisé :

name: Build and Deploy

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '24'

      - name: Install dependencies
        run: npm install
        working-directory: ./frontend

      - name: Build
        run: npm run build
        working-directory: ./frontend

      - name: Deploy via SFTP
        uses: wlixcc/SFTP-Deploy-Action@v1.2.4
        with:
          server: ${{ secrets.SFTP_HOST }}
          username: ${{ secrets.SFTP_USERNAME }}
          password: ${{ secrets.SFTP_PASSWORD }}
          local_path: ./frontend/build/*
          remote_path: /srv/customer/tg.fr/

Pensez bien à adapter les 2 dernières lignes en fonction de votre cas d’usage (votre site est peut être stocké dans un sous-dossier selon la configuration proposée par votre hébergeur) :

  • local_path
  • remote_path

Et globalement, c’est déjà terminé.

Tester l’exécution

Il ne vous reste plus qu’à commit + push votre code depuis VS Code et vous allez voir votre workflow GitHub Actions se lancer et mettre à jour automatiquement votre site web.

L’ensemble du process ne prend que 1min et 15 secondes !

Déclenchement automatique et/ou manuel

Dans mon cas, j’ai choisi un déclenchement automatique au moment du commit + push, mais vous pouvez également mettre en place un déclenchement manuel (ou même les 2 possibilités : auto + manuel) en modifiant la section suivante ci-dessous. ⬇️

  • Déploiement automatique :
on:
  push:
    branches:
      - main

Déploiement auto avec option manuelle :

on:
  workflow_dispatch:
  push:
    branches:
      - main

Bravo, votre site se met désormais à jour tout seul ! 😁

Share
Published by
thibault

Recent Posts

Proton Sheets : une nouvelle alternative à Excel Online et Google Sheets

Proton Sheets : Une Nouvelle Alternative à Excel Online et Google Sheets Introduction Proton Sheets,…

5 jours ago

Azure Bastion : connexion RDP avec Entra ID depuis le portail Azure (Preview)

Azure Bastion : authentification Entra ID en preview pour les connexions RDP via le portail…

6 jours ago

Plex met fin à la gratuité : Ce que cela signifie pour les utilisateurs

Plex met fin à la gratuité : Ce que cela signifie pour les utilisateurs Introduction…

6 jours ago

Automatiser la création de comptes Microsoft 365 avec GitHub Actions

Automatiser la création de comptes Microsoft 365 avec GitHub Actions Introduction GitHub Actions permet d'automatiser…

1 semaine ago

Telegram Cocoon : une nouvelle ère pour la sécurité des communications

Telegram Cocoon : une nouvelle ère pour la sécurité des communications Introduction Telegram Cocoon, une…

1 semaine ago

Netflix s’offre Warner Bros pour 82,7 milliards de dollars : Un tournant majeur pour le streaming

Netflix s'offre Warner Bros pour 82,7 milliards de dollars : Un tournant majeur pour le…

1 semaine ago