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.
- Nom d'utilisateur :Le nouvel utilisateur que vous avez créé avec
adduser
commande. - Nom d'hôte :Il s'agit de l'adresse IP de votre serveur.
- 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.