Вопрос:

Отчет о покрытии кода с использованием файла gitlab-ci.yml

maven gitlab code-coverage gitlab-ci jacoco

14605 просмотра

4 ответа

349 Репутация автора

Мне нужно увидеть отчет о покрытии кода для проекта Java Java в Gitlab. Согласно этому , этому и некоторым другим источникам:

  1. Я добавил jacocoв список плагинов pom.xml.
  2. Добавил работу страниц в мой .gitlab-ci.ymlфайл.
  3. Добавлен Total.*?([0-9]{1,3})%разбор покрытия кода в настройках проекта.

но нет никакого отчета о покрытии или, по крайней мере, я его не вижу. Там нет процента покрытия или страницы отчета о покрытии.

Содержание .gitlab-ci.ymlфайла:

image: maven:latest

variables:
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"

cache:
  paths:
    - .m2/repository/

build:
  stage: build
  script:
    - mvn $MAVEN_CLI_OPTS compile

test:
  stage: test
  script:
    - mvn $MAVEN_CLI_OPTS test
  artifacts:
    paths:
      - target/site/jacoco/
pages:
  stage: deploy
  dependencies:
    - test
  script:
   - mkdir public
   - mv target/site/jacoco/index.html public
  artifacts:
    paths:
      - public

deploy:
  stage: deploy
  script:
    - mvn $MAVEN_CLI_OPTS verify
  only:
    - master

jacocoплагин в pom.xml:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.5.201505241946</version>
    <executions>
        <execution>
            <id>pre-unit-test</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>post-unit-test</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Мой проект является частным проектом gitlab.com.

Трубопровод и все его 4 задания успешно пройдены.

Как я могу увидеть отчеты о покрытии?

Автор: AshKan Источник Размещён: 30.12.2017 09:52

Ответы (4)


10 плюса

191 Репутация автора

Сотрудник GitLab здесь.

Если у вашего администратора настроены страницы GitLab, вы можете увидеть URL, на котором развернут ваш артефакт, перейдя (в вашем проекте) к Settings-> Pages.

Там вы должны увидеть:

Поздравляем! Ваши страницы обслуживаются в: https://your-namespace.example.com/your-project

Нажмите на эту ссылку, и вы должны быть в порядке! Также мы расширяем поддержку артефактов HTML. Эта проблема и связанные с ней проблемы говорят о существующих и будущих функциях, которые могут расширить то, что вы создали здесь.

Автор: user9113436 Размещён: 01.01.2018 03:34

1 плюс

1006 Репутация автора

Добавьте конфигурацию для цели prepare-agent

 <configuration>
 <!-- Sets the path to the file which contains the execution data. -->
 <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
 <!--Sets the name of the property containing the settings
                            for JaCoCo runtime agent.-->
 <propertyName>surefireArgLine</propertyName>
 </configuration>

А также в плагине maven-surefire-plugin добавьте следующее свойство при настройке

<argLine>surefireArgLine</argLine>

При выполнении вашей цели теста. Отчеты будут генерироваться. Сгенерированный jacoco-ut.exec можно просматривать только с помощью IDE.

Вот пример проекта https://github.com/r-sreesaran/http-patch-jax-rs

Для получения дополнительной информации см. Https://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/

В файле .gitlab-ci.yml в разделе «артефакты» адаптируйте его в соответствии с конфигурацией пути в вашем pom.xml

artifacts:
   paths:
     - target/coverage-reports/
Автор: Sree Размещён: 08.01.2018 09:07

20 плюса

350 Репутация автора

Кажется, вы забыли добавить вызовы catв ваш .gitlab-ci.ymlфайл.

У вас должно быть что-то подобное:

script:
    - mvn $MAVEN_CLI_OPTS test
    - cat target/site/jacoco/index.html

При этом, я не думаю, что это лучший способ сделать это, так как вам нужно загрязнить ваш вывод необработанным HTML, чтобы получить желаемое значение покрытия.

Я бы порекомендовал использовать метод, описанный в этом запросе, вместо этого: https://github.com/jacoco/jacoco/pull/488.

  • Держите части Jacoco в вашем build.xml
  • Используйте эту инструкцию на языке awk, чтобы напечатать правильную сумму покрытия кода:

    awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", 
    instructions, "instructions covered"; print 100*covered/instructions, "% 
    covered" }' target/site/jacoco/jacoco.csv
    
  • Замените регулярное выражение Gitlab CI тем, что возвращает инструкция: \d+.\d+ \% covered

Редактировать:

Начиная с Gitlab 8.17, вы можете определить регулярное выражение непосредственно внутри .gitlab-ci.ymlфайла, как указано в документации .

Это может показаться излишним, но если это регулярное выражение теперь является частью вашей истории репозитория, вы можете изменить его вместе с другими инструментами, используемыми для его вычисления.

Автор: SKBo Размещён: 13.02.2018 11:39

1 плюс

94 Репутация автора

В дополнение к тому, что @SKBo сказал, я хотел бы добавить небольшой твик.

имеющий

цель кошки / сайт / jacoco / index.html

будет загрязнять вас при создании выходных, что затруднит понимание того, что важно.

Я бы предложил это:

cat your/path/to/jacoco/report/index.html | grep -o '<tfoot>.*</tfoot>'

Это значительно уменьшит шум

Автор: Maciej Размещён: 08.03.2019 11:59
Вопросы из категории :
32x32