You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by el...@apache.org on 2020/06/07 10:02:01 UTC
[hadoop-ozone] branch master updated: HDDS-3710. Merge archived
jacoco coverage results (rebased version). (#1014)
This is an automated email from the ASF dual-hosted git repository.
elek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 67244e5 HDDS-3710. Merge archived jacoco coverage results (rebased version). (#1014)
67244e5 is described below
commit 67244e55153a61e1e7ad2b2083100677d99922ed
Author: Elek Márton <el...@apache.org>
AuthorDate: Sat Jun 6 13:48:46 2020 +0200
HDDS-3710. Merge archived jacoco coverage results (rebased version). (#1014)
---
.github/coverage-report.sh | 56 ++++++++++++++++++++++++++++++++
.github/workflows/post-commit.yml | 40 ++++++++++++++++++-----
hadoop-ozone/dev-support/checks/sonar.sh | 12 ++++++-
3 files changed, 99 insertions(+), 9 deletions(-)
diff --git a/.github/coverage-report.sh b/.github/coverage-report.sh
new file mode 100755
index 0000000..9e9255d
--- /dev/null
+++ b/.github/coverage-report.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#This script can merge the downloaded jacoco files from other artifacts
+#Works only in github environment where the jacoco .exec files are downloaded
+#from job artifacts
+DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
+cd "$DIR/.." || exit 1
+
+set -ex
+
+REPORT_DIR="$DIR/../target/coverage"
+
+mkdir -p "$REPORT_DIR"
+
+#Install jacoco cli
+mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.2:copy -Dartifact=org.jacoco:org.jacoco.cli:0.8.5:jar:nodeps
+
+jacoco() {
+ java -jar target/dependency/org.jacoco.cli-0.8.5-nodeps.jar "$@"
+}
+
+#Merge all the jacoco.exec files
+jacoco merge $(find target/artifacts -name jacoco-combined.exec) --destfile "$REPORT_DIR/jacoco-all.exec"
+
+rm -rf target/coverage-classes || true
+mkdir -p target/coverage-classes
+
+#Unzip all the classes from the last build
+find hadoop-ozone/dist/target/*/share/ozone/lib -name "hadoop-*.jar" | \
+ grep -E 'hadoop-ozone-|hadoop-hdds-' | \
+ grep -v -E 'shaded|hadoop2|hadoop3|tests' | \
+ xargs -n1 unzip -o -q -d target/coverage-classes
+
+#Exclude some classes from the coverage
+find target/coverage-classes -name proto -type d | xargs rm -rf
+find target/coverage-classes -name generated -type d | xargs rm -rf
+find target/coverage-classes -name v1 -type d | xargs rm -rf
+find target/coverage-classes -name freon -type d | xargs rm -rf
+find target/coverage-classes -name genesis -type d | xargs rm -rf
+
+#generate the reports
+jacoco report "$REPORT_DIR/jacoco-all.exec" --classfiles target/coverage-classes --html "$REPORT_DIR/all" --xml "$REPORT_DIR/all.xml"
diff --git a/.github/workflows/post-commit.yml b/.github/workflows/post-commit.yml
index 5a920e5..fc2dda1 100644
--- a/.github/workflows/post-commit.yml
+++ b/.github/workflows/post-commit.yml
@@ -58,13 +58,6 @@ jobs:
- uses: ./.github/buildenv
with:
args: ./hadoop-ozone/dev-support/checks/unit.sh
- - uses: ./.github/buildenv
- if: github.repository == 'apache/hadoop-ozone'
- with:
- args: ./hadoop-ozone/dev-support/checks/sonar.sh
- env:
- SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/upload-artifact@master
if: always()
with:
@@ -226,4 +219,35 @@ jobs:
if: always()
with:
name: it-ozone
- path: mnt/ozone/target/integration
\ No newline at end of file
+ path: mnt/ozone/target/integration
+ coverage:
+ name: coverage
+ runs-on: ubuntu-18.04
+ needs:
+ - it-ozone
+ - it-hdds-om
+ - it-client
+ - it-filesystem-contract
+ - it-filesystem
+ - it-freon
+ - unit
+ steps:
+ - uses: actions/checkout@v2
+ - uses: ./.github/buildenv
+ with:
+ args: ./hadoop-ozone/dev-support/checks/build.sh
+ - uses: actions/download-artifact@v2
+ with:
+ path: target/artifacts
+ - run: ./.github/coverage-report.sh
+ - uses: ./.github/buildenv
+ if: github.repository == 'apache/hadoop-ozone'
+ with:
+ args: ./hadoop-ozone/dev-support/checks/sonar.sh
+ env:
+ SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - uses: actions/upload-artifact@master
+ with:
+ name: coverage
+ path: target/coverage
diff --git a/hadoop-ozone/dev-support/checks/sonar.sh b/hadoop-ozone/dev-support/checks/sonar.sh
index 55f219b..5ab3308 100755
--- a/hadoop-ozone/dev-support/checks/sonar.sh
+++ b/hadoop-ozone/dev-support/checks/sonar.sh
@@ -13,11 +13,21 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+set -x
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
-cd "$DIR/../../.." || exit 1
+PROJECT_DIR="$(realpath "$DIR"/../../..)"
+cd "$PROJECT_DIR" || exit 1
if [ ! "$SONAR_TOKEN" ]; then
echo "SONAR_TOKEN environment variable should be set"
exit 1
fi
+
+#Workaround: Sonar expects per-project Sonar XML report, but we have one, combined. Sonar seems to handle it well.
+# Only the classes from the current project will be used. We can copy the same, combined report to all the subprojects.
+if [ -f "$PROJECT_DIR/target/coverage/all.xml" ]; then
+ find "$PROJECT_DIR" -name pom.xml | grep -v target | xargs dirname | xargs -n1 -IDIR mkdir -p DIR/target/coverage/
+ find "$PROJECT_DIR" -name pom.xml | grep -v target | xargs dirname | xargs -n1 -IDIR cp "$PROJECT_DIR/target/coverage/all.xml" DIR/target/coverage/
+fi
+
mvn -B verify -DskipShade -DskipTests -Dskip.yarn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache -Dsonar.projectKey=hadoop-ozone
---------------------------------------------------------------------
To unsubscribe, e-mail: ozone-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: ozone-commits-help@hadoop.apache.org