2014-11-04 7 views
6

Ho un'applicazione rotaie che corre parallel_test con RSpec all'interno circleciCome unire più directory simplecov all'interno di CircleCI quando si esegue parallel_test?

Guardando in giro su internet ho aggiunto questa al molto beginnging della mia spec_helper.rb lima:

if ENV['COVERAGE'] 
    require 'simplecov' 
    # on circleci change the output dir to the artifacts 
    if ENV['CIRCLE_ARTIFACTS'] 
    dir = File.join("..", "..", "..", ENV['CIRCLE_ARTIFACTS'], "coverage") 
    SimpleCov.coverage_dir(dir) 
    SimpleCov.merge_timeout 3600 
    SimpleCov.command_name "rspec_#{Process.pid.to_s}#{ENV['TEST_ENV_NUMBER']}" 
    end 
    SimpleCov.start 'rails' 
end 

Il problema è che di conseguenza ho ottenere cartelle diverse una per ogni istanza circleci:

enter image description here

che cosa sto facendo di sbagliato?

+0

nessuno che lavori a circle-ci? – fabrizioM

+0

Non correlato, ma che aspetto ha il tuo circle.yml? Non riesco a ottenere questo workign @fabrizioM – StevenNunez

risposta

6

Lavoro in CircleCI. Sfortunatamente non funzionerà - non raccogliamo le directory degli artefatti da build diverse fino a quando tutte le build non hanno finito di funzionare, quindi gli strumenti che cercano di unirle durante la compilazione non funzioneranno. Abbiamo parlato di aggiungere funzionalità per farlo, ma non è attualmente nella nostra roadmap delle funzionalità, mi dispiace!

+0

È ancora così?Sto solo per implementare la soluzione di @ frank-c-eckert via scp ... – GDorn

3

Per chi ancora cerca una soluzione a questo problema, c'è una nuova possibilità: utilizzando ssh tra i contenitori per sincronizzare e unire manualmente i report, vedere docs. Questa, tuttavia, non è una soluzione chiavi in ​​mano, dovrai scrivere tu stesso gli script necessari.

In caso contrario, è possibile anche utilizzare un servizio di copertura esterna (usiamo coveralls codecov) insieme CircleCI di notification webhook.

Modifica

È possibile aggiungere il webhook come questo nel tuo circle.yml (grazie Ian): notify: webhooks: - url: https://coveralls.io/webhook?repo_token=(your repo token)

+1

puoi dare un po 'più di dettaglio nel modo in cui configuri le tute per lavorare con i webhook di Circle? – Nader

+0

Trovate queste informazioni su https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook –

1

di esporre su ciò che Frank ha detto Eckert, Coveralls can do this. Tuttavia, quella documentazione è leggermente fuori.

Aggiungi a te Gemfile:

gem 'coveralls', require: false 

Aggiungi alla tua spec/spec_helper.rb:

if ENV['CIRCLECI'] 
    # If running in CircleCI, run with Coveralls too 
    require 'coveralls' 
    Coveralls.wear!('rails') 
end 

Aggiungi alla tua circle.yml (non coveralls.yml come afferma l'articolo):

notify: 
    webhooks: 
    - url: https://coveralls.io/webhook?repo_token=your-repo-token 

Aggiungi (o creare) un .coveralls.yml nella cartella principale, e aggiungere:

repo_token: your-repo-token 

Infine, andare nella configurazione del progetto CircleCI e aggiungere una variabile di ambiente: COVERALLS_PARALLEL=true

Questo ha funzionato per noi, tuttavia troviamo errori nel conteggio corretto riga (reported to Coveralls) ma sta funzionando e ci dà una buona idea della nostra copertura che cambia nel tempo.

Problemi correlati