CircleCI è uno strumento molto semplice e ben configurato come supervisore dei nostri progetti. Ma la configurazione in sé è semplice? Questo, ovviamente, dipende dalla complessità del progetto. Nel nostro caso (mono repo) si è rivelata più difficile del previsto.
La configurazione per i progetti Ruby on Rails non è complicata e il sistema documentazione descrive accuratamente ogni elemento di config.yml. Tuttavia, vorrei concentrarmi sugli strumenti di circleci che vengono usati per aiutarci a mantenere la configurazione di codice pulire e garantire una buona pratica.
È probabile che RuboCope non abbia bisogno di presentazioni, tuttavia, per coloro che non lo conoscono, si tratta di un analizzatore e formattatore statico di codice Ruby. Se si usa già rubocop nella propria progettoè sufficiente aggiungere CircleCI al file di configurazione:
ESLint è uno strumento per l'identificazione e la segnalazione di modelli trovati in ECMAScript o in JavaScript per rendere il codice più coerente ed evitare errori.
In RSpec, i test non sono solo script che verificano il codice dell'applicazione, ma anche spiegazioni dettagliate di come l'applicazione dovrebbe comportarsi, espresse in inglese semplice:
Nel caso di RSpec, si salva il risultato del test in un catalogo /tmp/test-results creato in precedenza nel file rspec.xml e poi si utilizza l'opzione negoziotestrisultati per memorizzare un determinato catalogo. Ora la scheda Approfondimenti ci darà accesso a informazioni come il tempo di compilazione mediano, il tempo dell'ultima compilazione o il tasso di successo. Per saperne di più sulla scheda Approfondimenti qui. Se si vuole memorizzare il file rspec.xml come "artefatto", occorre aggiungere l'opzione memorizzare_artifatti nel nostro file di configurazione.
Brakeman è uno strumento di analisi statica che controlla le applicazioni Ruby on Rails alla ricerca di vulnerabilità di sicurezza. Per impostazione predefinita, Brakeman restituisce un codice di uscita diverso da zero se vengono rilevati avvisi di sicurezza o errori di scansione. Pertanto, ci siamo concentrati solo sugli errori critici e gli avvisi sono stati disattivati.
Se vogliamo anche memorizzare il risultato della scansione nello stesso modo di RSpec, la nostra configurazione sarà simile a questa e avremo accesso al nostro file nella scheda Artifacts.
RubyCritic è una gemma che utilizza gemme per l'analisi statica, come Reek, Flay e Flog, per fornire un rapporto sulla qualità del codice. Il rapporto contiene una valutazione A / B / C / D / F, ogni file del nostro progetto che vogliamo sia analizzato e i punti precisi che necessitano di miglioramenti, e la documentazione con ogni avviso (es: Troppi metodi). Questo strumento funge da consulente nel progetto. Sulla base del rapporto ricevuto, la decisione finale sulla necessità di correggere il codice dipende dallo sviluppatore. Nella nostra configurazione di circleci, viene assegnato un lavoro separato che è responsabile della preparazione del report e dell'invio di un commento speciale con il risultato su github.
La configurazione di base di rubycritic non è diversa dalle precedenti.
Come standard, eseguiamo il bundle con le informazioni su quale directory vogliamo scansionare ./app, in quale posto vogliamo salvare il risultato -p /tmp/rubycritic (rubycritic crea automaticamente una directory in cui memorizzare il nostro report), in quale formato -f json e l'opzione -no- browser. Utilizziamo anche la gemma cerchio-copertura_reporterche, dopo la scansione, inserisce un commento su github nella nostra richiesta di pull con un link al report e una valutazione percentuale dei file scansionati.
Affinché la gemma di cui sopra funzioni correttamente insieme a circleci, dobbiamo aggiungerla al nostro progetto e generare due chiavi (una è circleci, la seconda è github).
Installazione standard:
Profilo delle gemme gemma 'circleci-coverage_reporter'
Profilo del rastrello require 'circleci/coverage_reporter/rake_task' if ENV['CIRCLECI']
Sezione 'Impostazioni' del nostro progetto. Dopo aver scelto 'Create Token', cambiare l'ambito in 'all' e inserire l'etichetta del token. Il token per l'API sarà generato dopo aver fatto clic su
TOKEN_REPORTER_DI_COPERTURA_VCS
Ambito per la chiave del repo
Dopo aver generato le chiavi, dobbiamo aggiungerle alle nostre variabili d'ambiente in Impostazioni: