Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

continuous integration - How to configure Coveralls with Github Action?

I'm experiencing problems with my github repo configuration. Here it is - umbress. I have Github Actions CI enabled and configured and I want to have the coverage badge in my repo so everyone who wants to use my code in their projects knows that my code is well-tested. But it seems that I missing something because my coverage badge has an "unknown" status for a long time already.

CI steps are:

  1. Run build
  2. Run tests and generate coverage (jest --coverage --config config/jest.js). This will generate ./coverage/lcov.info in root directory
  3. Finally Coveralls GitHub Action should upload coverage to their website and display the results

There are a few issues:

  1. When I run builds on pull requests, it says "First build" (but it's not, I've ran a lot of builds on this branch already) github actions
  2. Coverage info is differs in what jest shows me after tests and what is displaying in Coveralls stats (i.e. in Coveralls it says FIRST BUILD ON DEVELOPER AT 90.072%, but there's no such percentage at all! Lines covered is 93.43% and everything in average is 89.4%)
  3. Coverage badge is "unknown" no matter I try to change

What am I doing wrong and what should I do to fix this?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I've tried many things as well and in the end, the usage of the coverallsapp/[email protected] helped! Now I can successfully publish the coverage results to coveralls.io

Unfortunately, the straightforward approach was either leading to "Bad Response 422 - Couldn't find a repository matching this job" or "Error from lcovParse: 'Failed to parse string'".

Straightforward approach (not working):

-?name:?Publish to coveralls.io
  run:?cat?./coverage/lcov.info?|?./node_modules/coveralls/bin/coveralls.js

Using Actions app from GH marketplace (working):

- name: Publish to coveralls.io
  uses: coverallsapp/[email protected]
  with:
    github-token: ${{ github.token }}

This is the working .yml configuration, hope it will help someone else as well.

Keep in mind that the scenario that I needed to cover was a little bit tricky, we have multiple coverage results that needed to be combined and later on used as a single output result to coveralls.io.

If someone is curious, here are the things that I've tried, but failed:

  • Use of NODE_ENV for publishing -

    run: NODE_ENV=test cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js

  • Specifying exact node version 11.8.0 and above

  • Specifying a github.token, repo and env for the steps:

  • Creating a separate Github Actions Job.

    uses: actions/setup-node@v1
    with:
      repo-token: ${{ github.token }}
      repository: ${{ github.repository }}
      GITHUB_TOKEN: ${{ github.token }}
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...