[RUBY] [Circle CI] Procédure de déploiement automatique lors du transfert vers GitHub

Jusqu'à présent, le déploiement automatique utilisait «capistrano», mais à chaque fois que je modifiais le code, je maîtrisais localement la fusion et l'exécution de «bundle exec cap production deploy».

Cette fois, j'ai utilisé circleCI et je l'ai implémenté de sorte que lorsque le maître est fusionné, il se connecte automatiquement en SSH au serveur et déploie le code. Ci-dessous, je vais résumer le flux de mise en œuvre et l'explication de la partie bouchée!

Configuration .circleci / config.yml

(1) Tout d'abord, définissez le config.yml utilisé dans circleCI localement. Pour définir circleCI, créez un dossier appelé .circleci directement sous la racine du référentiel concerné et utilisez-y config.yml.

config.yml


version: 2.1
orbs:
  ruby: circleci/[email protected] 

jobs:
  deploy:
    machine:
      enabled: true
    steps:
      - add_ssh_keys:
          fingerprints:
            - "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #Après avoir enregistré la clé privée du serveur sur SSH, copiez les empreintes digitales hachées.
      - run: ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "/var/www/Nom du référentiel/deploy.sh"

workflows:
  version: 2.1
  deploy:
    jobs:
      - deploy:
          filters:
            branches:
              only: master

deploy.sh


#!/bin/bash

cd /var/www/Nom du référentiel/ && git pull

Je vais vous expliquer ci-dessous. (1) Le déploiement automatique est défini ici et il est automatiquement déployé après la fusion des maîtres. (2) Sous "-add_ssh_keys:", lorsque vous enregistrez l'HÔTE (adresse IP) et la clé privée, copiez et collez les empreintes digitales converties en hachages. Cela vous permet d'enregistrer la clé privée du serveur SSH. ③ Avec "-run: ssh -p ~", ssh avec la touche set + la variable d'environnement set et connectez-vous au serveur. Après cela, il est défini sur git pull lors de la demande d'extraction par "/var/www/rails/soup/deploy.sh". (4) flux de travail Selon les paramètres suivants, le déploiement n'est pas exécuté sauf pour la branche principale.

Installez cirecleCI / Add repository que vous souhaitez déployer automatiquement

① Tout d'abord, rendez-vous sur le site Internet de circleCI (https://circleci.com) et créez un nouveau compte (inscrivez-vous) Si vous avez un compte GitHub, vous pouvez vous lier immédiatement et créer un compte.

(2) Une fois connecté, sélectionnez «Ajouter des projets» et ajoutez le référentiel de l'application ou du site que vous souhaitez déployer automatiquement cette fois. Pour l'ajouter, cliquez sur «Configurer le projet» dans le référentiel correspondant.

③ Copiez et collez le fichier config.yml ci-dessus et enregistrez-le avec "Ajouter manuellement". Pour le moment, la clé privée n'a pas encore été enregistrée. Je m'enregistrerai plus tard. image.png

④ Sélectionnez "Démarrer la construction". Nous ajouterons le référentiel cible cette fois. Après avoir ajouté, je pense qu'une erreur s'est produite car la clé privée et les variables d'environnement n'ont pas été définies. J'ajouterai cette information.

Enregistrement de la clé privée

① Cliquez sur "Paramètres du projet" en haut à droite du tableau de bord "Pipelines".

② Sélectionnez "Clés SSH". Puisqu'il y a des "Clés SSH supplémentaires" en bas, nous enregistrerons les informations de clé privée locale ici.

③ Cliquez sur "ADD SSH Key". Pour «Nom d'hôte», saisissez l'adresse IP de la destination de déploiement.

④ Pour entrer la clé privée dans "Private Key *", entrez le répertoire ".ssh" localement et utilisez la clé ls pour confirmer que la clé privée existe (id_rsa, etc.). Je vais regarder ça avec un chat. Copiez et collez toutes les informations affichées dans "Clé privée *". À ce stade, incluez tous les "----- BEGIN RSA PRIVATE KEY -----" et ainsi de suite.

⑤ Appuyez sur "Ajouter une clé SSH" et s'il réussit, le réglage est terminé. Si vous obtenez une erreur, il est possible que vous n'ayez pas enregistré votre clé privée au format pem, ou que les informations de clé privée soient dans un nouveau format et ne soient pas une erreur cible. Dans mon cas, j'ai eu la dernière erreur.

J'ai résolu l'erreur en me référant au site suivant. https://blog.adachin.me/archives/11554 Voici un résumé de ce que j'ai fait après avoir mis à jour ma clé privée pour qu'elle soit obsolète. https://qiita.com/akk_ayy/items/61215e89cfcf680d1c94

⑥ Enfin, copiez les empreintes digitales hachées et collez-les dans la partie appropriée de config.yml.

Définition des variables d'environnement

① Sélectionnez "Variables d'environnement" sous "Paramètres du projet".

② Sélectionnez "Ajouter une variable". Enregistrez les informations de port, le nom d'utilisateur et le nom d'hôte de la destination de déploiement.

③ Assurez-vous que vous pouvez vous connecter en SSH avec le contenu défini localement.

ssh -nom d'utilisateur du port p@nom d'hôte-i ~/.ssh/Nom de la clé privée

Vous pouvez maintenant vous connecter

/var/www/Nom du référentiel/deploy.sh

Si vous cliquez dessus et exécutez git pull, vous êtes prêt pour le déploiement automatique!

Effectuer un déploiement automatique

Mastar fusionne les données de test et vérifie si elles peuvent être déployées automatiquement. En ce moment, si circleCI est SUCCESS, c'est une réussite! Je vous remercie pour votre travail acharné!

Site de référence https://blog.adachin.me/archives/10997 https://qiita.com/tatane616/items/8624e61473a9957d9a81 https://www.tweeeety.blog/entry/2018/02/09/195345

Recommended Posts

[Circle CI] Procédure de déploiement automatique lors du transfert vers GitHub
Procédure de publication d'une application à l'aide d'AWS (7) Déploiement automatique par Capistrano
[EC2 / Vue / Rails] Procédure de déploiement EC2 pour Vue + Rails
Projet CI pour Maven chez Github Actions