Gitlab CI не может найти отчет о покрытии sonarqube, работает локально - PullRequest
0 голосов
/ 07 апреля 2020

У меня angular приложение, развернутое через gitlab ci. Развертывание на размещенном экземпляре Sonarqube выполняется go, хотя ни один из отчетов о покрытии кода, к сожалению, не отображается

Мой файл gitlab yml выглядит следующим образом


stages:
  - test
  - deploy

unittests:
  image: markhobson/node-chrome:latest
  stage: test
  variables:
    NODE_ENV: development
  before_script:
    - npm install
  script: 
    - npm run test
    - npm run sonar


production:
  type: deploy
  stage: deploy
  image: ruby:latest
  script:
    - echo "Heroku api key = $HEROKU_API_KEY"
    - echo "Heroku appname = $HEROKU_APP_NAME"
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_API_KEY
  only:
    - master

И мой сонарный проект. Файл свойств выглядит следующим образом:

sonar.host.url=HOSTURL

sonar.projectKey=SONARKEYNAME
sonar.login=
sonar.password=
sonar.projectName=SONARKEYNAME
sonar.gitlab.project_id=GITLABURL

sonar.typescript.lcov.reportPaths=/coverage/client/lcov.info
sonar.javascript.lcov.reportPaths=/coverage/client/lcov.info

# --- optional properties ---
sonar.projectVersion=0.0.1
sonar.exclusions=client/node_modules/**, node_modules/**
sonar.sourceEncoding=UTF-8
sonar.verbose=false
sonar.working.directory=.scannerwork

sonar.projectBaseDir=.
sonar.sources=./src/app
sonar.sourceEncoding=UTF-8

sonar.exclusions=node_modules/**,**/*.spec.ts,**/*.css
sonar.test.inclusions=**/*.spec.ts

Каждый раз, когда я развертываю приложение через CI, я получаю следующее сообщение:

Provided LCOV file path: coverage/client/lcov.info. Seek file with the path: /builds/USERNAME/REPONAME/coverage/client/lcov.info
No coverage information will be saved because all LCOV report files cannot be found.

Кто-нибудь знает, как решить эту ошибку и почему не происходит при локальном запуске сонарного сканирования (без CI)

1 Ответ

0 голосов
/ 07 апреля 2020

После долгого поиска выяснилось, что покрытие кода не было включено в настройках angular.json. Я добавил следующее в "test":

          "options": {
            "codeCoverage": true,
            "main": "src/test.ts"
           }

Покрытие правильно отображается с помощью gitlab CI и локального выполнения команды

...