From 8ed8cc8b9386fe941229504cfcfb5fb6448d3770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 28 Nov 2022 17:07:07 +0100 Subject: [PATCH] Use Coveralls Github Action to send test reports Coveralls stopped working back in July when we reached build number 3790 because back when we used Travis we created builds from numbers 3791 to 35700. After trying to change the numbers in several ways, all of them resulting in a "No build matching CI build number" message, we're trying the Github Action provided by Coveralls instead. In order to make it work, we need to add the `simplecov-lcov` gem and generate the report at `coverage/lcov.info`. Note that, for some reason, `simplecov-lcov` doesn't seem to depend on `simplecov` and we need `simplecov` 0.18 or later, so we're manually adding this dependency as well. --- .github/workflows/tests.yml | 19 +++++++++++-------- .gitlab-ci.yml | 2 +- Gemfile | 3 ++- Gemfile.lock | 26 +++++++++----------------- spec/rails_helper.rb | 13 ++++++++++--- 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0aa81607c..6597fc809 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,10 +23,7 @@ jobs: POSTGRES_USER: consul POSTGRES_PASSWORD: "" env: - CI_BUILD_NUMBER: ${{ github.run_number }} - COVERALLS_FLAG_NAME: run-${{ matrix.ci_node_index }} - COVERALLS_PARALLEL: true - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + TEST_COVERAGE: 1 PGUSER: consul POSTGRES_HOST: postgres RAILS_ENV: test @@ -56,6 +53,12 @@ jobs: KNAPSACK_PRO_FIXED_QUEUE_SPLIT: true KNAPSACK_PRO_LOG_LEVEL: info run: bin/knapsack_pro_rspec + - name: Coveralls Parallel + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + flag-name: run-${{ matrix.ci_node_index }} + parallel: true - name: Upload screenshots if: failure() uses: actions/upload-artifact@v2 @@ -67,9 +70,9 @@ jobs: contents: none runs-on: ubuntu-latest needs: tests - env: - CI_BUILD_NUMBER: ${{ github.run_number }} - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} steps: - name: Finish coveralls - run: curl -k https://coveralls.io/webhook?repo_token=$COVERALLS_REPO_TOKEN -d "payload[build_num]=$CI_BUILD_NUMBER&payload[status]=done" + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aaaa1a167..b23c7fb9b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,7 +14,7 @@ tests: variables: POSTGRES_USER: consul RAILS_ENV: test - COVERALLS: 1 + TEST_COVERAGE: 1 parallel: 5 script: - apt-get update && apt-get install -y nodejs chromium diff --git a/Gemfile b/Gemfile index f8b93ec3c..568dd8b80 100644 --- a/Gemfile +++ b/Gemfile @@ -86,10 +86,11 @@ end group :test do gem "capybara", "~> 3.37.1" gem "capybara-webmock", "~> 0.6.0" - gem "coveralls", "~> 0.8.23", require: false gem "email_spec", "~> 2.2.0" gem "rspec-rails", "~> 5.1.2" gem "selenium-webdriver", "~> 3.142" + gem "simplecov", "~> 0.21.2", require: false + gem "simplecov-lcov", "~> 0.8.0", require: false gem "webdrivers", "~> 4.7.0" end diff --git a/Gemfile.lock b/Gemfile.lock index 373f0d7bc..6a0ddfa54 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -159,12 +159,6 @@ GEM execjs coffee-script-source (1.12.2) concurrent-ruby (1.1.10) - coveralls (0.8.23) - json (>= 1.8, < 3) - simplecov (~> 0.16.1) - term-ansicolor (~> 1.3) - thor (>= 0.19.4, < 2.0) - tins (~> 1.6) crass (1.0.6) daemons (1.4.1) dalli (3.2.3) @@ -183,7 +177,7 @@ GEM devise-security (0.16.0) devise (>= 4.3.0, < 5.0) diff-lcs (1.5.0) - docile (1.3.2) + docile (1.4.0) dry-configurable (0.7.0) concurrent-ruby (~> 1.0) dry-container (0.6.0) @@ -619,11 +613,13 @@ GEM selenium-webdriver (3.142.7) childprocess (>= 0.5, < 4.0) rubyzip (>= 1.2.2) - simplecov (0.16.1) + simplecov (0.21.2) docile (~> 1.1) - json (>= 1.8, < 3) - simplecov-html (~> 0.10.0) - simplecov-html (0.10.2) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.12.3) + simplecov-lcov (0.8.0) + simplecov_json_formatter (0.1.4) sitemap_generator (6.3.0) builder (~> 3.0) smart_properties (1.17.0) @@ -647,9 +643,6 @@ GEM sshkit (1.21.2) net-scp (>= 1.1.2) net-ssh (>= 2.8.0) - sync (0.5.0) - term-ansicolor (1.7.1) - tins (~> 1.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) terrapin (0.6.0) @@ -657,8 +650,6 @@ GEM thor (1.2.1) thread_safe (0.3.6) tilt (2.0.10) - tins (1.25.0) - sync tomlrb (1.3.0) translator-text (0.1.0) dry-struct (~> 0.5.0) @@ -735,7 +726,6 @@ DEPENDENCIES caxlsx_rails (~> 0.6.3) ckeditor (~> 4.3.0) cocoon (~> 1.2.15) - coveralls (~> 0.8.23) daemons (~> 1.4.1) dalli (~> 3.2.3) delayed_job_active_record (~> 4.1.7) @@ -800,6 +790,8 @@ DEPENDENCIES savon (~> 2.13.0) scss_lint (~> 0.59.0) selenium-webdriver (~> 3.142) + simplecov (~> 0.21.2) + simplecov-lcov (~> 0.8.0) sitemap_generator (~> 6.3.0) social-share-button (~> 1.2.4) spring (~> 2.1.1) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 08fa8c4c3..a31152ef8 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,7 +1,14 @@ ENV["RAILS_ENV"] ||= "test" -if ENV["COVERALLS_REPO_TOKEN"] - require "coveralls" - Coveralls.wear!("rails") +if ENV["TEST_COVERAGE"] + require "simplecov" + require "simplecov-lcov" + SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true + SimpleCov::Formatter::LcovFormatter.config do |config| + config.output_directory = "coverage" + config.lcov_file_name = "lcov.info" + end + SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter + SimpleCov.start("rails") end require File.expand_path("../../config/environment", __FILE__) abort("The Rails environment is running in production mode!") if Rails.env.production?