NodeJS Gitlab测试覆盖可视化不起作用

uwopmtnx  于 2023-02-18  发布在  Node.js
关注(0)|答案(2)|浏览(93)

大家好,我有一个快速应用程序,我正在使用gitlab添加Gitlab test coverage visualization
这是我的.gitlab-ci.yml

stages:
  - test
  - dockerize
  - staging
  - production

unit-tests:
  stage: test
  script:
    - npm install
    - npm run test
    - npm run test-coverage
    - cat coverage/cobertura-coverage.xml
    - "echo 'Code coverage: 90.90'" 
  coverage: '/Code coverage: \d+\.\d+/'
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$CI_COMMIT_BRANCH == "release-v1"'
  artifacts:
    reports:
      cobertura: coverage/cobertura-coverage.xml
  tags:
   - demo

dockerize-application:
  stage: dockerize
  script:
    - echo "dockerizing application"
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$CI_COMMIT_BRANCH == "release-v1"'
  tags:
   - demo

deploy_to_staging:
  stage: staging
  script:
    - echo "deploying to staging"
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
  tags:
   - demo

deploy_to_production:
  stage: staging
  script:
    - echo "deploying to production"
  rules:
    - if: '$CI_COMMIT_BRANCH == "release-v1"'
  tags:
   - demo

在我的包json中,下面是重要的部分:

"scripts": {
    "start": "node ./bin/www",
    "debug": "nodemon ./bin/www",
    "test": "npx nyc --reporter text mocha",
    "test-coverage": "npx nyc --reporter cobertura mocha"
  }

在日志中,我可以看到覆盖率文件已上载。

Runtime platform                                    arch=amd64 os=windows pid=19548 revision=775dd39d version=13.8.0
coverage/cobertura-coverage.xml: found 1 matching files and directories 
Uploading artifacts as "cobertura" to coordinator... ok  id=1097622443 responseStatus=201 Created token=6wcrN_d_

我做了大量的研究,但我仍然不能找出原因!我认为这是一个功能标志关闭此功能默认,但没有了:
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/43711
下面是我的项目的link:我主要是为了试验gitlab ci/cd

xytpbqjk

xytpbqjk1#

问题是我需要等待整个管道成功,然后才能看到可视化效果。
以下是Gitlab中的一个未决问题:
https://gitlab.com/gitlab-org/gitlab/-/issues/236248

avkwfej4

avkwfej42#

如果您使用一个Docker容器来创建coverage.xml,那么coverage.xml中的sources路径可能会出现错误,例如:

<sources>
    <source>/app/src</source>
</sources>

但是,正如文档中所述,sources标记的路径必须遵循特定的模式。
您可以使用sed在管道内进行此更正,并使用CI_PROJECT_DIR提供正确的路径。

test:
  stage: test
  script: 
    ...
    - docker cp mycontainer:/app/coverage.xml ./coverage.xml
    - sed -i "s#<source>/app/src</source>#<source>${CI_PROJECT_DIR}/src</source>#g" coverage.xml

相关问题