yuxino / blog

🎬 Life's a Movie
17 stars 2 forks source link

circleci + jest + codecov 实现代码覆盖率统计 #113

Closed yuxino closed 3 years ago

yuxino commented 4 years ago

效果

Screen Shot 2020-07-30 at 5 17 37 PM

作用

统计代码覆盖率。检查哪些代码没覆盖到。

解说

左边的badge来自circleci。右边的来自codecov。codecov - 就是拿来生成badge用的纯工具人玩意。因为circleci没有覆盖率的badge,很难受。circleci 就不用多说了常规的 ci。

拿circleci 做了仨事情。 一个是跑测试,一个是存报告 (之后可以拿来看),还有一个是给codecov上报。

咋整

首先

你先装好 jest。写好script,比如叫做test:ci

"test:ci": "jest --coverage --verbose"

说明一下配置, coverage--collectCoverage=true的别名。用来自动生成报告。verbose是我的习惯,有时候我想看看console出来的输出。方便 debug 。

然后

配置circleci的配置文件。

version: 2.1
orbs:
  codecov: codecov/codecov@1.1.1
jobs:
  build:
    docker:
      - image: circleci/node
    steps:
      - checkout
      - run: yarn install
      - save_cache:
          paths:
            - node_modules
          key: v1-yarn-deps-{{ checksum "package.json" }}
      - run: yarn test:ci
      - store_artifacts:
          path: coverage
      - codecov/upload:
          file: ./coverage/lcov.info
          token: codecov的token

注意版本要是verson2.1。不然我们没法用orbs,低版本不支持codecov/upload这个写法。 store_artifacts这个目录我们看到了是coverage,因为jest默认生成的报告的目录就是coverage,我们把它传到circleci的服务器就好了,方便以后查阅。

image

点进去就能看覆盖率了。

私有项目稍微打了个码。

BTW: orbs也不是必须要的,只要能把lcov.info传给codecov就可以了,至于怎么传很多办法,这里不过多描述。

最后

codecov 的 token 是 uuid 内个别弄错了。设置里的Repository Upload Token内个。

最最后

推代码到github,到 circleci 激活一下就可以了。

最最最后

badge 可以在circleci和codecov的设置里面找到。就酱紫。