


Points de base
- Jenkins est un serveur de construction open source populaire qui prend en charge les tests automatisés d'applications complexes et accélère le processus de version en découvrant et en résolvant les erreurs avant le déploiement.
- Jenkins Pipeline (introduit dans la version 2.0) est un ensemble d'étapes personnalisables écrites dans le langage de script Groovy pour les tests et le code de construction. Si une étape échoue, toute la construction échouera et Jenkins cessera de s'exécuter.
- Jenkins peut être facilement installé et configuré à l'aide de Laravel Homestead. Une fois la configuration terminée, vous pouvez créer un nouveau travail de construction pour consulter la dernière version du projet, installer les dépendances et exécuter des tests unitaires.
- Le pipeline Jenkins peut être écrit comme un script JenkinsFile dans le répertoire racine de la base de code, implémentant ainsi le contrôle de version. Vous pouvez également configurer des travaux de pipeline multi-branches pour exécuter différentes opérations sur différentes branches du projet.
- Jenkins prend en charge un large écosystème de plug-ins qui peut être installé et configuré pour étendre leurs capacités, notamment le test des plug-ins et l'intégration avec les services cloud. Il peut être configuré pour être construit automatiquement chaque fois qu'un commit est poussé vers le référentiel et doit être sécurisé correctement.
Étant donné que les applications deviennent plus complexes, y compris les dépendances des compositeurs, les scripts de construction de webpack et chaque variable environnement - nous atteignons inévitablement un point où le test de toutes ces différentes complexités devient lent et qu'il est laborieux, surtout lorsque chaque test nécessite la suppression et la reconstruction de la Environnement entier. De même, les styles de code peuvent s'affronter au fil du temps, et la création d'une archive de déploiement qui peut être utilisée pour la production nécessite un ensemble spécifique d'étapes.
Supposons de tester l'application, les étapes suivantes sont nécessaires:
- Run
composer install
pour s'assurer que les dépendances sont installées - Exécutez
php -l
sur chaque fichier PHP dans la base de code pour vérifier les erreurs de syntaxe - Exécuter le phpunit pour les tests unitaires
- Exécuter CodeCection pour les tests fonctionnels
Si l'une de ces étapes échoue, le logiciel doit être jugé inadapté au déploiement jusqu'à ce que l'erreur soit résolue. À mesure que le logiciel devient plus complexe et que le nombre de tests augmente au fil du temps, il peut prendre plusieurs minutes pour exécuter une suite de test complète, ce qui ralentit le développeur et, à son tour, ralentit le processus de version.
Pour surmonter ce problème, les serveurs de construction peuvent être introduits dans le flux de travail de développement. Le serveur de construction exécute un logiciel qui vous permet d'exécuter une série d'étapes à plusieurs reprises, et si l'un d'eux échoue, le serveur de construction peut vous informer du problème. Si vous avez été impliqué dans des projets open source, vous avez peut-être vu des applications pratiques pour la construction de serveurs tels que Travisci ou Circleci. Par exemple, chaque demande de traction pour un projet Laravel est testée par Travisci pour garantir que les modifications ne brisent aucun test, et Styleci garantit alors que les modifications de code correspondent au style de code de projet.
Jenkins est un serveur de construction open source populaire qui a publié la version 2.0 cette année. L'une des principales fonctionnalités de cette nouvelle version consiste à inclure le plugin de pipeline (précédemment facultatif) en tant que fonctionnalité principale.
Le pipelineest un ensemble d'étapes entièrement personnalisables qui peuvent être exécutées séquentiellement pour tester et créer du code. Pipeline est écrit en langage de script Groovy et il a une syntaxe très simple et est facile à démarrer. Par exemple, si vous souhaitez décrire l'étape de test décrite précédemment comme un pipeline, cela pourrait ressembler à ceci:
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }L'instruction
node
> indique à Jenkins d'attribuer un nœud de construction séparé (Jenkins peut s'exécuter en mode unique ou paramètres multi-nœuds). node
Il y a plusieurs étapes dans le bloc, chaque étape effectue une opération spécifique. Jenkins exécutera chaque étape à son tour, et en cas d'échec d'une étape, l'ensemble de la construction échouera et Jenkins cessera de s'exécuter.
À partir de cet exemple simple, des phases supplémentaires d'autres tests peuvent être facilement ajoutées, en disant à Jenkins d'envoyer des notifications de jeu de construction réussies ou échouées, de pousser le code testé avec succès à la branche de publication ou de marquer la demande de traction comme fusion.
Installez Jenkins
Jenkins est très facile à installer, et dans ce tutoriel, nous utiliserons Laravel Homestead pour fournir un environnement virtuel cohérent afin que vous puissiez utiliser Jenkins localement.
La première étape consiste à installer Laravel Homestead - voici un guide utile. Vous avez juste besoin de démarrer et d'exécuter la machine virtuelle, nous n'avons pas besoin de configurer aucun site dans le fichier homestead.yaml
.
Après vous lever et exécuter la machine virtuelle Homestead, utilisez vagrant ssh
pour vous connecter.
Homestead est livré avec toutes les dépendances dont nous avons besoin, à savoir Git, PHP et compositeur, nous avons donc juste besoin d'installer Jenkins lui-même. Après le guide de package Debian Jenkins, nous devons effectuer les étapes suivantes.
Run wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
. Cette commande ajoute la clé de signature de code à aptitude afin que les packages Jenkins de ce référentiel soient fiables.
Ensuite, la liste des sources de packages doit être mise à jour afin que l'aptitude connaît le référentiel de packages Jenkins. Exécuter echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee -a /etc/apt/sources.list
.
Enfin, nous avons besoin d'aptitude pour mettre à jour le cache de ses packages disponibles, puis installer Jenkins:
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
L'installation de Jenkins prend environ cinq minutes, car il a également de nombreuses dépendances qui doivent être installées.
Après avoir installé Jenkins, ouvrez http://192.168.10.10:8080
(ou l'URL de l'hôte virtuel que vous avez configuré, par exemple homestead.app
) dans votre navigateur et vous devriez voir une page intitulée "Déverrouiller Jenkins".
Dans la machine virtuelle, exécutez la commande suivante - sudo cat /var/lib/jenkins/secrets/initialAdminPassword
, et un nombre aléatoire et une chaîne alphabétique seront imprimés sur la console. Copiez et collez la chaîne dans le champ de texte dans le navigateur et appuyez sur.
Vous verrez deux options - sélectionnez "Installation du plugin suggéré" et attendez quelques minutes jusqu'à ce que le plugin soit téléchargé et installé.
Sur l'écran suivant, entrez les détails de l'utilisateur de l'administrateur et appuyez sur "Enregistrer et fait".
Jenkins est maintenant installé et configuré!
Créez le premier travail
Après avoir configuré Jenkins, nous créerons un nouveau travail de construction qui fera ce qui suit:
- Découvrez la dernière version de
laravel/framework
- Installation des dépendances des compositeurs
- Exécuter phpunit
Cliquez sur le lien Créer un nouveau travail (ou le lien Créer un nouveau projet - ils font tous de même).
laravel
Entrez un nom
Vous verrez maintenant l'éditeur de configuration pour le travail. Faites défiler jusqu'à la section Pipeline et entrez le script suivant:
sudo apt-get update && sudo apt-get install jenkins
Appuyez sur "Enregistrer". Vous serez redirigé vers la page Présentation du travail et après quelques secondes, vous verrez le travail commencer. Si cela ne démarre pas, cliquez simplement sur le lien Build Now dans le menu de gauche.
La vue de phase sera mise à jour lorsque chaque phase démarre et se termine lorsque nous définissons dans le script de pipeline.
Si vous cliquez sur une étape, une superposition apparaîtra avec la sortie du journal pour cette étape, ce qui est très utile pour le débogage. Alternativement, vous pouvez cliquer sur le travail dans le menu à gauche et cliquer sur la console.
Tous les travaux Jenkins ont leur propre espace de travail, qui est une zone où vous pouvez créer des fichiers temporaires en toute sécurité dont vous pourriez avoir besoin dans la zone de construction. L'emplacement de l'espace de travail pour ce travail se trouve dans /var/lib/jenkins/workspace/laravel
. Par défaut, Jenkins n'efface pas cet espace de travail pour chaque version. Si vous devez le faire, vous pouvez ajouter une phase au début du script de pipeline comme suit:
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
jenkinsfile
Pour notre premier emploi, nous avons édité le script de pipeline dans l'interface des paramètres du travail. Cependant, il serait plus utile d'enregistrer ce script dans le contrôle de version avec notre code.
À l'aide du pipeline de Jenkins, vous pouvez écrire le pipeline comme un script JenkinsFile dans le répertoire racine du référentiel de code et il sera découvert et exécuté. Son concept est similaire à un fichier .travis.yml
ou .circleci.yml
que vous connaissez peut-être déjà.
Sur la page laravel/framework
GitHub Project, cliquez sur le bouton "Fork" dans le coin supérieur droit, puis cliquez sur le profil dans la fenêtre contextuelle.
Créez une nouvelle branche nommée jenkinsfile
puis créez un nouveau fichier (vous pouvez le faire directement dans GitHub et vous n'avez pas à cloner le référentiel si vous n'en avez pas besoin).
Entrez le script suivant et soumettez le fichier:
sudo apt-get update && sudo apt-get install jenkins
Revenez maintenant à Jenkins et cliquez sur le bouton "Configuration" dans le menu à gauche. Faites défiler jusqu'à la section Pipeline et mettez à jour le menu déroulant de définition du script de pipeline à SCM.
Entrez les détails du référentiel que vous avez fourché et cliquez sur Enregistrer.
Sur l'écran Présentation du travail, cliquez maintenant sur le menu à gauche. Vous devriez avoir une construction réussie.
Projet de pipelines multi-branches
La plupart des projets logiciels utilisent plusieurs branches dans le référentiel pour définir différentes étapes du projet. Par exemple:
- La branche maître représente la version de production actuelle
- Développer la branche représente la version temporaire actuelle
- La fonctionnalité de fonctionnalité / new-profile-Page peut représenter les fonctions continues
Pour chaque branche, vous souhaiterez peut-être exécuter de nombreuses opérations personnalisées - par exemple, chaque fois qu'il y a un engagement de la branche maître ou de développement, vous souhaitez exécuter des tests d'unité et d'intégration complets, tandis que sur toutes les autres succursales, seuls les tests d'unités sont assez.
JenkinsFile est écrit dans le langage de programmation Groovy, ce qui signifie que nous avons un langage de script complet à utiliser.
Dans cet exemple, j'ai ajouté une instruction IF pour vérifier le nom de la branche;
Après, il y a une instruction Switch qui crée une archive de déploiement différente et le enregistre au service de déploiement de code basé sur le nom de la branche (dans cet exemple, j'ai démontré comment cela fonctionnera avec le service CodeDeploy d'Amazon Web Service).
node { stage("composer_install") { sh 'composer install' } stage("php_lint") { sh 'find . -name "*.php" -print0 | xargs -0 -n1 php -l' } stage("phpunit") { sh 'vendor/bin/phpunit' } stage("codeception") { sh 'vendor/bin/codecept run' } }
Les travaux de pipeline multi-branchés sont également faciles à configurer - lors de la création d'un projet, sélectionnez "Pipeline multi-branché" comme type:
Ensuite, dans l'écran de configuration, définissez le menu déroulant de définition du pipeline sur le script de pipeline dans SCM et entrez les détails du référentiel.
chaque fois que l'option "Brand Index" est exécutée (elle remplace l'élément de menu "Build Now" dans le travail), Jenkins itérera récursivement sur chaque branche du référentiel et pour chaque branche avec un JenkinsFile qui a récemment changé, un La nouvelle construction pour cette branche sera exécutée.
aller un peu plus loin
La popularité de Jenkins est en grande partie due à son vaste écosystème de plugin.
Sur l'écran d'accueil de Jenkins, cliquez sur Gérer Jenkins dans le menu à gauche, puis cliquez sur Plugin Manager.
Vous pouvez installer et configurer des dizaines de plug-ins, du test de plug-ins à l'intégration avec les services cloud.
Par exemple, si votre équipe utilise Slack, vous pouvez activer le plugin de notification Slack. Il est configuré dans l'écran principal des paramètres Jenkins ("Gérer Jenkins" -> "Configurer le système") et le message Slack peut ensuite être envoyé dans le cadre du script de pipeline:
sudo apt-get update && sudo apt-get install jenkins
Lorsque Jenkins est opérationnel sur le serveur, le travail peut être facilement configuré pour créer (ou exécuter automatiquement les index de branche) chaque fois qu'un engagement est poussé vers le référentiel.
Pour les projets GitHub, assurez-vous que le plugin GitHub est installé et activé, puis activez l'intégration avec le service "Jenkins (GitHub Plugin)" dans les paramètres du référentiel GitHub.
Pour Bitbucket, c'est un peu plus compliqué, et j'ai détaillé les étapes requises sur mon blog.
Vous devez également vous assurer que le serveur Jenkins est correctement protégé - les utilisateurs peuvent être créés manuellement dans Jenkins, une authentification déléguée à GitHub ou Bitbucket en utilisant OAuth ou connecté Jenkins au répertoire LDAP de votre organisation. Encore une fois, Jenkins doit toujours être exécuté sur SSL afin que l'accès à Jenkins ne puisse pas être facilement intercepté.
L'installation de Jenkins est également livrée avec un "générateur d'exnippet de code" qui vous permet d'afficher toutes les fonctions de pipeline activées (par exemple, nous avons déjà utilisé SH, SlackSennd, Deletedir () et SCM). Vous pouvez y trouver un lien dans le menu de gauche de l'écran Présentation du travail.
Résumé
Jenkins est un outil très puissant qui peut aider à améliorer la fiabilité de votre logiciel et à vous faire économiser, ainsi qu'à votre équipe, beaucoup de temps. Les humains sont très mauvais pour effectuer des tâches répétitives encore et encore, mais les ordinateurs sont bons dans ce domaine.
Si votre équipe ralentit en raison des tests qui durent plus de cinq minutes, désinstallez le test à Jenkins.
Jenkins peut le faire si vous souhaitez générer automatiquement des archives de déploiement lorsqu'une nouvelle version de production ou de mise en scène est disponible.
Si vous souhaitez garder un œil sur la qualité du code et découvrir les régressions avant que les clients ne le découvrent, Jenkins est prêt à aider.
Veuillez laisser les questions ou commentaires ci-dessous et faites-nous savoir votre pipeline Jenkins le plus créatif!
Si vous aimez cet article, vous pouvez également trouver le suivant utile:
- Test de cyprès: un guide pour exécuter les applications Web
- Introduire des tests unitaires Python en utilisant unittest et pytest
- Comment tester les composants React en utilisant la plaisanterie
- Apprenez des tests de bout en bout avec des marionnettistes
- Trois méthodes de test continu mains libres
Les questions fréquemment posées sur Jenkins à l'aide du pipeline pour les tests automatisés
Quels sont les avantages de l'utilisation de Jenkins pour des tests automatisés?
Jenkins est un outil open source populaire qui offre de nombreux avantages pour les tests automatisés. Premièrement, il fournit une intégration continue et une livraison continue (CI / CD), permettant aux développeurs d'intégrer les changements dans les projets plus fréquemment. Cela conduit à la détection précoce de problèmes potentiels et réduit le temps de réparation. Deuxièmement, Jenkins prend en charge divers plug-ins, ce qui les rend hautement personnalisables et adaptables aux différents besoins du projet. Troisièmement, il fournit des résultats de test en temps réel et des rapports détaillés, ce qui aide à identifier et à résoudre rapidement les problèmes. Enfin, Jenkins prend en charge le pipeline, un ensemble d'outils qui permettent une livraison simple à complexe du pipeline «en tant que code» via un langage spécifique au domaine du pipeline (DSL).
Comment configurer Jenkins pour les tests PHP?
La configuration des Jenkins pour les tests PHP implique plusieurs étapes. Tout d'abord, vous devez installer Jenkins sur le serveur. Après l'installation, vous pouvez installer des plug-ins requis pour les tests PHP, tels que le plug-in PHP, le plug-in phpunit, etc. Après avoir installé le plugin, vous pouvez créer un nouveau travail Jenkins et le configurer pour votre projet PHP. Cela comprend la mise en place de la gestion du code source, des déclencheurs de construction et des étapes de construction. Dans l'étape de construction, vous pouvez spécifier la commande pour exécuter le test PHP. Une fois la configuration terminée, le travail peut être exécuté et Jenkins effectuera le test et fournira un rapport détaillé.
Comment les Jenkins testent-ils avec PHPUNIT?
Jenkins travaille avec PHPUnit en effectuant des tests PHPUnit dans les travaux de Jenkins. La commande phpunit peut être spécifiée dans l'étape de construction du travail Jenkins. Lorsque le travail est exécuté, Jenkins effectuera le test PHPUnit et capturera les résultats. Les résultats sont ensuite affichés dans le tableau de bord Jenkins, fournissant un rapport détaillé sur l'exécution du test. Cela comprend le nombre de tests exécutés, passés, échoués et sautés, ainsi que la couverture du code.
Quel est le flux de travail correct pour une application Jenkins PHP à l'aide de phpunit?
Le flux de travail correct pour une application Jenkins PHP utilisant PHPUnit comprend généralement les étapes suivantes: Tout d'abord, consultez le code source du système de contrôle de version. Ensuite, installez toutes les dépendances, telles que Composer pour PHP Project. Ensuite, exécutez le test PHPUnit. Les résultats des tests sont ensuite collectés et affichés dans le tableau de bord Jenkins. Si un test échoue, la construction est marquée comme échec. Sinon, la construction est marquée comme réussie. Ce flux de travail peut être automatisé à l'aide du pipeline Jenkins pour une intégration et une livraison continues.
Comment analyser les résultats phpunit et junit dans Jenkins?
Les résultats de phpunit et Junit peuvent être analysés dans Jenkins à l'aide du plugin JUnit. Après avoir exécuté le test PHPUnit, vous pouvez générer un rapport XML JUnit. Le plugin Junit à Jenkins peut ensuite analyser ce rapport. Dans le fonctionnement post-construction d'un travail de Jenkins, vous pouvez ajouter l'opération "Publier Junit Test Results Report" et spécifier l'emplacement du rapport JUnit XML. Jenkins analyse ensuite le rapport et affiche les résultats dans le tableau de bord. Cela comprend le nombre de tests effectués, passés, échoués et sautés, ainsi que la durée et les tendances du test.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Les raisons de la défaillance de la phpsession comprennent les erreurs de configuration, les problèmes de cookies et l'expiration de session. 1. Erreur de configuration: vérifiez et définissez la session correcte.save_path. 2.Cookie Problème: assurez-vous que le cookie est correctement réglé. 3.Session Expire: Ajustez la valeur de session.gc_maxlifetime pour prolonger le temps de session.

Les méthodes pour déboguer les problèmes de session en PHP incluent: 1. Vérifiez si la session est démarrée correctement; 2. Vérifiez la livraison de l'ID de session; 3. Vérifiez le stockage et la lecture des données de session; 4. Vérifiez la configuration du serveur. En sortissant l'ID de session et les données, en affichant le contenu du fichier de session, etc., vous pouvez diagnostiquer et résoudre efficacement les problèmes liés à la session.

Plusieurs appels vers session_start () se traduiront par des messages d'avertissement et d'éventuels remplacements de données. 1) PHP émettra un avertissement, ce qui incite la session à démarrer. 2) Il peut provoquer un écrasement inattendu des données de session. 3) Utilisez session_status () pour vérifier l'état de la session pour éviter les appels répétés.

La configuration du cycle de vie de session dans PHP peut être réalisée en définissant session.gc_maxlifetime et session.cookie_lifetime. 1) Session.gc_maxlifetime contrôle le temps de survie des données de session côté serveur, 2) Session.cookie_lifetime contrôle le cycle de vie des cookies des clients. Lorsqu'il est réglé sur 0, le cookie expire lorsque le navigateur est fermé.

Les principaux avantages de l'utilisation des sessions de stockage de la base de données incluent la persistance, l'évolutivité et la sécurité. 1. Persistance: Même si le serveur redémarre, les données de session peuvent rester inchangées. 2. Évolutivité: applicable aux systèmes distribués, garantissant que les données de session sont synchronisées entre plusieurs serveurs. 3. Sécurité: La base de données fournit un stockage crypté pour protéger les informations sensibles.

L'implémentation de traitement personnalisé de session dans PHP peut être effectué en implémentant l'interface SessionHandlerInterface. Les étapes spécifiques incluent: 1) la création d'une classe qui implémente SessionHandlerInterface, telles que CustomSessionHandler; 2) réécrire des méthodes dans l'interface (telles que l'ouverture, la fermeture, la lecture, l'écriture, la détruire, GC) pour définir le cycle de vie et la méthode de stockage des données de session; 3) Enregistrez un processeur de session personnalisé dans un script PHP et démarrez la session. Cela permet de stocker des données dans des supports tels que MySQL et Redis pour améliorer les performances, la sécurité et l'évolutivité.

SessionID est un mécanisme utilisé dans les applications Web pour suivre l'état de la session utilisateur. 1. Il s'agit d'une chaîne générée aléatoire utilisée pour maintenir les informations d'identité de l'utilisateur lors de plusieurs interactions entre l'utilisateur et le serveur. 2. Le serveur génère et l'envoie au client via des cookies ou des paramètres d'URL pour aider à identifier et à associer ces demandes dans plusieurs demandes de l'utilisateur. 3. La génération utilise généralement des algorithmes aléatoires pour assurer l'unicité et l'imprévisibilité. 4. Dans le développement réel, les bases de données en mémoire telles que Redis peuvent être utilisées pour stocker les données de session pour améliorer les performances et la sécurité.

La gestion des séances dans des environnements sans état tels que les API peut être réalisée en utilisant JWT ou des cookies. 1. JWT convient à l'état sans état et à l'évolutivité, mais il est de grande taille en ce qui concerne les mégadonnées. 2.La cookies est plus traditionnel et facile à mettre en œuvre, mais ils doivent être configurés avec prudence pour assurer la sécurité.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Version Mac de WebStorm
Outils de développement JavaScript utiles

Dreamweaver CS6
Outils de développement Web visuel

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.
