CircleCI on väga lihtne tööriist, mis on hästi konfigureeritud meie projektide juhendajaks. Aga kas konfiguratsioon ise on lihtne? See sõltub muidugi projekti keerukusest. Meie puhul (mono repo) osutus see oodatust keerulisemaks.
Ruby on Rails projektide konfigureerimine ei ole keeruline ja dokumentatsioon kirjeldab täpselt iga config.yml-i elementi. Tahaksin siiski keskenduda circleci vahenditele, mida kasutatakse selleks, et hoida meid kood puhas ja tagab hea tava.
Tõenäoliselt ei vaja RuboCope'i tutvustamist, kuid neile, kes seda ei tunne, on tegemist staatilise Ruby koodi analüsaatori ja vormindajaga. Kui te juba kasutate rubocopi oma projekt, lisage lihtsalt CircleCI konfiguratsioonifaili:
ESLint on vahend ECMAScript'is leitud mustrite tuvastamiseks ja nendest teatamiseks või JavaScript kood, et muuta kood järjepidevamaks ja vältida vigu.
RSpecis ei ole testid mitte ainult skriptid, mis kontrollivad rakenduse koodi, vaid ka üksikasjalikud selgitused selle kohta, kuidas rakendus peaks käituma, mis on väljendatud lihtsas inglise keeles:
RSpeci puhul salvestame testi tulemuse eelnevalt loodud kataloogi /tmp/test-results failis rspec.xml ja seejärel kasutame käsku kauplustesttulemused võtme salvestame antud kataloogi. Nüüd annab vahekaart Insights meile juurdepääsu sellistele andmetele nagu keskmine koostamisaeg, viimase koostamise aeg või edukuse määr. Lisateavet Insights-värava kohta saate lugeda siin. Kui me tahame salvestada rspec.xml faili kui "artefakti", peame lisama faili store_artifacts võti meie konfiguratsioonifailis.
Brakeman on staatilise analüüsi tööriist, mis kontrollib Ruby on Rails rakendusi turvaaukude suhtes. Vaikimisi tagastab Brakeman nullist erineva väljumiskoodi, kui tuvastatakse turvariskid või skaneerimisvead. Seetõttu keskendusime ainult kriitilistele vigadele ja hoiatused lülitati välja.
Kui me tahame ka skaneerimistulemust salvestada samamoodi nagu RSpec, näeb meie konfiguratsioon välja selline ja meil on juurdepääs meie failile vahekaardil Artifacts.
RubyCritic on pärl, mis kasutab staatilise analüüsi pärleid, nagu Reek, Flay ja Flog, et esitada aruanne teie koodi kvaliteedi kohta. Aruanne sisaldab A / B / C / D / F hinnangut, iga faili meie projektis, mida me tahame, et oleksime skaneerinud ja täpseid kohti, mis vajavad parandamist, ja dokumentatsiooni iga hoiatuse juures (nt: TooManyMethods). See vahend toimib projektis konsultandina. Saadud aruande põhjal sõltub lõplik otsus, kas meie koodi on tegelikult vaja parandada, arendajast. Meie circleci konfiguratsioonis on määratud eraldi töö, mis vastutab aruande koostamise ja tulemuse kohta eraldi kommentaari saatmise eest githubile.
Rubycritic'i põhikonfiguratsioon ei erine eelmistest.
Standardselt jookseme läbi paketi, kus on info, millist kataloogi me tahame skaneerida ./app, millisesse kohta me tahame salvestada tulemuse -p /tmp/rubycritic (rubycritic loob automaatselt kataloogi, kuhu me oma aruande salvestame), millises formaadis -f json ja valik -no- brauser. Samuti kasutame gem circleci-coverage_reporter, mis pärast skaneerimist paneb githubis meie pull request'ile kommentaari koos lingiga aruandele ja skaneeritud failide protsentuaalse hinnanguga.
Selleks, et ülaltoodud pärl koos circleci'ga korralikult töötaks, peame selle lisama oma projekti ja genereerima kaks võtit (üks neist on circleci, teine on github).
Standardne paigaldus:
Gemfile gem 'circleci-coverage_reporter'
Rakefile require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']