[RAILS] Qu'est-ce que Jenkins? ] Installation-comment utiliser-test automatique / déploiement automatique sera expliqué de la manière la plus simple au monde

Qu'est-ce qui vous a poussé à écrire cet article

En tant qu'ingénieur indépendant, je participe à un projet utilisant Jenkins, mais après avoir étudié, diffusons les connaissances en écrivant un article sur Qiita! J'ai donc décidé de l'écrire. En outre, cet article est sur le point d'être rédigé, mais sera mis à jour de temps en temps. https://www.udemy.com/course/jenkins-from-zero-to-hero/learn/lecture/19367702 Tout en apprenant de la vidéo d'udemy, j'écris tout en recherchant, donc je serais très heureux si vous pouviez signaler des erreurs.

Lecteurs cibles

Les personnes qui ont décidé d'utiliser Jenkins au travail mais qui ne savent pas comment l'utiliser Qu'est-ce que Jenkins? Gens utilisateur mac

Qu'est-ce que Jenkins?

Outil CI

Qu'est-ce qu'un outil CI?

CI signifie intégration continue, qui se traduit littéralement par intégration continue. Elle est également appelée intégration continue. Si vous avez passé l'examen d'ingénieur en informatique de base, vous n'avez peut-être vu que le service.

CircleCI, qui est devenu populaire récemment, est également l'un des outils CI. À propos, on dit que tout ce que vous pouvez faire avec Jenkins peut être fait avec CircleCI.

Cependant, de nombreuses entreprises utilisent encore Jenkins, donc je ne pense pas qu'acquérir des connaissances sur Jenkins sera un coût thunk pour le moment.

Le but des outils CI est de maintenir la vitesse de développement et la qualité du logiciel en exécutant efficacement les parties qui peuvent être automatisées à partir de Commit → Build → Test.

À propos, CD, qui apparaît souvent comme un mot apparenté, signifie déploiement continu et est un concept de CI compatible ascendant. Non seulement le commit-> build-> test, mais aussi le déploiement ultérieur de la version> est automatisé pour un développement efficace.

Avantages de Jenkins

Jenkins vous permet d'automatiser les builds et les tests. Et lorsqu'une compilation ou un test échoue, Jenkins peut le vérifier immédiatement, ce qui peut conduire à une détection précoce des défauts et aider à améliorer la qualité du logiciel.

Inconvénients de Jenkins

Il faut du temps pour apprendre Jenkins et pour créer un environnement Jenkins. Il semble que de nombreuses entreprises se tournent maintenant vers CircleCI, donc ce que vous avez appris peut être gaspillé.

Comment installer Jenkins

Installez en utilisant Homebrew. Homebrew est un logiciel d'installation de logiciels et de gestion des logiciels installés. Si vous utilisez mac, vous l'avez probablement installé, mais si vous ne l'avez pas encore installé, tapez la commande suivante dans le terminal pour l'installer.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Entrez ensuite la commande pour installer jenkins en utilisant Homebrew sur le terminal. (Cela prendra du temps)

brew install jenkins

Une fois l'installation terminée, entrez la commande pour démarrer jenkins sur le terminal. (Parce que c'est une commande fréquemment utilisée, je l'enregistre dans clipy)

launchctl start homebrew.mxcl.jenkins

Maintenant que jenkins a démarré, ouvrez un navigateur et entrez "localhost: 8080". Puisque jenkins est un serveur http, nous y accédons avec le numéro de port 8080.

スクリーンショット 2020-08-31 0.50.58.jpg

Après un certain temps, l'écran suivant apparaîtra.

スクリーンショット 2020-08-31 0.51.29.jpg

J'ai mis le mot de passe dans le chemin indiqué en rouge, on m'a donc demandé de le saisir. Si vous effectuez les opérations suivantes sur le terminal, le mot de passe sera affiché.

chat Le chemin affiché en rouge

Après avoir saisi le mot de passe, l'écran suivant s'affiche.

スクリーンショット 2020-08-31 0.54.14.jpg

Il vous sera demandé si vous souhaitez installer le plug-in recommandé ou sélectionner et installer le plug-in. Si vous sélectionnez la gauche, l'écran suivant apparaît et l'installation de plug-in recommandée démarre.

スクリーンショット 2020-08-31 0.55.28.jpg

Lorsque l'installation est terminée, l'écran ci-dessous s'affiche. Entrez tout et appuyez sur Enregistrer et continuez en bas à droite. Souvenez-vous de ce que vous entrez car il sera utilisé pour vous connecter à jenkins. スクリーンショット 2020-08-31 0.59.31.jpg

Une fois la saisie terminée, l'écran suivant s'affiche. On vous demandera "Voulez-vous changer l'URL?", Alors changez-la comme vous le souhaitez. Je l'utilise pour étudier, donc je ne l'ai pas changé. Cliquez sur Enregistrer et Terminer. スクリーンショット 2020-08-31 1.01.53.jpg

L'écran suivant apparaîtra, alors cliquez sur commencer à utiliser jenkins. スクリーンショット 2020-08-31 1.03.05.jpg

Lorsque l'écran ci-dessous s'affiche, l'installation de jenkins est terminée. スクリーンショット 2020-08-31 1.03.37.jpg

Comment quitter Jenkins

Pendant l'installation, je pense que vous avez démarré Jenkins avec la commande suivante.

launchctl start homebrew.mxcl.jenkins

Après le démarrage, si vous n'entrez pas la commande de fin dans le terminal, il continuera à démarrer, alors entrez la commande suivante dans le terminal pour terminer. (Parce que c'est une commande fréquemment utilisée, je l'enregistre dans clipy)

launchctl stop homebrew.mxcl.jenkins

Je le terminerai quand j'aurai fini de l'utiliser.

Comment désinstaller complètement Jenkins

Depuis que j'ai installé jenkins avec brew, je le désinstalle également avec brew. Entrez la commande suivante sur le terminal pour désinstaller.

brew uninstall jenkins

Cependant, avec cela seul, diverses données telles que le nom d'utilisateur et le mot de passe définis lors du démarrage de Jenkins resteront, donc lorsque vous réinstallez jenkins, vous serez connecté en utilisant ces informations. Si vous souhaitez le supprimer, vous pouvez le supprimer complètement en entrant la commande suivante sur le terminal. Il y a un répertoire de noms d'utilisateur sous le répertoire Users, et il y a un répertoire .jenkins sous celui-ci, supprimez-le avec la commande rm -rf. (Le chemin est différent pour chaque personne, veuillez donc le lire.)

cd /Users/Nom d'utilisateur/.jenkins
cd ../
rm -rf .jenkins

2020/09/02

Essayons Jenkins

Jenkins a le concept des emplois. Un travail ici est un groupe de procédures automatisées. Je pense que cette compréhension s'améliorera si vous essayez d'en créer un, alors créons un emploi immédiatement.

Cliquez sur Créer un nouveau travail sur l'écran ci-dessous. スクリーンショット 2020-09-02 22.24.32.jpg

Déplacé vers l'écran de création d'emploi.

スクリーンショット 2020-09-02 22.26.22.jpg

Entrez un nom d'élément représentant le nom du travail. Entrez le nom de votre choix.

スクリーンショット 2020-09-02 22.34.05.jpg

Entrez un nom de votre choix et choisissez Construire un projet Freestyle. C'est un petit outil ancien, donc j'ai un peu de bizarreries à travailler avec l'interface utilisateur.

[Tips]
Construire un projet freestyle vous permet de créer les jobs les plus basiques.
Tout SCM(source code manager:github ou subversion)Code source de
Vous pouvez le récupérer et créer le projet sur n'importe quel système de construction.
En outre, il peut être utilisé pour diverses automatisations arbitraires.
Je ne sais toujours pas quels sont les autres éléments, alors je les expliquerai plus tard.
Cette fois, c'est pour les tests, donc dans ce projet freestyle
"Je suis le tout premier emploi chez Jenkins"
Exécutez un script shell qui s'affiche.

Cliquez sur OK en bas à gauche pour afficher l'écran ci-dessous.

スクリーンショット 2020-09-02 22.34.26.jpg

Il existe différents paramètres, mais ce que je veux faire cette fois, c'est d'afficher la chaîne de caractères à l'aide d'un script shell. Je n'utilise donc pas la plupart des paramètres.

Si vous faites défiler vers le bas, il existe un élément appelé Build, donc sélectionnez Run Shell à partir de Add Build Procedure.

スクリーンショット 2020-09-02 22.36.48.jpg

Ensuite, un formulaire de saisie des commandes shell apparaîtra.

echo "Je suis le tout premier emploi chez Jenkins"

スクリーンショット 2020-09-02 22.40.03.jpg

Lorsque vous avez terminé, cliquez sur Enregistrer.

スクリーンショット 2020-09-02 22.40.56.jpg

Vous avez maintenant créé votre premier emploi. Cliquez ensuite sur Exécuter la génération dans le menu de gauche. Cette opération s'appelle "créer un emploi".

スクリーンショット 2020-09-02 22.41.56.jpg

Lorsque j'ai créé le travail, ● </ font> # 1 </ u> a été créé dans l'historique de construction. Cela représente le résultat de la construction. Cela signifie ● </ font>, mais si c'est ● (blue) </ font>, la construction est réussie et ● ( Rouge) </ font> indique un échec de construction. Si vous annulez la construction au milieu, ce sera ● (gris) </ font>. Puisque \ # 1 est un lien, cliquez dessus.

スクリーンショット 2020-09-02 22.50.36.jpg

Ensuite, vous pouvez vérifier l'heure de construction et vous pouvez vérifier le résultat de la construction de différentes manières dans le menu de gauche. Des informations détaillées au moment de la construction peuvent être trouvées dans "Sortie de la console", alors cliquez pour l'ouvrir.

スクリーンショット 2020-09-02 22.57.01.jpg

Cela montre le journal lorsque le travail a été créé. La deuxième ligne à partir du bas dit "Je suis le tout premier emploi chez Jenkins". En d'autres termes, vous pouvez confirmer que le script shell que vous avez entré dans le formulaire a été exécuté avec succès.

La construction automatique réelle et le test automatique nécessitent des paramètres un peu plus compliqués, mais c'est le flux général lors de la création d'un travail.

Vous pouvez revenir en haut de la page en cliquant sur la bannière Jenkins en haut à gauche.

スクリーンショット 2020-09-05 12.24.26.jpg

Vous pouvez voir que le travail a été créé et que l'affichage a changé. Le nom du travail du travail créé précédemment s'affiche. Vous pouvez voir S et W sur la gauche.

Pour S, un ● coloré s'affiche. Représente le résultat final de la génération. ● </ font> réussi ● </ font> échoue ● </ font> n'a pas été exécuté ou annulé

W peut savoir combien de ces derniers ont réussi. : ensoleillé: tous réussissent : partial_sunny: est un peu réussi : parapluie2: tout a échoué

Modifions le travail créé

Vous pouvez modifier le travail créé. J'ai affiché la chaîne dans le script shell, mais utilisons maintenant la date de la commande shell pour afficher la date et la commande whoami pour connaître mon nom d'utilisateur.

Sélectionnez une tâche dans la page supérieure et cliquez sur Paramètres dans la barre de menu de gauche.

スクリーンショット 2020-09-05 12.32.54.jpg

Réécrivez le script shell comme suit.

Avant correction

echo "Je suis le tout premier emploi chez Jenkins"

modifié

echo "$(whoami)Monsieur Bonjour! La date et l'heure d'aujourd'hui$(date)est"

スクリーンショット 2020-09-05 12.40.17.jpg

Après la réécriture, cliquez sur Enregistrer pour exécuter la compilation et essayez d'ouvrir la sortie de la console à partir du dernier résultat de compilation.

スクリーンショット 2020-09-05 12.41.14.jpg

Vous pouvez confirmer que vous avez pu modifier le travail.

Lorsque j'exécute une tâche dans Jenkins, dans quel répertoire s'exécute-t-elle?

Si vous avez installé Jenkins sur votre mac, la tâche s'exécutera dans le répertoire suivant:

/Users/Nom d'utilisateur/.jenkins/workspace/Travail qui génère des caractères dans le shell

Si vous exécutez la commande pwd pour afficher le répertoire courant dans le script shell du travail, ce répertoire sera affiché.

Ce sera différent si vous construisez Jenkins sur Amazon Linux d'EC2 sur AWS ou Jenkins sur Linux de VirtualBox. Si vous ne savez pas, vous pouvez vérifier en créant et en construisant un script shell qui exécute pwd dans votre travail.

De plus, sur mac, la zone sous le répertoire .jenkins est un dossier caché, vous devez donc le configurer pour afficher le dossier caché lors de son affichage avec le Finder.

Où sont stockées les données de travail Jenkins?

Si vous avez installé Jenkins sur votre Mac, les données de la tâche seront stockées dans le répertoire suivant.

/Users/Nom d'utilisateur/.jenkins/jobs/Travail qui génère des caractères dans le shell

Vous pouvez également obtenir des journaux directement à partir d'ici. Si vous jouez avec, Jenkins peut ne pas être en mesure de lire les données du travail et vous pouvez avoir un bogue, vous ne devriez donc pas jouer avec cela tant que vous ne vous y êtes pas habitué. (Histoire d'expérience)

Ne réussissons pas à créer un emploi à Jenkins

Jusqu'à présent, il n'y avait qu'un modèle de réussite, alors j'essaierai d'échouer exprès. Sélectionnez un travail et accédez à l'écran où vous pouvez saisir le script shell à partir des paramètres.

Supprimez le "" à la fin.

Avant correction

echo "$(whoami)Monsieur Bonjour! La date et l'heure d'aujourd'hui$(date)est"

modifié

echo "$(whoami)Monsieur Bonjour! La date et l'heure d'aujourd'hui$(date)est

スクリーンショット 2020-09-05 13.08.38.jpg

Cliquez sur Enregistrer, puis sur Exécuter la génération.

スクリーンショット 2020-09-05 13.27.21.jpg

Vous pouvez voir que l'historique de construction est devenu rouge. Autrement dit, la construction a échoué. Dans ce cas, je sais pourquoi la construction a échoué, mais vérifions pourquoi la construction a échoué. Suivez le lien rougeâtre de l'historique de construction et cliquez sur la sortie de la console.

スクリーンショット 2020-09-05 13.32.24.jpg

Vous pouvez lire les informations suivantes à partir du journal

Quelle ligne a l'erreur

/var/folders/sp/s32xwxcx69343zl_szqw02kw0000gn/T/jenkins13410237169821088770.sh: line 2: unexpected EOF while looking for matching `"'

Pourquoi l'erreur s'est produite

Build step 'Exécuter le shell' marked build as failure

Le résultat échoue

Finished: FAILURE

Si la construction échoue, vérifiez d'abord la sortie de la console pour aider à déterminer la cause.

Puisqu'il n'y a pas de "" à la fin du script shell, restaurez-le et exécutez à nouveau la construction.

Avant correction

echo "$(whoami)Monsieur Bonjour! La date et l'heure d'aujourd'hui$(date)est

modifié

echo "$(whoami)Monsieur Bonjour! La date et l'heure d'aujourd'hui$(date)est"

スクリーンショット 2020-09-05 13.36.51.jpg

スクリーンショット 2020-09-05 13.37.31.jpg

Maintenant, celui qui n'a pas réussi à construire réussira à nouveau.

Créons un travail qui appelle un script shell créé à partir de Jenkins

Jusqu'à présent, j'ai écrit le script shell directement sur Jenkins, mais appelons maintenant le script shell créé.

"Mais où placez-vous le script shell?"

Jenkins a le concept d'espace de travail. Vous pouvez lire ce que vous mettez dans cet espace de travail avec Jenkins. Rassurez-vous, je vous expliquerai tout dans les étapes qui suivent.

"Pourquoi dois-je appeler un script shell?"

En vous souvenant de cette procédure, vous pourrez utiliser votre espace de travail et rendre les applications plus efficaces.

Créez immédiatement un nouvel emploi.

スクリーンショット 2020-09-05 14.33.50.jpg

Nommez le travail "Job to call shell script", faites-en une construction d'un projet de style libre et cliquez sur OK.

スクリーンショット 2020-09-05 14.35.56.jpg

Cliquez sur Ajouter une procédure de construction → Exécuter Shell, puis sur Enregistrer.

À ce stade, le formulaire de script shell est vide et convient.

スクリーンショット 2020-09-05 14.36.49.jpg

Cliquez sur l'espace de travail. Cliquer sur celui affiché dans le menu de gauche ou celui affiché sur la droite vous amènera à la même page.

En cas de doute, veuillez sélectionner selon la théorie de Krapika.

Leorio "Pourquoi est-il à gauche dans un tel cas?
Dans ce cas, je ne suis pas à gauche, donc je ne suis pas calme. "

Krapika "Sûrement du point de vue du comportement, lorsque les gens se perdent ou choisissent une voie inconnue
Il semble qu'il y ait de nombreux cas où vous sélectionnez sans le savoir la gauche. "

クラピカ理論.jpg

スクリーンショット 2020-09-05 14.40.10.jpg

Lorsque vous ouvrez l'espace de travail, vous pouvez voir que l'espace de travail n'existe pas. Cela dit une erreur, mais c'est normal.

En plaçant le script shell dans l'espace de travail, il peut être exécuté à partir de Jenkins, mais la spécification est que l'espace de travail n'est pas créé à moins qu'il ne soit construit une fois.

Exécutez donc la compilation une fois, puis rouvrez l'espace de travail.

スクリーンショット 2020-09-05 14.44.32.jpg

Si vous voyez un écran comme celui ci-dessus, votre espace de travail a été créé.

Alors, où est cet espace de travail?

/Users/Nom d'utilisateur/.jenkins/workspace/Job qui appelle un script shell

C'est dedans.

J'ai essayé diverses choses, mais je n'ai pas pu mettre le fichier de script de Jenkins, alors je suis allé créer un script shell dans le chemin ci-dessus à partir du Finder. (Je ne sais pas si Jenkins peut le faire, alors je vais l'expliquer de cette façon)

Créez un fichier script.sh dans l'espace de travail ci-dessus et décrivez le contenu comme suit.

script.sh

#Affiche le type de shell que vous utilisez
echo "(Le shell que vous utilisez est "$COQUILLE ")"

#Afficher le nom
LASTNAME=$1 #Passez le nom comme premier argument
FIRSTNAME=$2 #Passez le nom de famille comme deuxième argument
NAME=$FIRSTNAME$LASTNAME #Joindre le prénom et le prénom
echo "Bonjour,$NOM"

Ce script shell génère le nom en fonction du shell que vous utilisez et des arguments.

Une fois créé, retournez à travailler avec Jenkins.

スクリーンショット 2020-09-05 15.04.12.jpg

Vous pouvez également vérifier l'existence de script.sh sur Jenkins. S'il n'est pas affiché, vous pouvez le vérifier en actualisant la page. S'il n'apparaît toujours pas, il y a une erreur dans le répertoire où vous créez le script shell.

Cliquez sur Paramètres de la tâche.

スクリーンショット 2020-09-05 15.07.40.jpg

Entrez ce qui suit:

sh script.sh Ryuken Yamamoto

Cela signifie que dans un shell appelé sh, le premier argument "Ryuken" et le second argument "Yamamoto" sont passés à script.sh et exécutés.

Une fois entré, cliquez sur Enregistrer, puis sur Exécuter la génération.

スクリーンショット 2020-09-05 20.24.02.jpg

Si l'historique de construction est ● </ font>, il réussit. Cliquez sur le dernier historique de construction, puis sur Sortie de la console.

スクリーンショット 2020-09-05 20.25.04.jpg

(Le shell que vous utilisez est "/bin/zsh ")
Bonjour, Yamamoto Ryûken M.

S'affiche, c'est réussi.

Vous venez de créer un travail qui exécute un script que vous avez placé dans votre espace de travail.

Vous pouvez terminer ce chapitre ici, mais pour vous habituer au script shell, modifions le script shell Jenkins pour créer une variable puis passons-la à script.sh.

Ouvrez les paramètres de la tâche et procédez comme suit:

Avant correction

sh script.sh Ryuken Yamamoto

modifié

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

※Mise en garde

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

,

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

Si vous mettez un espace après et =, la génération du travail échouera.

スクリーンショット 2020-09-05 21.27.52.jpg

Cliquez sur Enregistrer pour exécuter la compilation et ouvrez le dernier historique de compilation pour voir la sortie de la console.

スクリーンショット 2020-09-05 21.29.30.jpg

Le résultat est similaire.

Tirez parti du paramétrage des builds Jenkins

Je l'ai beaucoup ignoré, mais pour la première fois, j'aimerais utiliser l'une des options, "paramétrer la construction".

スクリーンショット 2020-09-05 21.46.17.jpg

Maintenant, dans le script shell, les variables FIRSTNAME et LASTNAME sont préparées, et les valeurs sont définies et utilisées.

スクリーンショット 2020-09-05 21.47.34.jpg

Paramétrez-les pour créer. Vérifiez le paramétrage de la construction.

スクリーンショット 2020-09-05 21.50.18.jpg

Sélectionnez ensuite une chaîne dans Ajouter un paramètre.

スクリーンショット 2020-09-05 21.50.59.jpg

Ensuite, un champ pour entrer le nom, la valeur par défaut et la description est apparu.

スクリーンショット 2020-09-05 21.51.22.jpg

Entrez FIRSTNAME pour le nom, Yamamoto pour la valeur par défaut et le nom de famille pour la description.

スクリーンショット 2020-09-05 21.52.53.jpg

Vous avez maintenant paramétré une variable dans votre build. Ensuite, créez-en un autre.

Sélectionnez à nouveau la chaîne dans Ajouter un paramètre.

スクリーンショット 2020-09-05 21.54.14.jpg

Entrez LASTNAME pour le nom, Ryuken pour la valeur par défaut et le nom pour la description.

スクリーンショット 2020-09-05 21.55.06.jpg

Vous avez maintenant paramétré les deux variables dans votre build.

Enfin, supprimez la description inutile du script shell Jenkins et réécrivez-la comme suit.

Avant correction

FIRSTNAME=Yamamoto
LASTNAME=Ryuken
sh script.sh $LASTNAME $FIRSTNAME

modifié

sh script.sh $LASTNAME $FIRSTNAME

スクリーンショット 2020-09-05 21.58.32.jpg

Maintenant, le script shell se rafraîchit. Cela seul semble être un avantage, mais ce n'est pas le seul avantage. Voici les avantages du paramétrage de la vraie construction. Cliquez sur Enregistrer.

スクリーンショット 2020-09-05 21.59.13.jpg

À ce stade, vous remarquerez qu'un affichage a changé. La partie qui était autrefois une exécution de build est devenue une build paramétrée.

Cliquons dessus tout de suite.

スクリーンショット 2020-09-05 21.59.59.jpg

L'exécution de la construction a commencé immédiatement lorsque j'ai cliqué sur l'exécution de la construction, mais en définissant le paramétrage de la construction, il est maintenant possible de changer la valeur de la variable avant l'exécution de la construction.

Cliquez sur Construire tel quel une fois, et une fois terminé, ouvrez la sortie de la console à partir du dernier historique de build.

スクリーンショット 2020-09-05 22.03.51.jpg

La chaîne affichée est la même que dans le chapitre précédent. Revenez ensuite au projet → Construire avec des paramètres. Cette fois, je vais refaire le nom et le prénom.

スクリーンショット 2020-09-05 22.05.16.jpg

Cliquez sur Build et lorsque vous avez terminé, ouvrez la sortie de la console à partir du dernier historique de build.

スクリーンショット 2020-09-05 22.06.35.jpg

Vous pouvez voir que le nom affiché a changé. En définissant le paramétrage de la construction, il est désormais possible de modifier les variables à chaque fois qu'une construction est exécutée. Vous pouvez également définir des valeurs par défaut, ce qui est une fonctionnalité utile si vous devez modifier des variables à chaque fois que vous exécutez une génération.

L'utilisation des paramètres de construction est infinie. Dans ce chapitre, ce n'est pas grave si vous pouvez dire que le paramétrage de build peut être utilisé de différentes manières.

Rendre le paramétrage de la build Jenkins sélectif

Le paramétrage de la construction peut être sélectionné ainsi que la saisie d'une chaîne. Terminez tous les paramétrages de construction une fois.

スクリーンショット 2020-09-05 22.18.42.jpg

Choisissez ensuite de sélectionner des paramètres supplémentaires.

スクリーンショット 2020-09-05 22.19.12.jpg

Effectuez les réglages pour que le nom et le prénom puissent être sélectionnés en fonction de l'image ci-dessous. Vous pourrez sélectionner le nom de famille parmi "Yamamoto", "Katsumata" et "Bannai". Vous pourrez créer un nom de la même manière et choisir parmi "Ryuken", "Kenta" et "Manabu".

スクリーンショット 2020-09-05 22.20.39.jpg

Cliquez sur Enregistrer, puis sur Construire avec des paramètres.

スクリーンショット 2020-09-05 22.23.23.jpg

J'ai pu confirmer que le nom et le prénom sont sélectionnables. Changez le nom de famille en "Bannai" et le nom en "Manabu".

スクリーンショット 2020-09-05 22.24.18.jpg

cool. (Imitation d'un instructeur étranger)

Cliquez ensuite sur Build, puis sur Console Output from Latest Build History.

スクリーンショット 2020-09-05 22.25.23.jpg

Il a été confirmé que les noms sélectionnés «Bannai» et «Manabu» sont affichés. En passant, Manab a le même âge que moi et a quatre mois d'intervalle.

Vous avez maintenant rendu le paramétrage de la construction sélectif.

Afficher / masquer à l'aide du paramétrage de la construction Jenkins

J'avais l'habitude de montrer quel shell j'utilisais, mais comme je n'ai pas besoin de le montrer à chaque fois, j'utiliserai le paramétrage de construction pour l'afficher ou le masquer.

Dans les paramètres du travail, sélectionnez une valeur booléenne dans Ajouter un paramètre. スクリーンショット 2020-09-05 22.36.48.jpg

Le nom est SHOWSHELL, la valeur par défaut n'est pas cochée car je veux le cacher, et la description peut être vérifiée pour montrer le shell que vous utilisez. ça ira.

スクリーンショット 2020-09-05 22.38.26.jpg

Cliquez sur Enregistrer.

Ensuite, réécrivez le script.sh placé dans l'espace de travail afin que le shell s'affiche si SHOWSHELL est vrai (1) et le shell ne s'affiche pas si SHOWSHELL est faux (0).

Avant correction

/Users/Nom d'utilisateur/.jenkins/workspace/Travail qui génère des caractères dans le shell/script.sh


#Affiche le type de shell que vous utilisez
echo "(Le shell que vous utilisez est "$COQUILLE ")"

#Afficher le nom
LASTNAME=$1 #Passez le nom comme premier argument
FIRSTNAME=$2 #Passez le nom de famille comme deuxième argument
NAME=$FIRSTNAME$LASTNAME #Joindre le prénom et le prénom
echo "Bonjour,$NOM"

modifié

/Users/Nom d'utilisateur/.jenkins/workspace/Travail qui génère des caractères dans le shell/script.sh


#Définition variable
LASTNAME=$1 #Passez le nom comme premier argument
FIRSTNAME=$2 #Passez le nom de famille comme deuxième argument
SHOWSHELL=$3 #Passez un drapeau au troisième argument pour savoir s'il faut sortir le shell

#Affiche le type de shell que vous utilisez
if [ "$SHOWSHELL" = "true" ]; then
	echo "(Le shell que vous utilisez est "$COQUILLE ")"
fi

#Afficher le nom
NAME=$FIRSTNAME$LASTNAME #Joindre le prénom et le prénom
echo "Bonjour,$NOM"

Revenez à travailler avec Jenkins et cliquez sur Construire avec des paramètres.

スクリーンショット 2020-09-05 22.44.30.jpg

Cette fois, le shell que j'utilise n'est plus affiché, il suffit donc de cliquer sur Construire pour afficher la sortie de la console à partir du dernier historique de construction.

スクリーンショット 2020-09-05 22.48.09.jpg

Il a été confirmé que le type de shell qui était affiché jusqu'à présent n'est plus affiché.

Vous pouvez maintenant l'afficher ou le masquer à l'aide du paramétrage de construction.

Applications de rails d'autotest avec Jenkins

Apportez l'application rails de GitHub et créez un travail pour les tests et l'analyse statique dans Jenkins.

Comment créer une application de rails, comment installer Homebrew, qui est un logiciel pour installer rbenv et son rbenv, qui peut facilement réécrire la version ruby, rspec utilisé dans les tests automatiques, rubocop utilisé comme outil d'analyse statique J'omettrai la méthode d'introduction. Le GitHub suivant a des applications personnelles avec rspec installé et rubocop installé, donc je vais expliquer en utilisant ceci comme exemple. https://github.com/EL93019205/stuctive.git rails utilise 5.2.3 et ruby utilise 2.5.1.

Il existe un article qui présente la procédure d'installation du plug-in, mais aucun plug-in n'est requis à l'exception de celui par défaut. ~~ Le plug-in est totalement ancien et pas très utile ~~

Créons maintenant un nouvel emploi.

スクリーンショット 2020-09-22 12.57.22.jpg

Le nom du travail est rails Doit être en anglais pour plus de commodité. Cette fois, réglez-le sur "stuctive_auto_test".

Le type de travail doit être Construction de projet libre.

スクリーンショット 2020-09-22 14.32.57.jpg

Cliquez sur OK lorsque vous avez terminé. スクリーンショット 2020-09-22 13.00.03.jpg

Puisqu'il existe un élément appelé gestion du code source, je vais le rendre Git. Ensuite, l'écran suivant s'affiche.

スクリーンショット 2020-09-22 13.03.48.jpg

GitHub dans l'URL du référentiel Maintenant, que dois-je entrer dans l'URL du référentiel? La réponse est sur GitHub.

Cliquez sur le bouton vert Code à partir de l'URL ci-dessous (l'URL de mon référentiel d'applications personnelles), puis cliquez sur l'icône à droite de la partie où l'URL est écrite. Cette icône représente une copie. C'est un référentiel public, donc je pense que n'importe qui peut le copier et l'utiliser. https://github.com/EL93019205/stuctive スクリーンショット 2020-09-22 13.04.55.jpg

Collez ensuite "https://github.com/EL93019205/stuctive.git" dans l'URL du référentiel comme indiqué ci-dessous. スクリーンショット 2020-09-22 13.08.35.jpg

C'est le seul paramètre de contrôle du code source. Vous n'avez pas à jouer avec autre chose.

Avez-vous pensé: "Quoi? C'est tout?" Oui c'est ça.

Si vous disposez d'un paramètre sécurisé, vous devrez peut-être définir des informations d'identification, et si la branche à automatiser n'est pas maître, vous devrez peut-être modifier la branche à construire, mais mon application personnelle se trouve dans le référentiel public. Et comme la branche que vous souhaitez faire des tests automatisés est maître, vous n'avez pas à vous en soucier.

Ce paramètre clonera l'application rails dans votre espace de travail.

Cliquez sur Enregistrer une fois. スクリーンショット 2020-09-22 13.16.03.jpg

Ouvrez l'espace de travail. スクリーンショット 2020-09-22 13.16.48.jpg

Vous pouvez voir que l'espace de travail n'existe pas.

スクリーンショット 2020-09-22 13.16.59.jpg

Comme je l'ai écrit ci-dessus, l'espace de travail ne sera pas créé à moins que la construction ne soit exécutée une fois. Cliquez donc sur Run Build.

スクリーンショット 2020-09-22 13.18.27.jpg

Vous pouvez voir que l'historique de construction est devenu bleu.

スクリーンショット 2020-09-22 13.18.55.jpg

Ouvrez à nouveau l'espace de travail.

スクリーンショット 2020-09-22 13.20.12.jpg

C'est comme suit. Si vous avez déjà écrit une application rails, vous connaissez probablement tous les fichiers.

スクリーンショット 2020-09-22 14.51.40.jpg

Ces données sont exactement les mêmes que les données sur GitHub ci-dessous. https://github.com/EL93019205/stuctive スクリーンショット 2020-09-22 13.21.25.jpg

De cette façon, il est très facile de copier un ensemble de données d'application rails sur GitHub dans votre espace de travail Jenkins.

Il ne reste plus qu'à exécuter la commande de test automatisé avec ces données récupérées dans le répertoire contenant le Gemfile. La commande de test automatique est complètement différente selon la version des rails, mais comme nous utilisons les rails 5.2.3 cette fois, elle peut être exécutée avec la commande suivante.

bundle exec rspec
bundle exec rubocop

Faisons cela.

Ouvrez les paramètres. スクリーンショット 2020-09-22 13.28.01.jpg

Faites défiler vers le bas et collez la commande précédente dans Run Shell. Cette commande s'exécute dans le répertoire de l'espace de travail. En d'autres termes, il sera exécuté dans le répertoire où se trouve le Gemfile. Cliquez sur Enregistrer lorsque vous avez terminé.

スクリーンショット 2020-09-22 13.28.38.jpg

Ensuite, exécutez la compilation.

スクリーンショット 2020-09-22 13.30.24.jpg

Ah, l'historique de construction est devenu rouge. Quelle était la cause? スクリーンショット 2020-09-22 13.30.41.jpg

Cliquez sur ● </ font> # 2 pour ouvrir la sortie de la console.

Vous pouvez voir le journal des erreurs suivant en bas.

スクリーンショット 2020-09-22 13.31.59.jpg

Cela signifie que vous avez besoin d'une installation groupée. C'est un comportement attendu, j'ai donc osé faire une erreur.

Revenez donc aux paramètres et ajoutez l'installation du bundle.

スクリーンショット 2020-09-22 13.34.26.jpg

Enregistrez et exécutez à nouveau la compilation

スクリーンショット 2020-09-22 13.35.37.jpg

J'obtiens à nouveau une erreur. Cliquez sur ● </ font> # 3 pour ouvrir la sortie de la console.

スクリーンショット 2020-09-22 13.36.07.jpg

La version ruby est 2.6.3, mais le Gemfile dit 2.5.1, donc je me fâche de ne pas pouvoir regrouper l'installation.

スクリーンショット 2020-09-22 13.36.46.jpg

Je pense que c'est la partie où une telle erreur peut ou non se produire selon la personne. Vous pouvez également obtenir des erreurs différentes. Après tout, l'environnement diffère considérablement selon le PC.

C'est une mauvaise idée d'installer rbenv ou d'essayer d'installer Homebrew ici. Je suis accro à la boue. J'en étais accro.

À la suite de diverses investigations, il semble que la variable d'environnement PATH soit écrasée lorsque la construction Jenkins est exécutée.

Il est conçu pour vous permettre d'utiliser des variables d'environnement pour Jenkins, donc c'est possible.

Alors, faisons en sorte que la variable d'environnement PATH soit écrasée par le PATH du PC local après l'exécution de la construction.

Pour vérifier la variable d'environnement PATH, exécutez la commande suivante sur le terminal Mac. Cette commande est une commande pour obtenir une liste de toutes les variables d'environnement avec la commande printenv, les connecter avec | en fonction du résultat et afficher uniquement les lignes contenant PATH avec la commande grep.

printenv | grep PATH

Ensuite, la valeur de la variable d'environnement PATH s'affiche. スクリーンショット 2020-09-22 13.45.08.jpg

Cela varie d'une personne à l'autre, mais Jenkins doit renvoyer ce PATH.

Par conséquent, réécrivez comme suit.

export PATH="Collez le contenu du PATH que vous avez copié précédemment"
bundle exec rspec
bundle exec rubocop

Dans mon cas, cela ressemble à ceci: Veuillez lire le CHEMIN car il varie d'une personne à l'autre.

スクリーンショット 2020-09-22 14.56.33.jpg

Maintenant, enregistrez et cliquez à nouveau sur Exécuter la génération.

スクリーンショット 2020-09-22 14.59.44.jpg

La construction a réussi!

Ouvrons la sortie console de ● </ font> # 4 et regardons le journal.

Tout d'abord, vous pouvez voir que le journal d'installation du bundle est affiché. スクリーンショット 2020-09-22 15.04.50.jpg

Ensuite, vous pouvez voir que le rspec exec du bundle est journalisé.

スクリーンショット 2020-09-22 15.06.17.jpg

Enfin, vous pouvez voir que le rspec exec du bundle est journalisé.

スクリーンショット 2020-09-22 15.06.34.jpg

Vous pouvez désormais créer un travail qui teste automatiquement votre application rails en exécutant une génération.

Ici, "Un script shell pour le branchement de l'utilisation de ● </ font> ou ● </ font> en fonction du résultat de l'exécution de rubocop ou rspec. Vous vous êtes peut-être demandé: "N'est-il pas nécessaire de le créer?"

En conclusion, ce n'est pas nécessaire. Les commandes bundle exec rspec et bundle exec rubocop renvoient un code d'erreur en cas d'erreur, et Jenkins examine le code d'erreur et soit ● </ font> ou <font Il décide s'il faut utiliser color = "red"> ● </ font>. C'est pratique!

Si vous ne comprenez pas les scripts shell, les shells, les commandes telles que grep et printenv, et la signification des variables d'environnement, vous ne connaissez pas Linux, vous devriez donc étudier avec les livres suivants. ~~ J'ai aussi un Linux rafraîchissant, donc je pense acheter ce livre et étudier. ~~ https://www.amazon.co.jp/dp/B072K1NH76/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1 スクリーンショット 2020-09-22 13.13.37.jpg

C'est tout pour cette fois.

Vous pouvez utiliser un webhook pour pousser vers la branche thématique d'un référentiel distant afin d'exécuter un test automatisé, mais j'aimerais vous présenter cela un autre jour.

Déploiement automatique des applications de rails avec Jenkins

Attention! Même si vous copiez la procédure telle quelle, elle ne peut pas être déployée automatiquement ici. Parce que je possède le master.key pour l'application rails. De plus, mon application personnelle est déjà conçue pour pouvoir être déployée dans l'environnement de production avec une seule commande avec Capistrano. La méthode n'est pas décrite. C'est difficile, mais je vais vous montrer comment créer l'environnement de production ci-dessous. https://drive.google.com/drive/folders/14F4AmgnK0n022uYLatlQbvuPIGLGLFgt

Je vais vous montrer seulement comment le faire. C'est super facile à faire avec Jenkins.

Cliquez sur Créer un nouveau travail.

スクリーンショット 2020-09-22 15.22.17.jpg

Définissez le nom du travail sur "stuctive_auto_deploy" et le type de travail sur Projet libre et cliquez sur OK.

スクリーンショット 2020-09-22 15.22.50.jpg

スクリーンショット 2020-09-22 15.22.53.jpg

Définissez le contrôle de code source sur Git et l'URL du référentiel sur https://github.com/EL93019205/stuctive.git (mon application personnelle).

Sélectionnez Run Shell à partir de Add Build Procedure for Build et faites ressembler le script shell à ceci:

スクリーンショット 2020-09-22 15.43.10.jpg

Il y a trois choses que je fais. -Overwrite Jenkins PATH avec local PC PATH (identique au test automatique) ・ Copiez master.key d'où master.key se trouve dans l'espace de travail et récupérez-le -Exécuter la commande de déploiement automatique de Capistrano

Cliquez sur Enregistrer, puis sur Exécuter la génération.

スクリーンショット 2020-09-22 15.34.31.jpg

Après avoir exécuté la construction, l'historique de construction sera ● </ font> # 1.

スクリーンショット 2020-09-22 15.34.05.jpg

Cliquez sur ● </ font> # 1 et cliquez sur Sortie de la console pour confirmer que le journal du déploiement automatique est affiché.

スクリーンショット 2020-09-22 15.35.51.jpg

Vous pouvez désormais déployer automatiquement des applications rails dans Jenkins en exécutant une build.

Vous pouvez peut-être utiliser un webhook pour exécuter le déploiement automatique lorsque la branche principale du référentiel distant est mise à jour, mais je suis toujours en train d'étudier cela, alors j'aimerais le présenter un autre jour.

À la fin

Si vous trouvez quelque chose de difficile à comprendre, veuillez le laisser dans les commentaires. Merci d'avoir lu jusqu'au bout.