CircleCI to bardzo proste narzędzie, które jest dobrze skonfigurowane jako nadzorca naszych projektów. Ale czy sama konfiguracja jest prosta? To oczywiście zależy od złożoności projektu. W naszym przypadku (mono repo) okazało się to trudniejsze niż się spodziewaliśmy.
Konfiguracja dla projektów Ruby on Rails nie jest skomplikowana, a dokumentacja dokładnie opisuje każdy element config.yml. Chciałbym jednak skupić się na narzędziach circleci, które są używane, aby pomóc nam utrzymać konfigurację. kod czystość i zapewnienie dobrych praktyk.
Prawdopodobnie RuboCope nie wymaga przedstawiania, jednak dla tych, którzy nie są z nim zaznajomieni, jest to statyczny analizator i formater kodu Ruby. Jeśli już używasz rubocop w swoim projektWystarczy dodać CircleCI do pliku konfiguracyjnego:
ESLint jest narzędziem do identyfikowania i raportowania wzorców znalezionych w ECMAScript lub JavaScript aby kod był bardziej spójny i aby uniknąć błędów.
W RSpec testy to nie tylko skrypty weryfikujące kod aplikacji, ale także szczegółowe wyjaśnienia, jak aplikacja powinna się zachowywać, wyrażone w prostym języku angielskim:
W przypadku RSpec zapisujemy wynik testu we wcześniej utworzonym katalogu /tmp/test-results w pliku rspec.xml, a następnie za pomocą funkcji skleptestwyniki przechowujemy dany katalog. Teraz zakładka Insights da nam dostęp do takich informacji jak mediana czasu kompilacji, czas ostatniej kompilacji czy współczynnik sukcesu. Możesz przeczytać więcej o zakładce Insights tutaj. Jeśli chcemy przechowywać plik rspec.xml jako "artefakt", musimy dodać atrybut store_artifacts w naszym pliku konfiguracyjnym.
Brakeman to narzędzie do analizy statycznej, które sprawdza aplikacje Ruby on Rails pod kątem luk w zabezpieczeniach. Domyślnie Brakeman zwraca niezerowy kod wyjścia w przypadku wykrycia ostrzeżeń dotyczących bezpieczeństwa lub napotkania błędów skanowania. Dlatego skupiliśmy się tylko na krytycznych błędach, a ostrzeżenia zostały wyłączone.
Jeśli chcemy również przechowywać wynik skanowania w taki sam sposób jak RSpec, nasza konfiguracja będzie wyglądać następująco, a dostęp do naszego pliku będziemy mieli w zakładce Artifacts.
RubyCritic to gem, który używa gemów do analizy statycznej, takich jak Reek, Flay i Flog, aby dostarczyć raport o jakości kodu. Raport zawiera ocenę A / B / C / D / F, każdy plik w naszym projekcie, który chcemy przeskanować i dokładne miejsca, które wymagają poprawy, a także dokumentację z każdym alertem (np: TooManyMethods). Narzędzie to pełni rolę konsultanta w projekcie. Na podstawie otrzymanego raportu ostateczna decyzja o tym, czy nasz kod faktycznie wymaga poprawek, zależy od dewelopera. W naszej konfiguracji circleci przypisany jest osobny job odpowiedzialny za przygotowanie raportu i wysłanie specjalnego komentarza z wynikiem na githuba.
Podstawowa konfiguracja rubycritic nie różni się od poprzednich.
Standardowo uruchamiamy bundle z informacją, który katalog chcemy przeskanować ./app, w którym miejscu chcemy zapisać wynik -p /tmp/rubycritic (rubycritic automatycznie tworzy katalog, w którym będziemy przechowywać nasz raport), w jakim formacie -f json i opcja -no- browser. Używamy również gema circleci-coverage_reporter, który po skanowaniu umieszcza komentarz na githubie w naszym pull request z linkiem do raportu i procentową oceną przeskanowanych plików.
Aby powyższy gem działał poprawnie razem z circleci, musimy dodać go do naszego projektu i wygenerować dwa klucze (jeden z nich to circleci, drugi to github).
Instalacja standardowa:
Gemfile gem 'circleci-coverage_reporter'
Rakefile require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
Sekcja "ustawienia" naszego projektu. Po wybraniu "Create Token" zmieniamy zakres na "all" i wypełniamy etykietę tokena. Token do API zostanie wygenerowany po kliknięciu
COVERAGE_REPORTER_VCS_TOKEN
Zakres klucza do repozytorium
Po wygenerowaniu kluczy, musimy dodać je do naszych zmiennych środowiskowych w Ustawienia: