CircleCI är ett mycket enkelt verktyg som är välkonfigurerat som övervakare av våra projekt. Men är själva konfigurationen enkel? Detta beror naturligtvis på hur komplext projektet är. I vårt fall (mono repo) visade det sig vara svårare än väntat.
Konfigurationen för Ruby on Rails-projekt är inte komplicerad, och dokumentation beskriver varje element i config.yml på ett korrekt sätt. Jag skulle dock vilja fokusera på de cirkelci-verktyg som används för att hjälpa oss att hålla kod rengöra och säkerställa god praxis.
Det är troligt att RuboCope inte behöver någon introduktion, men för dem som inte är bekanta med det är det en statisk Ruby-kodanalysator och formaterare. Om du redan använder rubocop i din projektär det bara att lägga till CircleCI i konfigurationsfilen:
ESLint är ett verktyg för att identifiera och rapportera mönster som finns i ECMAScript- eller JavaScript koden, för att göra koden mer konsekvent och undvika fel.
I RSpec är tester inte bara skript som verifierar applikationskoden, de är också detaljerade förklaringar av hur applikationen ska bete sig, uttryckta på enkel engelska:
När det gäller RSpec sparar vi testresultatet i en tidigare skapad katalog /tmp/test-results i filen rspec.xml, och sedan använder vi butiktestresultat nyckel lagrar vi en viss katalog. Nu ger fliken Insikter oss tillgång till information som mediankompileringstiden, tiden för den senaste kompileringen eller framgångsgraden. Du kan läsa mer om fliken Insikter här. Om vi vill lagra filen rspec.xml som en "artefakt" måste vi lägga till lagra_artefakter nyckel i vår konfigurationsfil.
Brakeman är ett statiskt analysverktyg som kontrollerar Ruby on Rails-applikationer för säkerhetsproblem. Som standard kommer Brakeman att returnera en utgångskod som inte är noll om säkerhetsvarningar upptäcks eller om skanningsfel påträffas. Därför fokuserade vi bara på kritiska fel och varningarna stängdes av.
Om vi också vill lagra skanningsresultatet på samma sätt som RSpec kommer vår konfiguration att se ut så här, och vi kommer att ha tillgång till vår fil på fliken Artifacts.
RubyCritic är en pärla som använder pärlor för statisk analys, till exempel Reek, Flay och Flog, för att ge en rapport om kvaliteten på din kod. Rapporten innehåller ett A / B / C / D / F-betyg, varje fil i vårt projekt som vi vill ha skannat och exakta platser som behöver förbättras, och dokumentation med varje varning (t.ex: Förmånliga metoder). Detta verktyg fungerar som en konsult i projektet. På grundval av den mottagna rapporten beror det slutliga beslutet om huruvida vår kod faktiskt behöver korrigeras på utvecklaren. I vår circleci-konfiguration tilldelas ett separat jobb som ansvarar för att förbereda rapporten och skicka en särskild kommentar med resultatet på github.
Den grundläggande konfigurationen av rubycritic skiljer sig inte från de tidigare.
Som standard kör vi igenom paketet med information om vilken katalog vi vill skanna ./app, på vilken plats vi vill spara resultatet -p /tmp/rubycritic (rubycritic skapar automatiskt en katalog där vi ska lagra vår rapport), i vilket format -f json och alternativet -no- browser. Vi använder också gemen cirkelci-täckning_rapportörsom efter skanningen lägger till en kommentar på github i vår pull request med en länk till rapporten och en procentuell bedömning av de skannade filerna.
För att ovanstående pärla ska fungera korrekt tillsammans med circleci måste vi lägga till den i vårt projekt och generera två nycklar (en av dem är circleci, den andra är github).
Standardinstallation:
Gemfil gem 'circleci-coverage_reporter'
Rakefil require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
Avsnittet "Inställningar" i vårt projekt. När du har valt "Skapa Token" ändrar du scope till "alla" och fyller i Token-etiketten. Token till API kommer att genereras efter att du klickat på
TÄCKNING_RAPPORTÖR_VCS_TOKEN
Omfattning för nyckel till repo
När vi har genererat nycklarna måste vi lägga till dem i våra miljövariabler i Inställningar: