Déployer une application Laravel avec Deployer et GitHub Actions - Partie 2/2

Déployer une application Laravel avec Deployer et GitHub Actions - Partie 2/2

Tech web
Cloche d'abonnement aux notifications | |
  • Recevoir les notifications

Dans un précédent article, nous avons vu comment configurer l’outil de déploiement PHP Deployer. A présent, il s’agit de combiner Deployer avec GitHub Actions.

Configuration de Deployer avec GitHub Actions

La première étape consiste à configurer son dépôt sur GitHub. Si ce n’est pas le cas, vous pouvez facilement migrer vers GitHub, que vous soyez chez Bitbucket ou GitLab ou un hébergeur privé. La marche à suivre est expliquée lors de la création d’un nouveau repository chez GitHub.

migrer-vers-github

Avec votre dépôt chez GitHub, vous bénéficiez à présent de 2’000 minutes de temps GitHub Actions par mois. Ce temps est décompté pendant l’exécution d’une tâche GitHub Actions sur une des machines virtuelles de GitHub.

L’entier de la configuration peut tenir en un seul fichier YAML, créé dans le dossier .github/workflows de votre repository. Nommons ce fichier deploy.yml. Voici son contenu :

name: Deploiement # Nom de la tâche dans GitHub
on:
  workflow_dispatch # Evénement déclencheur de la tâche, en l’occurrence, il s’agit d’un déclenchement manuel
jobs:
  Deploiement:
    runs-on: ubuntu-latest # OS sur lequel va s’exécuter la tâche
    steps:
      - name: Check out repository code # récupération du dépôt GitHub dans la machine
        uses: actions/checkout@v2
        with:
          ref: ${{ github.ref_name }}
          token: ${{ secrets.GITHUB_TOKEN }}
          repository: 'monorganisation/mondepot.git'
      - run: sudo apt update # On met à jour les listings des paquets
      - run: sudo apt-get install rsync -y # On install rsync, nécessaire pour copier les assets vers le serveur web
      - name: Setup PHP # Configuration de PHP sur la machine virtuelle
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.0" # Je propose d’utiliser la version 8.0
      - name: Install PHP dependencies # Installation des paquets composer
        uses: "ramsey/composer-install@v1"
        with:
          dependency-versions: "locked" # Installation en utilisant le fichier composer.lock
      - name: Setup Node # Installation de NodeJS sur la machine virtuelle
        uses: actions/setup-node@v2
        with:
          node-version: '14' # Je propose d’utiliser la version 14
      - name: Install Yarn # Installation de Yarn, gestionnaire de paquets plus rapide que npm
        run: npm install -g yarn
      - name: Install JS dependencies # Installation des dépendances de notre projet Laravel
        run: yarn install
      - name: Install SSH key # Configuration de la clé SSH permettant à la machine virtuelle de se connecter au serveur web
        uses: shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SECRET_KEY }}
          name: id_rsa # optionnel
          known_hosts: ${{ secrets.KNOWN_HOSTS }}
          if_key_exists: fail
      - name: Deploiement # Exécution de Deployer. A partir de là, c’est le script créé dans la partie 1 de l’article qui prend le relais.
        run: cd ${{ github.workspace }} && php vendor/bin/dep deploy ftp.mondomaine.com

Vous avez peut-être remarqué l’utilisation de variables dans le script, comme ${{ secrets.SECRET_KEY }} ou ${{ secrets.KNOWN_HOSTS }}. Celles-ci sont définies via l’interface web de GitHub comme montré dans la capture d’écran ci-dessous :

configuration-des-secrets-github-actions

A noter que la variable SECRET_KEY contient la clé privée vous permettant de vous connecter à votre serveur web en SSH et que la variable KNOWN_HOSTS contient le contenu de votre fichier ~/.ssh/known_hosts

A présent, vous pouvez lancer votre déploiement en un clic sur l’interface de GitHub. Il suffit de cliquer sur le bouton « Run Workflow » :

demarrer-un-deploiement-avec-github-actions

Et voilà, vous avez configuré votre système de déploiement. Il est aussi possible de paramétrer un déploiement automatique à chaque push, à chaque pull request, etc. La liste de tous les événements se trouve sur la doc de GitHub Actions

Catégories :
Tech web

Tags :
PHP Laravel

Vous avez aimé cet article ? Suivez-nous sur Facebook pour ne rien manquer !