2014-11-04 2 views
6

Ich habe eine Rails-Anwendung, die mit rspec innen circleciWie mehrere Simplecov Verzeichnisse in CircleCI zusammenführen, wenn parallel_test ausgeführt wird?

Umsah auf Internet ich dies meiner spec_helper.rb Datei in den sehr beginnging aufaddiert parallel_test läuft:

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 

Das Problem ist, dass ich als Ergebnis erhalten eine unterschiedliche Ordner für jedes circleci Beispiel:

enter image description here

Was mache ich falsch?

+0

niemand, der bei Kreis-ci funktioniert? – fabrizioM

+0

Nicht verwandt, aber wie sieht Ihre circle.yml aus? Ich kann diese Arbeit nicht bekommen @fabrizioM – StevenNunez

Antwort

6

ich bei CircleCI arbeiten. Leider wird das nicht funktionieren - wir sammeln die Artefakt-Verzeichnisse nicht aus verschiedenen Builds, bis alle Builds fertig sind, so dass Tools, die versuchen, sie während des Builds zusammenzuführen, nicht funktionieren. Wir haben darüber gesprochen, Funktionen hinzuzufügen, aber es ist nicht auf unserer Feature-Roadmap, sorry!

+0

Ist das immer noch der Fall?Ich bin gerade dabei, die Lösung von @ frank-c-eckert per scp zu implementieren ... – GDorn

3

Für alle, die immer noch nach einer Lösung für dieses Problem suchen, gibt es eine neue Möglichkeit: ssh zwischen Containern zu verwenden, um Berichte manuell zu synchronisieren und zusammenzuführen, siehe docs. Dies ist jedoch keine schlüsselfertige Lösung, Sie müssen die notwendigen Skripte selbst schreiben.

Ansonsten können Sie auch eine externe Berichterstattung Service nutzen (wir verwenden coveralls codecov) zusammen mit CircleCI der notification webhook.

bearbeiten

Sie die Webhook wie dies in Ihrem circle.yml hinzufügen können (dank Ian): notify: webhooks: - url: https://coveralls.io/webhook?repo_token=(your repo token)

+1

Können Sie ein wenig mehr Details darüber geben, wie Sie Overalls konfigurieren, um mit den Webhooks des Kreises zu arbeiten? – Nader

+0

Diese Informationen finden Sie unter https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook –

1

auslegen auf welchem ​​Frank Eckert sagte, Coveralls can do this. Diese Dokumentation ist jedoch etwas aus.

Sie hinzufügen Gemfile:

gem 'coveralls', require: false 

zu Ihrem spec/spec_helper.rb hinzufügen:

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

in Ihre circle.yml (nicht coveralls.yml wie in dem Artikel):

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

In den (oder erstellen) eine .coveralls.yml im Stammordner, und fügen:

repo_token: your-repo-token 

schließlich die CircleCI Projektkonfiguration gehen und eine Umgebungsvariable hinzu: COVERALLS_PARALLEL=true

Das ist für uns gearbeitet, aber wir Fehler in der richtigen Zeilenzählung finden (reported to Coveralls), aber es funktioniert und gibt uns eine gute Vorstellung davon, dass sich unsere Abdeckung im Laufe der Zeit ändert.

Verwandte Themen