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!
(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.
① 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.
④ 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.
① 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.
① 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!
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