diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000..a76ceff --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,107 @@ +name: Ruby - Coverage + +env: + K_SOUP_COV_MIN_BRANCH: 82 + K_SOUP_COV_MIN_LINE: 94 + K_SOUP_COV_MIN_HARD: true + +on: + push: + branches: + - 'main' + tags: + - '!*' # Do not execute on tags + pull_request: + branches: + - '*' + # Allow manually triggering the workflow. + workflow_dispatch: + +permissions: + contents: read + +# Cancels all previous workflow runs for the same branch that have not yet completed. +concurrency: + # The concurrency group contains the workflow name and the branch name. + group: "${{ github.workflow }}-${{ github.ref }}" + cancel-in-progress: true + +jobs: + test: + name: Specs with Coverage - Ruby ${{ matrix.ruby }} ${{ matrix.name_extra || '' }} + if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" + env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps + BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile + CI_CODECOV: true + COVER_ALL: true + runs-on: ubuntu-latest + strategy: + matrix: + rubygems: + - latest + bundler: + - latest + gemfile: + - coverage + ruby: + - '3.1' + + steps: + - name: CodeClimate Install + uses: amancevice/setup-code-climate@v1 + if: ${{ github.event_name != 'pull_request' }} + with: + cc_test_reporter_id: "${{ secrets.CC_TEST_REPORTER_ID }}" + + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Ruby & Bundle + uses: ruby/setup-ruby@v1 + with: + ruby-version: "${{ matrix.ruby }}" + rubygems: "${{ matrix.rubygems }}" + bundler: "${{ matrix.bundler }}" + bundler-cache: true + + - name: CodeClimate Pre-build Notification + run: cc-test-reporter before-build + if: ${{ github.event_name != 'pull_request' }} + continue-on-error: ${{ matrix.experimental != 'false' }} + + - name: Run tests + run: bundle exec rake + + - name: CodeClimate Post-build Notification + run: cc-test-reporter after-build + if: ${{ github.event_name != 'pull_request' }} + continue-on-error: ${{ matrix.experimental != 'false' }} + + - name: Code Coverage Summary Report + uses: irongut/CodeCoverageSummary@v1.3.0 + if: ${{ github.event_name == 'pull_request' }} + with: + filename: ./coverage/coverage.xml + badge: true + fail_below_min: true + format: markdown + hide_branch_rate: false + hide_complexity: true + indicators: true + output: both + thresholds: '93 82' + continue-on-error: ${{ matrix.experimental != 'false' }} + + - name: Add Coverage PR Comment + uses: marocchino/sticky-pull-request-comment@v2 + if: ${{ github.event_name == 'pull_request' }} + with: + recreate: true + path: code-coverage-results.md + continue-on-error: ${{ matrix.experimental != 'false' }} + + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + continue-on-error: ${{ matrix.experimental != 'false' }} diff --git a/.github/workflows/current.yml b/.github/workflows/current.yml index 1dde0ad..af95b31 100644 --- a/.github/workflows/current.yml +++ b/.github/workflows/current.yml @@ -1,16 +1,4 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake -# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby - -name: Ruby - -env: - K_SOUP_COV_MIN_BRANCH: 82 - K_SOUP_COV_MIN_LINE: 93 - K_SOUP_COV_MIN_HARD: true +name: Ruby Matrix on: push: @@ -35,7 +23,7 @@ concurrency: jobs: test: - name: Specs with Coverage - Ruby ${{ matrix.ruby }} ${{ matrix.name_extra || '' }} + name: Specs - Ruby ${{ matrix.ruby }} ${{ matrix.name_extra || '' }} if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')" env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile @@ -49,17 +37,18 @@ jobs: bundler: - latest gemfile: - - coverage + - vanilla ruby: - - '2.7' + #- '3.1' - 3.1 tests are run by coverage.yml + - '3.2' + - '3.3' + - head + - jruby + - jruby-head + - truffleruby + - truffleruby-head steps: - - name: CodeClimate Install - uses: amancevice/setup-code-climate@v1 - if: ${{ github.event_name != 'pull_request' }} - with: - cc_test_reporter_id: "${{ secrets.CC_TEST_REPORTER_ID }}" - - name: Checkout uses: actions/checkout@v4 @@ -71,44 +60,5 @@ jobs: bundler: "${{ matrix.bundler }}" bundler-cache: true - - name: CodeClimate Pre-build Notification - run: cc-test-reporter before-build - if: ${{ github.event_name != 'pull_request' }} - continue-on-error: ${{ matrix.experimental != 'false' }} - - name: Run tests run: bundle exec rake - - - name: CodeClimate Post-build Notification - run: cc-test-reporter after-build - if: ${{ github.event_name != 'pull_request' }} - continue-on-error: ${{ matrix.experimental != 'false' }} - - - name: Code Coverage Summary Report - uses: irongut/CodeCoverageSummary@v1.3.0 - if: ${{ github.event_name == 'pull_request' }} - with: - filename: ./coverage/coverage.xml - badge: true - fail_below_min: true - format: markdown - hide_branch_rate: false - hide_complexity: true - indicators: true - output: both - thresholds: '93 82' - continue-on-error: ${{ matrix.experimental != 'false' }} - - - name: Add Coverage PR Comment - uses: marocchino/sticky-pull-request-comment@v2 - if: ${{ github.event_name == 'pull_request' }} - with: - recreate: true - path: code-coverage-results.md - continue-on-error: ${{ matrix.experimental != 'false' }} - - - name: Coveralls - uses: coverallsapp/github-action@master - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - continue-on-error: ${{ matrix.experimental != 'false' }}