CircleCI je velmi jednoduchý nástroj, který je dobře nakonfigurován jako supervizor našich projektů. Je však jednoduchá i samotná konfigurace? To samozřejmě závisí na složitosti projektu. V našem případě (mono repo) se ukázalo, že je to složitější, než jsme očekávali.
Konfigurace pro Ruby na adrese Rails projektů není složitý a dokumentace přesně popisuje jednotlivé prvky souboru config.yml. Chtěl bych se však zaměřit na nástroje circleci, které se používají k pomoci nás zachovat kód čistotu a zajištění správné praxe.
Je pravděpodobné, že RuboCope není třeba představovat, nicméně pro ty, kteří jej neznají, se jedná o statický analyzátor a formátor kódu jazyka Ruby. Pokud již používáte rubocop ve svém projekt, stačí do konfiguračního souboru přidat CircleCI:
ESLint je nástroj pro identifikaci a hlášení vzorů nalezených v jazyce ECMAScript, resp. JavaScript kódu, aby byl kód konzistentnější a aby se předešlo chybám.
V RSpecu jsou testy nejen skripty, které ověřují kód aplikace, ale také podrobné vysvětlení toho, jak by se aplikace měla chovat, vyjádřené jednoduchou angličtinou:
V případě RSpec uložíme výsledek testu do předem vytvořeného katalogu /tmp/test-results v souboru rspec.xml a poté pomocí příkazu ukládattestvýsledky ukládáme daný katalog. Nyní nám karta Insights umožní přístup k informacím, jako je medián času kompilace, čas poslední kompilace nebo úspěšnost. Více informací o kartě Insights si můžete přečíst zde. Pokud chceme soubor rspec.xml uložit jako "artefakt", musíme přidat příkaz store_artifacts v našem konfiguračním souboru.
Brakeman je nástroj statické analýzy, který kontroluje Ruby on Rails aplikací z hlediska bezpečnostních zranitelností. Ve výchozím nastavení vrátí Brakeman nenulový výstupní kód, pokud jsou zjištěna bezpečnostní varování nebo dojde k chybám při skenování. Proto jsme se zaměřili pouze na kritické chyby a varování jsme vypnuli.
Pokud chceme výsledek skenování ukládat stejným způsobem jako RSpec, bude naše konfigurace vypadat takto a na kartě Artefakty budeme mít přístup k našemu souboru.
RubyCritic je drahokam, který využívá drahokamy pro statickou analýzu, jako jsou Reek, Flay a Flog, a poskytuje zprávu o kvalitě vašeho kódu. Zpráva obsahuje hodnocení A / B / C / D / F, každý soubor v našem projektu, který chceme nechat zkontrolovat, a přesná místa, která je třeba zlepšit, a dokumentaci ke každému upozornění (např: TooManyMethods). Tento nástroj funguje jako poradce v projektu. Na základě obdržené zprávy závisí konečné rozhodnutí, zda je náš kód skutečně třeba opravit, na vývojáři. V naší konfiguraci circleci je přiřazena samostatná úloha, která je zodpovědná za přípravu reportu a odeslání speciálního komentáře s výsledkem na github.
Základní konfigurace programu rubycritic se neliší od předchozích.
Standardně projdeme balíček s informacemi o tom, který adresář chceme skenovat ./app, na které místo chceme uložit výsledek -p /tmp/rubycritic (rubycritic automaticky vytvoří adresář, do kterého uložíme naši zprávu), v jakém formátu -f json a volbu -no- browser. Použijeme také gem circleci-coverage_reporter, který po skenování vloží na github do našeho pull requestu komentář s odkazem na zprávu a procentuálním hodnocením skenovaných souborů.
Aby výše uvedený gem správně fungoval společně s circleci, musíme jej přidat do našeho projektu a vygenerovat dva klíče (jeden z nich je circleci, druhý je github).
Standardní instalace:
Gemfile gem 'circleci-coverage_reporter'
Soubor Rakefile require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
Sekce "nastavení" našeho projektu. Po výběru možnosti "Vytvořit token" změňte rozsah na "vše" a vyplňte štítek tokenu. Token k API bude vygenerován po kliknutí na tlačítko
COVERAGE_REPORTER_VCS_TOKEN
Rozsah klíče k repozitáři
Po vygenerování klíčů je musíme přidat do proměnných prostředí v položce Nastavení: