GNU/Linux >> Tutoriels Linux >  >> Linux

Configurer le flux de travail CI/CD avec les actions GitHub

Installez et configurez le flux de travail CI/CD avec des actions GitHub pour déployer le code source sur un serveur distant.

Dans ce guide, vous allez apprendre à configurer les actions GitHub pour effectuer des déploiements automatisés sur le serveur une fois qu'un push est effectué. Nous allons configurer des clés SSH pour s'authentifier auprès du serveur.

Prérequis

Suivez ce guide pour créer un nouvel utilisateur et configurer les clés SSH nécessaires à GitHub pour établir des connexions sécurisées avec votre serveur.

Une fois que vous avez terminé l'étape ci-dessus, vous pouvez passer à GitHub pour configurer des actions.

Prenez note des détails suivants de la configuration ci-dessus.

  1. Nom d'utilisateur  :Le nouvel utilisateur que vous avez créé avec adduser commande.
  2. Nom d'hôte :Il s'agit de l'adresse IP de votre serveur.
  3. Clé privée :Cette clé est créée automatiquement à l'aide du ssh-keygen commande. Assurez-vous que la clé est au format RSA qui commence par -----BEGIN RSA PRIVATE KEY----- .

Ces 3 informations sont nécessaires pour établir la connexion au serveur depuis GitHub.

Secrets de configuration

Connectez-vous à votre compte GitHub et accédez à votre référentiel.

Accédez à Paramètres >> Secrets .

Cliquez sur Nouveau secret de référentiel .

Dans le nom, ajoutez SSH_HOST et en valeur entrez l'adresse IP de votre serveur.

Cliquez sur Ajouter un secret .

Cliquez à nouveau sur Nouveau secret de référentiel .

Dans le nom, ajoutez SSH_USERNAME et en valeur entrez le nom d'utilisateur vous avez noté ci-dessus qui a été créé dans le message mentionné dans la section des prérequis.

Cliquez sur Ajouter un secret .

Cliquez à nouveau sur Nouveau secret de référentiel .

Dans le nom, ajoutez SSH_KEY et en valeur entrez la clé privée vous avez noté ci-dessus qui a été créé dans le message mentionné dans la section des prérequis.

Cliquez sur Ajouter un secret .

Vous devriez maintenant avoir vos secrets comme indiqué ci-dessous.

Une fois les secrets en place, vous pouvez configurer des actions.

Lancer le flux de travail des actions

Cliquez maintenant sur les Actions onglet.

Vous verrez une liste de workflows qui peuvent être configurés par défaut.

Vous pouvez cliquer sur Configurer vous-même un workflow.

Vous verrez quelques configurations par défaut ici.

Configurer le flux de travail des actions

Vous pouvez nommer le fichier de workflow selon votre souhait. Je vais le nommer deploy.yml .

Vous pouvez supprimer tous les workflows inclus par défaut.

Copiez le workflow ci-dessous et ajoutez-le.

name: Identifier Name
on:
  push:
    branches: [ branch-name ]

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
      - name: Deploy source-code
        uses: appleboy/[email protected]
        env:
          HOST: ${{ secrets.SSH_HOST }}
          USERNAME: ${{ secrets.SSH_USERNAME }}
          PORT: 22
          KEY: ${{ secrets.SSH_KEY }}
        with:
          source: "*"
          target: "/path/in/your/server"

Le code ci-dessus effectuera un déploiement sur votre serveur lorsqu'un push est effectué vers une branche speck.

Il déploie tout le code source situé à l'emplacement racine de votre référentiel. Si vous avez besoin de déployer un dossier spécifique, vous seul pouvez le configurer dans la directive source.

Assurez-vous que l'utilisateur dispose des autorisations sur le serveur pour effectuer le déploiement.

Par exemple, si vous utilisez un serveur Web Nginx ou Apache qui s'exécute à l'aide de l'utilisateur www-data, vous avez besoin d'autorisations de configuration et réinitialisez les autorisations comme indiqué ci-dessous.

name: Identifier Name
on:
  push:
    branches: [ branch-name ]

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - name: Reset Permissions before deployment
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: 22
          script: |
            sudo chmod -R 755 /path/in/your/server
            sudo chown -R username:username /path/in/your/server
            sudo setfacl -R -m u:www-data:rwx /path/in/your/server 

      - uses: actions/[email protected]
      - name: Deploy source-code
        uses: appleboy/[email protected]
        env:
          HOST: ${{ secrets.SSH_HOST }}
          USERNAME: ${{ secrets.SSH_USERNAME }}
          PORT: 22
          KEY: ${{ secrets.SSH_KEY }}
        with:
          source: "*"
          target: "/path/in/your/server"

      - name: Reset Permissions after deployment
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: 22
          script: |
            sudo chmod -R 755 /path/in/your/server
            sudo chown -R www-data:www-data /path/in/your/server
            sudo setfacl -R -m u:username:rwx /path/in/your/server

La configuration de déploiement ci-dessus configure l'utilisateur pour avoir un accès complet sur le dossier pour le déploiement et l'accès de configuration pour l'utilisateur www-data qui est utilisé par Apache et Nignx.

Une fois terminé, cliquez sur Démarrer la validation et cliquez sur Valider le nouveau fichier pour terminer la configuration.

Vous avez maintenant un déploiement configuré pour être exécuté chaque fois qu'un push est effectué vers la branche spécifique.

Conclusion

Vous avez maintenant appris à configurer et à configurer le flux de travail des actions GitHub pour CI/CD.

Merci pour votre temps. Si vous rencontrez un problème ou des commentaires, veuillez laisser un commentaire ci-dessous.


Linux
  1. Trouver tous les fichiers dont le nom contient une chaîne

  2. Comment supprimer des dossiers avec un certain nom

  3. Comment supprimer un fichier avec un nom bizarre ?

  4. Configuration ZFS pour débutant avec des disques de différentes tailles

  5. Fichier mv Linux avec un nom long

Sécurité CI/CD - Comment sécuriser votre pipeline CI/CD

Premiers pas avec GitHub

Premiers pas avec les playbooks Ansible

Comment configurer le pare-feu avec UFW sous Linux

Configuration initiale du serveur avec Ubuntu 18.04

Comment configurer un serveur FTP avec VSFTPD