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.
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 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.
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 :
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.
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.
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.
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.
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.
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
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
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: