CircleCI on hyvin yksinkertainen työkalu, joka on hyvin konfiguroitu projektiemme valvojaksi. Mutta onko itse konfigurointi yksinkertaista? Tämä riippuu tietenkin projektin monimutkaisuudesta. Meidän tapauksessamme (mono repo) se osoittautui odotettua vaikeammaksi.
Ruby on Rails-projektien konfigurointi ei ole monimutkaista ja dokumentaatio kuvaa tarkasti config.yml-tiedoston jokaisen elementin. Haluaisin kuitenkin keskittyä circleci-työkaluihin, joita käytetään auttamaan meitä säilyttämään koodi puhdistaa ja varmistaa hyvät käytännöt.
On todennäköistä, että RuboCope ei kaipaa esittelyä, mutta niille, jotka eivät tunne sitä, se on staattinen Ruby-koodianalysaattori ja -muotoilija. Jos käytät jo rubocopia omassa projekti, yksinkertaisesti lisää CircleCI asetustiedostoon:
ESLint on työkalu, jolla voidaan tunnistaa ja raportoida ECMAScript- tai ECMAScript-ohjelmista löytyviä malleja. JavaScript koodin johdonmukaisuuden parantamiseksi ja virheiden välttämiseksi.
RSpecissä testit eivät ole vain skriptejä, jotka tarkistavat sovelluskoodin, vaan ne ovat myös yksityiskohtaisia selityksiä siitä, miten sovelluksen pitäisi käyttäytyä, yksinkertaisella englannilla ilmaistuna:
RSpecin tapauksessa tallennamme testituloksen rspec.xml-tiedoston aiemmin luotuun luetteloon /tmp/test-results ja sitten käytämme komentoa myymälätestitulokset avaimella tallennamme tietyn luettelon. Nyt Insights-välilehdellä voimme tarkastella tietoja, kuten keskimääräistä käännösaikaa, viimeisimmän käännöksen ajankohtaa tai onnistumisprosenttia. Voit lukea lisää Insights-välilehdestä täällä. Jos haluamme tallentaa rspec.xml-tiedoston "artefaktina", meidän on lisättävä tiedostoon store_artifacts avain konfiguraatiotiedostossamme.
Brakeman on staattinen analyysityökalu, joka tarkistaa Ruby on Rails-sovellukset tietoturva-aukkojen varalta. Oletusarvoisesti Brakeman palauttaa nollasta poikkeavan poistumiskoodin, jos havaitaan tietoturvavaroituksia tai skannausvirheitä. Siksi keskityimme vain kriittisiin virheisiin, ja varoitukset kytkettiin pois päältä.
Jos haluamme myös tallentaa skannaustuloksen samalla tavalla kuin RSpec, määrityksemme näyttää tältä, ja pääsemme käsiksi tiedostoon Artifacts-välilehdellä.
RubyCritic on helmi, joka käyttää staattiseen analyysiin tarkoitettuja helmiä, kuten Reek, Flay ja Flog, ja antaa raportin koodisi laadusta. Raportti sisältää A- / B- / C- / D- / F-luokituksen, jokaisen projektimme tiedoston, jonka haluamme skannata, ja tarkat paikat, jotka tarvitsevat parannuksia, sekä dokumentaation jokaisen hälytyksen kanssa (esim: TooManyMethods). Tämä työkalu toimii hankkeessa konsulttina. Saadun raportin perusteella lopullinen päätös siitä, onko koodia todella korjattava, riippuu kehittäjästä. Circleci-kokoonpanossamme on määritetty erillinen tehtävä, joka vastaa raportin laatimisesta ja lähettää tuloksen sisältävän erityisen kommentin githubiin.
Rubycriticin peruskonfiguraatio ei poikkea edellisistä.
Normaalisti ajamme läpi paketin, jossa on tiedot siitä, minkä hakemiston haluamme skannata ./app, mihin paikkaan haluamme tallentaa tuloksen -p /tmp/rubycritic (rubycritic luo automaattisesti hakemiston, johon tallennamme raporttimme), missä muodossa -f json ja optio -no-selain. Käytämme myös helmiä circleci-coverage_reporter, joka skannauksen jälkeen laittaa kommentin githubiin pull request -pyyntöömme, jossa on linkki raporttiin ja prosentuaalinen luokitus skannatuista tiedostoista.
Jotta edellä mainittu helmi toimisi kunnolla yhdessä circlecin kanssa, meidän on lisättävä se projektiin ja luotava kaksi avainta (toinen niistä on circleci, toinen github).
Vakioasennus:
Gemfile helmi 'circleci-coverage_reporter'
Rakefile require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']