window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() CircleCI - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2019-07-23
Développement de logiciels

CircleCI

The Codest

Damian Watroba

Software Engineer

CircleCI est un outil très simple qui est bien configuré comme superviseur de nos projets. Mais la configuration elle-même est-elle simple ? Cela dépend bien sûr de la complexité du projet. Dans notre cas (mono repo), cela s'est avéré plus difficile que prévu.

La configuration des projets Ruby on Rails n'est pas compliquée, et la la documentation décrit précisément chaque élément du fichier config.yml. Cependant, j'aimerais me concentrer sur les outils circleci qui sont utilisés pour nous aider à garder le fichier config.yml. code nettoyer et garantir les bonnes pratiques.

RUBOCOP

Il est probable que RuboCope n'ait pas besoin d'être présenté, cependant, pour ceux qui ne le connaissent pas, il s'agit d'un analyseur statique de code Ruby et d'un formateur. Si vous utilisez déjà rubocop dans votre projetIl suffit d'ajouter CircleCI au fichier de configuration :

 exécuter :
    nom : Rubocop
    commande : bundle exec rubocop

ESLINT

ESLint est un outil permettant d'identifier et de signaler les schémas trouvés dans les fichiers ECMAScript ou JavaScript afin de rendre le code plus cohérent et d'éviter les erreurs.

courir :
    name : Eslint
    commande : npm run eslint

RSPEC

Dans RSpec, les tests ne sont pas seulement des scripts qui vérifient le code de l'application, ce sont aussi des explications détaillées de la manière dont l'application doit se comporter, exprimées dans un langage simple :

exécuter :
    nom : RSpec
    command : |
      mkdir /tmp/test-results
      TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
        circleci tests split --split-by=timings)"
      bundle exec rspec
        --format progress
        --format RspecJunitFormatter
        --out /tmp/test-results/rspec.xml
        --format progress
        $TEST_FILES

- store_test_results :
    path : /tmp/test-results

Dans le cas de RSpec, nous sauvegardons le résultat du test dans un catalogue préalablement créé /tmp/test-results dans le fichier rspec.xml, puis, à l'aide de la commande magasintestrésultats nous stockons un catalogue donné. Maintenant, l'onglet Insights nous donnera accès à des informations telles que le temps médian de compilation, le temps de la dernière compilation ou le taux de réussite. Vous pouvez en savoir plus sur l'onglet Insights ici. Si nous voulons stocker le fichier rspec.xml en tant qu'"artefact", nous devons ajouter l'élément store_artifacts dans notre fichier de configuration.

 store_artifacts :
    path : /tmp/test-results

BRAKEMAN

Brakeman est un outil d'analyse statique qui vérifie les vulnérabilités de sécurité des applications Ruby on Rails. Par défaut, Brakeman renvoie un code de sortie non nul si des avertissements de sécurité sont détectés ou si des erreurs d'analyse sont rencontrées. Nous nous sommes donc concentrés sur les erreurs critiques et les avertissements ont été désactivés.

courir :
    name : Brakeman
    commande : bundle exec brakeman --no-exit-on-warn

Si nous voulons également stocker le résultat de l'analyse de la même manière que RSpec, notre configuration ressemblera à ceci, et nous aurons accès à notre fichier dans l'onglet Artifacts.

 courir :
    nom : Brakeman
    command : |
      mkdir /tmp/brakeman
      bundle exec brakeman --no-exit-on-warn -o /tmp/brakeman/output.json

- store_artifacts :
    path : /tmp/brakeman

RUBYCRITIC

RubyCritic est une gem qui utilise des gemmes d'analyse statique, comme Reek, Flay et Flog, pour fournir un rapport sur la qualité de votre code. Le rapport contient une note A / B / C / D / F, chaque fichier de notre projet que nous voulons faire analyser et les endroits précis qui ont besoin d'être améliorés, ainsi que de la documentation pour chaque alerte (ex : Trop de méthodes). Cet outil joue le rôle de consultant dans le projet. Sur la base du rapport reçu, la décision finale de savoir si notre code doit effectivement être corrigé dépend du développeur. Dans notre configuration circleci, un job séparé est assigné à la préparation du rapport et à l'envoi d'un commentaire spécial avec le résultat sur github.

La configuration de base de rubycritic n'est pas différente des précédentes.

 exécuter :
    nom : Rubycritic
    commande : bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

- store_artifacts :
    path : /tmp/rubycritic

Comme d'habitude, nous exécutons le bundle avec des informations sur le répertoire que nous voulons scanner ./app, à quel endroit nous voulons sauvegarder le résultat -p /tmp/rubycritic (rubycritic crée automatiquement un répertoire dans lequel nous stockerons notre rapport), dans quel format -f json et l'option -no- browser. Nous utilisons également la gemme circleci-coverage_reporterqui, après le scan, met un commentaire sur github dans notre pull request avec un lien vers le rapport et un pourcentage d'évaluation des fichiers scannés.

Rubis

Pour que la gem ci-dessus fonctionne correctement avec circleci, nous devons l'ajouter à notre projet et générer deux clés (l'une d'elles est circleci, la seconde est github).

Installation standard :

  • Fichier de gemmes
    gem 'circleci-coverage_reporter' (en anglais)
  • Fichier Rake
    require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
  • .config.yml
 exécuter :
    nom : Exécuter Rubycritic
    command : bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser

 store_artifacts :
    path : /tmp/rubycritic

 run :
    name : Rubycritic notification
    commande : bundle exec rake circleci:report_coverage

Nous devons maintenant générer deux clés :

COVER_REPORTER_CIRCLECI_TOKEN

Jeton API

Section 'settings' de notre projet. Après avoir choisi "Create Token", changez le champ d'application pour "all" et remplissez l'étiquette du token. Le jeton pour l'API sera généré après avoir cliqué sur

COVER_REPORTER_VCS_TOKEN

jeton

Champ d'application de la clé de repo

Après avoir généré les clés, nous devons les ajouter à nos variables d'environnement dans la section Paramètres:

variable d'environnement
ajouter une variable

Exemple de configuration :

emplois :
  build :
    docker :
      - image : circleci/ruby:2.5.1-node-browsers
      environnement :
        BUNDLER_VERSION : 2.0.1
        BUNDLE_PATH : /bundle
        BUNDLE_JOBS : 4
        RAILS_ENV : test
    - image : circleci/postgres:10.1-alpine
      environnement :
        POSTGRES_USER : postgres
        POSTGRES_DB : example_test
        POSTGRES_PASSWORD : exemple
    - image : circleci/redis:4.0.8-alpine
    répertoire_de_travail : ~/insights
    environnement :
        TZ : Europe/Warsaw
    étapes :
      - checkout
      - run :
          name : Installer la version 2.0.1 de bundler
          commande : gem install bundler -v 2.0.1
      - restore_cache :
          keys :
            - v1-ruby-dependencies-(( checksum "Gemfile.lock" ))
            - v1-ruby-dependencies-
      - run :
          name : Bundle Install
          command : bundle check || bundle install
      - save_cache :
          key : v1-ruby-dependencies-(( checksum "Gemfile.lock" ))
          chemins :
            - vendor/bundle
      - restore_cache :
          keys :
            - v1-npm-dependencies-(( checksum "package.json" ))
            - v1-npm-dependencies-
      - run :
          name : Npm Install
          command : npm install
      - save_cache :
          key : v1-npm-dependencies-(( checksum "package.json" ))
          paths :
            - ~/insights/node_modules
      - run :
        name : Database setup
        command : |
          bundle exec rake db:create
          bundle exec rake db:schema:load
      - run :
          name : Rubocop
          commande : bundle exec rubocop
      - run :
          nom : Eslint
          commande : npm run eslint
      - exécuter :
          nom : RSpec
          commande : npm run |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob "spec/_spec.rb" |
              circleci tests split --split-by=timings)"
            bundle exec rspec
              --format progress
              --format RspecJunitFormatter
              --out /tmp/test-results/rspec.xml
              --format progress
              $TEST_FILES
      - exécuter :
          name : Brakeman
          command : bundle exec brakeman --no-exit-on-warn
      - store_test_results :
          path : /tmp/test-results
  rubycritic :
    docker :
      - image : circleci/ruby:2.5.1-node-browsers
        environnement :
          BUNDLER_VERSION : 2.0.1
          BUNDLE_PATH : /bundle
          BUNDLE_JOBS : 4
          RAILS_ENV : test
          CIRCLE_ARTIFACTS : /tmp
    répertoire_de_travail : ~/insights
    étapes :
      - checkout
      - run :
          name : Installer la version 2.0.1 de bundler
          commande : gem install bundler -v 2.0.1
      - restore_cache :
          keys :
            - v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ))
            - v1-rubycritic-dependencies-
      - run :
          name : Bundle Install
          command : bundle check || bundle install
      - save_cache :
          key : v1-rubycritic-dependencies-(( checksum "Gemfile.lock" ))
          chemins :
            - vendor/bundle
      - run :
          name : Exécuter Rubycritic
          command : bundle exec rubycritic ./app -p /tmp/rubycritic -f json -f html --no-browser
      - store_artifacts :
          path : /tmp/rubycritic
      - run :
          name : Rubycritic notification
          commande : bundle exec rake circleci:report_coverage

workflows :
  version : 2
  build_and_rubycritic :
    jobs :
      - build
      - rubycritic :
          requiert :
            - build

Sources :

  • Liste des images docker disponibles pour CircleCi

    • Images Docker
  • CircleCi

    • Configuration CircleCi

      • Exemple de configuration
      • Collecte des données d'essai
      • Utiliser Insights
      • Stockage des artefacts de construction
  • Gemmes ou outils usagés

    • RuboCop

      • ESlint
      • RSpec
      • Freineur
      • RubyCtritic
      • Rapport sur la couverture du cercle

En savoir plus :

  • Bonnes pratiques de Codest pour la création de logiciels : la documentation du projet
  • Comment écrire un code de qualité ?
  • Principe d'ouverture-fermeture. Dois-je l'utiliser un jour ?

Articles connexes

Développement de logiciels

Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

LE CODEST
Développement de logiciels

Les 10 premières entreprises de développement de logiciels basées en Lettonie

Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

thecodest
Solutions pour les entreprises et les grandes entreprises

L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

thecodest
Développement de logiciels

Le guide ultime de l'externalisation en Pologne

L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

TheCodest
Solutions pour les entreprises et les grandes entreprises

Le guide complet des outils et techniques d'audit informatique

Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

The Codest
Jakub Jakubowicz CTO & Co-Fondateur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench