GitlabのJava mavenプロジェクトのコードカバレッジレポートを見る必要があります。 this 、 this およびその他のソースによると:
jacoco
をpom.xml
のプラグインのリストに追加しました。.gitlab-ci.yml
ファイルにページジョブを追加しました。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
pom.xml
のjacoco
プラグイン:
<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つのすべてのジョブが正常に渡されました。
カバレッジレポートを表示するにはどうすればよいですか?
.gitlab-ci.yml
ファイルにcat
への呼び出しを追加するのを忘れたようです。
次のようなものが必要です。
script:
- mvn $MAVEN_CLI_OPTS test
- cat target/site/jacoco/index.html
そうは言っても、希望するカバレッジ値を取得するには生のHTMLで出力を汚染する必要があるため、これがこれを行う最適な方法だとは思いません。
代わりに、このプルリクエストで説明されている方法を使用することをお勧めします。 https://github.com/jacoco/jacoco/pull/488
build.xml
にjacocoパーツを保管しますこの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の時点で、 documentation に記載されているように、.gitlab-ci.yml
ファイル内で正規表現を直接定義できます。
余分なように見えるかもしれませんが、この正規表現がリポジトリ履歴の一部になっている場合は、計算に使用される他のツールと一緒に変更できます。
GitLabの従業員はこちら。
管理者がGitLabページをセットアップしている場合、(プロジェクトで)Settings
-> Pages
に移動することで、アーティファクトがデプロイされたURLを確認できます。
そこに表示されるはずです:
おめでとうございます!ページは次の場所で提供されます:https://your-namespace.example.com/your-project
そのリンクをクリックしてください。また、HTMLアーティファクトのサポートを拡大しています。 この問題 および関連する問題は、ここで作成したものを拡張する可能性のある既存および今後の機能について説明します。
@SKBoが言ったことに加えて、小さなTweakを追加したいと思います。
持っている
cat target/site/jacoco/index.html
重要なものを読みにくくして、あなたが作成した出力を汚染します。
私はそれをお勧めします:
cat your/path/to/jacoco/report/index.html | grep -o '<tfoot>.*</tfoot>'
それは素晴らしい方法でノイズを減らすでしょう
目標準備エージェントの構成を追加します
<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
セクション「アーティファクト」の下の.gitlab-ci.ymlファイルで、pom.xmlのパス構成に従ってそれを調整します。
artifacts:
paths:
- target/coverage-reports/