| #!/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. | |
| # | |
| usage() { | |
| echo | |
| echo "Options:" | |
| echo " -h Display help" | |
| echo " -u SonarQube Host URL" | |
| echo " -l SonarQube Login Credentials" | |
| echo " -k SonarQube Project Key" | |
| echo " -n SonarQube Project Name" | |
| echo | |
| echo "Important:" | |
| echo " The required parameters for publishing the coverage results to SonarQube are:" | |
| echo " - Host URL" | |
| echo " - Login Credentials" | |
| echo " - Project Key" | |
| echo | |
| } | |
| execute() { | |
| SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" | |
| MAIN_POM="${SCRIPT_DIR}/../../pom.xml" | |
| echo "Running unit and integration tests with runAllTests profile" | |
| mvn -B -e -f "${MAIN_POM}" clean test -PrunAllTests -Pjacoco -Pbuild-with-jdk11 -fn | |
| echo "Starting verifying phase" | |
| mvn -B -e -f "${MAIN_POM}" verify -DskipTests -DskipITs -Pjacoco -Pbuild-with-jdk11 -fn | |
| echo "Starting sonar scanner analysis" | |
| # If the required parameters are given, the code coverage results are uploaded to the SonarQube Server | |
| if [ -n "$SONAR_LOGIN" ] && [ -n "$SONAR_PROJECT_KEY" ] && [ -n "$SONAR_URL" ]; then | |
| mvn -B -e -f "${MAIN_POM}" sonar:sonar -Dsonar.host.url="$SONAR_URL" \ | |
| -Dsonar.login="$SONAR_LOGIN" -Dsonar.projectKey="$SONAR_PROJECT_KEY" \ | |
| -Dsonar.projectName="$SONAR_PROJECT_NAME" -Pjacoco | |
| fi | |
| echo "Build finished" | |
| } | |
| while getopts ":u:l:k:n:h" option; do | |
| case $option in | |
| u) SONAR_URL=${OPTARG:-} ;; | |
| l) SONAR_LOGIN=${OPTARG:-} ;; | |
| k) SONAR_PROJECT_KEY=${OPTARG:-} ;; | |
| n) SONAR_PROJECT_NAME=${OPTARG:-} ;; | |
| h) # Display usage | |
| usage | |
| exit | |
| ;; | |
| \?) # Invalid option | |
| echo "Error: Invalid option" | |
| exit | |
| ;; | |
| esac | |
| done | |
| # Start code analysis | |
| execute |