Table des matières
Démarrer le réglage
Intégrer les circleci
Orbes
Flux de travail
Opération
Téléchargez notre couverture de code sur Coveralls
Tout assembler
Maison interface Web tutoriel CSS Une configuration d'intégration et de déploiement continu avec circleci et couvertures

Une configuration d'intégration et de déploiement continu avec circleci et couvertures

Mar 31, 2025 pm 02:31 PM

Une configuration d'intégration et de déploiement continu avec circleci et couvertures

L'intégration continue (IC) et le déploiement continu (CD) sont des pratiques de développement cruciales, en particulier pour les équipes. Quelle que soit la taille du projet, les erreurs sont susceptibles de se produire. Cependant, si un processus CI / CD avec de bons tests est configuré, il est plus facile de détecter et de corriger ces erreurs.

Cet article expliquera comment vérifier la couverture des tests, configurer un processus CI / CD à l'aide de Circleci et Coveralls, et déployer des applications Vue à Heroku. Même si vous n'utilisez pas ces outils, les concepts présentés dans cet article sont toujours utiles pour votre configuration. Par exemple, Vue peut être remplacé par d'autres frameworks JavaScript, et les principes de base s'appliquent toujours.

Avant de commencer, apprenez quelques termes:

  • Intégration continue: les développeurs soumettent fréquemment du code, effectuant divers processus de test et de création avant de fusionner ou de déployer.
  • Déploiement continu: pratique qui rend les logiciels toujours déployables dans les environnements de production.
  • Couverture de test: une mesure utilisée pour décrire le degré de tests logiciels. Un programme avec une couverture élevée signifie que la majeure partie du code a été testée.

Pour tirer le meilleur parti de ce tutoriel, vous devriez remplir les conditions suivantes:

  • Compte Circleci: Nous utiliserons Circleci, la plate-forme CI / CD pour le déploiement automatisé (y compris les applications de test et de création avant le déploiement).
  • Compte GitHub: nous stockons des projets et leurs tests dans le référentiel.
  • Compte Heroku: Nous utiliserons la plate-forme Heroku pour déployer et étendre les applications.
  • Compte CoverAlls: CoverAlls est une plate-forme pour enregistrer et afficher la couverture du code.
  • NYC: Nous utiliserons ce package pour vérifier la couverture du code.

Un référentiel contenant les exemples de cet article est disponible sur GitHub.

Démarrer le réglage

Tout d'abord, installez NYC dans le dossier du projet:

 <code>npm i nyc</code>
Copier après la connexion

Ensuite, nous devons modifier le script dans package.json pour vérifier la couverture du test. Si nous essayons de vérifier la couverture lors de l'exécution de tests unitaires, nous devons modifier le script de test:

 <code>"scripts": { "test:unit": "nyc vue-cli-service test:unit", },</code>
Copier après la connexion

Cette commande suppose que nous utilisons Vue pour créer l'application en référence à vue-cli-service . Cette commande doit être modifiée pour refléter le cadre utilisé dans le projet.

Si nous essayons de vérifier la couverture séparément, nous devons ajouter une autre ligne au script:

 <code>"scripts": { "test:unit": "nyc vue-cli-service test:unit", "coverage": "nyc npm run test:unit" },</code>
Copier après la connexion

Nous pouvons maintenant vérifier la couverture en utilisant la commande du terminal:

 <code>npm run coverage</code>
Copier après la connexion

Ensuite, nous installerons CoverAlls, qui est responsable de la déclaration et de l'affichage de la couverture:

 <code>npm i coveralls</code>
Copier après la connexion

Maintenant, nous devons ajouter des couvertures comme un autre script dans package.json . Ce script nous aide à enregistrer le rapport de couverture de test sur Coveralls.

 <code>"scripts": { "test:unit": "nyc vue-cli-service test:unit", "coverage": "nyc npm run test:unit", "coveralls": "nyc report --reporter=text-lcov | coveralls" },</code>
Copier après la connexion

Allons au tableau de bord Heroku et inscrivons notre application là-bas. Nous utiliserons Heroku pour l'héberger.

Nous utiliserons Circleci pour automatiser notre processus CI / CD. Continuez à visiter le tableau de bord Circleci pour mettre en place nos projets.

Nous pouvons accéder à notre projet via l'onglet Projets dans la barre latérale Circleci, où nous devrions voir une liste de projets dans notre organisation GitHub. Cliquez sur le bouton Définir le projet. Cela nous amènera à une nouvelle page pour nous demander si nous voulons utiliser une configuration existante. Nous avons notre propre configuration, alors sélectionnons l'option "Utiliser la configuration existante".

Après cela, nous irons au pipeline sélectionné. Très bien! Nous avons fait le travail de connexion de notre référentiel à Circleci. Maintenant, ajoutons nos variables d'environnement à notre projet Circleci.

Pour ajouter des variables, nous devons naviguer vers les paramètres du projet.

Les paramètres du projet ont une onglet Variables d'environnement dans la barre latérale. C'est là que nous voulons stocker des variables.

Variables requises pour ce tutoriel:

  • Nom de l'application HEROKU: HEROKU_APP_NAME
  • Notre clé API Heroku: HEROKU_API_KEY
  • COVERALLS REPOSERTY TOKEN: COVERALLS_REPO_TOKEN

La clé de l'API Heroku se trouve dans la section des comptes du tableau de bord Heroku.

Le jeton de référentiel CoverAlls est situé dans le compte CoverAlls du référentiel. Tout d'abord, nous devons ajouter le référentiel à Coveralls en sélectionnant le référentiel GitHub dans la liste des référentiels disponibles.

Nous avons maintenant ajouté le référentiel à Coveralls. Nous pouvons obtenir le jeton de référentiel en cliquant sur le référentiel.

Intégrer les circleci

Nous avons connecté Circle CI à notre référentiel GitHub. Cela signifie que Circleci sera informé lorsque des modifications ou des actions se produisent dans le référentiel GitHub. Ce que nous devons faire maintenant, c'est effectuer les étapes pour informer Circleci sur les actions que nous voulons qu'elle exécute après avoir détecté un changement de référentiel.

Dans le dossier racine du projet local, créons un dossier appelé .circleci et créons un fichier appelé config.yml . C'est là que se trouvent toutes les opérations de circleci.

Voici le code contenu dans le fichier:

 Version: 2.1
Orbes:
  Node: circleci / [e-mail protégé] # Orb de nœud
  Heroku: Circleci / [Protégé par e-mail] # HEROKU ORB
  CoverAlls: CoverAlls / [Protégé par e-mail] # CoverAlls Orb
flux de travail:
  HEROKU_DEPLOY:
    Emplois:
      - construire
      - Heroku / Deploy-via-git: # Utilisez des exigences de travail préconfigurées:
          - construire
        Filtres:
          Branches:
            Seulement: maître
Emplois:
  construire:
    docker:
      - Image: circleci / nœud: 10.16.0
    Mesures:
      - vérifier
      - restore_cache:
        clé: dépendance-cache - {{chèque "package.json"}}
      - courir:
        Nom: Installer-NPM-Dépendances
        Commande: Installation de NPM
      - Save_Cache:
        clé: dépendance-cache - {{chèque "package.json"}}
        Chemins:
          - ./Node_Modules
      - Exécuter: # Exécuter Nom du test: Test
        Commande: NPM Run Test: Unité
      - Exécuter: # Exécuter Nom du rapport de la couverture du code: Coverage de code
        Commande: NPM Run CoverAlls
      - Exécuter: # Exécuter le nom de la construction: build
        Commande: NPM Run Build
      # - Coveralls / Téléchargement
Copier après la connexion

Ceci est un grand morceau de code. Décomposons-le pour que nous sachons ce que cela fait.

Orbes

 Orbes:
  Node: circleci / [e-mail protégé] # Orb de nœud
  Heroku: Circleci / [Protégé par e-mail] # HEROKU ORB
  CoverAlls: CoverAlls / [Protégé par e-mail] # CoverAlls Orb
Copier après la connexion

Orbs est un package open source qui simplifie l'intégration des logiciels et des packages entre les projets. Dans notre code, nous soulignons les ORB pour le processus CI / CD. Nous avons référencé Node Orb car nous utilisons JavaScript. Nous citons Heroku parce que nous utilisons le flux de travail Heroku pour un déploiement automatisé. Enfin, nous référentes les couvertures ORB car nous prévoyons d'envoyer des résultats de couverture sur les couvertures.

Heroku et Coverall Orbes sont des orbes externes. Donc, si nous exécutons l'application maintenant via des tests, ceux-ci déclencheront des erreurs. Pour éliminer l'erreur, nous devons naviguer vers la page Paramètres de l'organisation dans notre compte Circleci.

Ensuite, accédez à l'onglet de sécurité et permettons des orbes non authentifiés:

Flux de travail

 flux de travail:
  HEROKU_DEPLOY:
    Emplois:
      - construire
      - Heroku / Deploy-via-git: # Utilisez des exigences de travail préconfigurées:
          - construire
        Filtres:
          Branches:
            Seulement: maître
Copier après la connexion

Les workflows sont utilisés pour définir des collections de travaux et les exécuter séquentiellement. Cette partie du code est responsable de l'hébergement automatisé. Il dit à Circleci de construire le projet, puis de le déployer. requires signifie que heroku/deploy-via-git doit être construit-complet - ce qui signifie qu'il attendra que la construction se termine avant le déploiement.

Opération

 Emplois:
  construire:
    docker:
      - Image: circleci / nœud: 10.16.0
    Mesures:
      - vérifier
      - restore_cache:
          clé: dépendance-cache - {{chèque "package.json"}}
      - courir:
          Nom: Installer-NPM-Dépendances
          Commande: Installation de NPM
      - Save_Cache:
          clé: dépendance-cache - {{chèque "package.json"}}
          Chemins:
            - ./Node_Modules
Copier après la connexion

Un travail est une collection d'étapes. Dans cet extrait de code, nous avons restauré les dépendances installées lors du processus de construction précédent via restore_cache .

Après cela, nous installons les dépendances non achetées, puis les enregistrons afin que nous n'ayons pas besoin de les réinstaller lors de la prochaine version.

Nous disons ensuite à Circleci d'exécuter les tests que nous avons écrits pour le projet et de vérifier la couverture des tests du projet. Notez que les dépendances en cache facilitent les constructions ultérieures car nous stockons les dépendances, il n'est donc pas nécessaire de les installer lors de la version suivante.

Téléchargez notre couverture de code sur Coveralls

 - Exécuter: # Exécuter Nom du test: Test
    Commande: NPM Run Test: Unité
  - Exécuter: # Exécuter Nom du rapport de la couverture du code: Coverage de code
    Commande: NPM Run CoverAlls
# - Coveralls / Téléchargement
Copier après la connexion

C'est la magie des couvertures parce que nous exécutons en fait des tests unitaires ici. Rappelez-vous quand nous avons ajouté la commande nyc dans test:unit du fichier package.json ? Grâce à cela, les tests unitaires offrent désormais une couverture de code.

Les tests unitaires fournissent également une couverture de code, nous les inclurons donc dans le rapport de couverture. C'est pourquoi nous appelons la commande ici.

Enfin, le code exécute le script CoverAlls que nous avons ajouté dans package.json . Ce script envoie notre rapport de couverture à Coveralls.

Vous avez peut-être remarqué que coveralls/upload est commentée. C'était à l'origine le caractère final du processus, mais à la fin, il est devenu une barrière ou une erreur dans la terminologie du développeur. Je l'ai commenté car il pourrait s'agir de la carte Trump d'un autre développeur.

Tout assembler

Regarder! Nos applications, y compris l'intégration et le déploiement continus!

L'intégration et le déploiement continus peuvent aider dans de nombreux cas. Un exemple courant est lorsque le logiciel est en phase bêta. À ce stade, de nombreuses soumissions se produiront pour de nombreuses corrections. En tant que développeur, la dernière chose que je veux faire est d'exécuter des tests manuellement et de déployer mon application manuellement après chaque petit changement. Ughhh. Je déteste la répétition!

Je ne sais pas comment vous êtes, mais je connais CI et CD depuis un certain temps, mais je trouve toujours des moyens de les mettre de côté parce qu'ils semblent trop durs ou trop longs. Mais maintenant que vous avez vu la configuration relativement simple et les avantages qui l'accompagnent, j'espère que vous serez inspiré et prêt à essayer votre propre projet en personne.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1666
14
Tutoriel PHP
1273
29
Tutoriel C#
1253
24
Une comparaison des fournisseurs de formulaires statiques Une comparaison des fournisseurs de formulaires statiques Apr 16, 2025 am 11:20 AM

Essayons de savoir un terme ici: "fournisseur de formulaire statique". Vous apportez votre HTML

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Actualités hebdomadaires de la plate-forme: attribut HTML Loading, les principales spécifications Aria et le passage de iframe à Shadow Dom Actualités hebdomadaires de la plate-forme: attribut HTML Loading, les principales spécifications Aria et le passage de iframe à Shadow Dom Apr 17, 2025 am 10:55 AM

Dans cette semaine, le Roundup des nouvelles de la plate-forme, Chrome présente un nouvel attribut pour le chargement, les spécifications d'accessibilité pour les développeurs Web et la BBC Moves

L'accord avec l'élément de section L'accord avec l'élément de section Apr 12, 2025 am 11:39 AM

Deux articles ont publié exactement le même jour:

Comment nous avons tagué Google Fonts et créé des goofont.com Comment nous avons tagué Google Fonts et créé des goofont.com Apr 12, 2025 pm 12:02 PM

Goofonts est un projet parallèle signé par un développeur-femme et un concepteur-mari, tous deux de grands fans de typographie. Nous avons marqué Google

Certains pratiques avec l'élément de dialogue HTML Certains pratiques avec l'élément de dialogue HTML Apr 16, 2025 am 11:33 AM

C'est moi qui regarde l'élément HTML pour la première fois. J'en ai été conscient depuis un certain temps, mais il ne l'a pas encore pris pour un tour. Il a un peu cool et

Multipliers multiples: cas général Multipliers multiples: cas général Apr 12, 2025 am 10:52 AM

La première partie de cette série en deux parties a expliqué comment nous pouvons obtenir un curseur à deux pouces. Maintenant, nous examinerons un cas multi-tronçon général, mais avec un autre et

Où devrait «abonner au podcast» vers le lien? Où devrait «abonner au podcast» vers le lien? Apr 16, 2025 pm 12:04 PM

Pendant un certain temps, iTunes était le grand chien du podcasting, donc si vous avez lié "Abonnez-vous au podcast" pour aimer:

See all articles