diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000..8999e12 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,109 @@ +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' + - '*-stable' + - '*-dev' + 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 test + + - 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' }}