2014-11-04 30 views
6

Mam aplikacji szyn, który działa parallel_test z RSpec wewnątrz circleciJak scalić wiele katalogów simplecov wewnątrz CircleCI podczas uruchamiania parallel_test?

rozglądając się w Internecie I dodaje się to do samego beginnging mojego spec_helper.rb pliku:

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 

Problem polega na tym, że w wyniku I dostać różne foldery jednym dla każdej instancji circleci:

enter image description here

Co robię źle?

+0

nikogo, kto pracuje w kółko-ci? – fabrizioM

+0

Niepowiązane, ale jak wygląda Twój circle.yml? Nie mogę uzyskać tego projektu @fabrizioM – StevenNunez

Odpowiedz

6

Pracuję w CircleCI. Niestety to nie zadziała - nie zbieramy katalogów artefaktów z różnych kompilacji, dopóki wszystkie kompilacje nie zostaną zakończone, więc narzędzia, które spróbują połączyć je podczas kompilacji, nie będą działać. Rozmawialiśmy o dodaniu możliwości, aby to zrobić, ale nie jest to obecnie dostępne w naszym planie działania, przepraszamy!

+0

Czy tak się dzieje?Mam właśnie zaimplementować rozwiązanie @ frank-c-eckert za pomocą scp ... – GDorn

3

Dla każdego, kto wciąż szuka rozwiązania tego problemu, istnieje nowa możliwość: używanie ssh między kontenerami do ręcznej synchronizacji i scalania raportów, patrz docs. Nie jest to jednak rozwiązanie "pod klucz", musisz sam napisać niezbędne skrypty.

W przeciwnym razie, można również użyć zewnętrznego serwisu pokrycia (używamy coveralls codecov) wraz z CircleCI na notification webhook.

Edit

Możesz dodać webhook takiego w swojej circle.yml (dzięki Ian): notify: webhooks: - url: https://coveralls.io/webhook?repo_token=(your repo token)

+1

czy możesz podać trochę więcej szczegółów dotyczących konfigurowania kombinezonów do pracy z webhookami koła? – Nader

+0

Znalazłem tę informację na https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook –

1

wyłożyć na to, co Frank Eckert powiedział Coveralls can do this. Jednak ta dokumentacja jest nieco wyłączona.

Dodaj do ciebie Gemfile:

gem 'coveralls', require: false 

Dodaj do spec/spec_helper.rb:

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

Dodaj do circle.yml (nie coveralls.yml jako stany artykułu):

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

Dodaj do (lub utworzyć) .coveralls.yml w folderze głównym, a następnie dodaj:

repo_token: your-repo-token 

wreszcie przejść do konfiguracji projektu CircleCI i dodać zmienną środowiskową: COVERALLS_PARALLEL=true

Ten pracował dla nas jednak znaleźć błędy w liczbie właściwej linii (reported to Coveralls), ale działa i daje nam dobre pojęcie o tym, że nasz zasięg zmienia się z czasem.