123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- #!/bin/bash
- set -euo pipefail
-
- ./.travis/setup_ramdisk.sh
-
- #
- # A (too) old version of JDK8 is installed by default on Travis.
- # This method is preferred over Travis apt oracle-java8-installer because
- # JDK is kept in cache. It does not need to be downloaded from Oracle
- # at each build.
- #
- function installJdk8 {
- echo "Setup JDK 1.8u131"
- mkdir -p ~/jvm
- pushd ~/jvm > /dev/null
- if [ ! -d "jdk1.8.0_131" ]; then
- wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
- tar xzf jdk-8u131-linux-x64.tar.gz
- rm jdk-8u131-linux-x64.tar.gz
- fi
- popd > /dev/null
- export JAVA_HOME=~/jvm/jdk1.8.0_131
- export PATH=$JAVA_HOME/bin:$PATH
- }
-
- #
- # Maven 3.2.5 is installed by default on Travis. Maven 3.3.9 is preferred.
- #
- function installMaven {
- echo "Setup Maven"
- mkdir -p ~/maven
- pushd ~/maven > /dev/null
- if [ ! -d "apache-maven-3.3.9" ]; then
- echo "Download Maven 3.3.9"
- curl -sSL http://apache.mirrors.ovh.net/ftp.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz | tar zx -C ~/maven
- fi
- popd > /dev/null
- export M2_HOME=~/maven/apache-maven-3.3.9
- export PATH=$M2_HOME/bin:$PATH
- }
-
- #
- # Replaces the version defined in sources, usually x.y-SNAPSHOT,
- # by a version identifying the build.
- # The build version is composed of 4 fields, including the semantic version and
- # the build number provided by Travis.
- #
- # Exported variables:
- # - INITIAL_VERSION: version as defined in pom.xml
- # - BUILD_VERSION: version including the build number
- # - PROJECT_VERSION: target Maven version. The name of this variable is important because
- # it's used by QA when extracting version from Artifactory build info.
- #
- # Example of SNAPSHOT
- # INITIAL_VERSION=6.3-SNAPSHOT
- # BUILD_VERSION=6.3.0.12345
- # PROJECT_VERSION=6.3.0.12345
- #
- # Example of RC
- # INITIAL_VERSION=6.3-RC1
- # BUILD_VERSION=6.3.0.12345
- # PROJECT_VERSION=6.3-RC1
- #
- # Example of GA
- # INITIAL_VERSION=6.3
- # BUILD_VERSION=6.3.0.12345
- # PROJECT_VERSION=6.3
- #
- function fixBuildVersion {
- export INITIAL_VERSION=`maven_expression "project.version"`
-
- # remove suffix -SNAPSHOT or -RC
- without_suffix=`echo $INITIAL_VERSION | sed "s/-.*//g"`
-
- IFS=$'.'
- fields_count=`echo $without_suffix | wc -w`
- unset IFS
- if [ $fields_count -lt 3 ]; then
- export BUILD_VERSION="$without_suffix.0.$TRAVIS_BUILD_NUMBER"
- else
- export BUILD_VERSION="$without_suffix.$TRAVIS_BUILD_NUMBER"
- fi
-
- if [[ "${INITIAL_VERSION}" == *"-SNAPSHOT" ]]; then
- # SNAPSHOT
- export PROJECT_VERSION=$BUILD_VERSION
- mvn org.codehaus.mojo:versions-maven-plugin:2.2:set -DnewVersion=$PROJECT_VERSION -DgenerateBackupPoms=false -B -e
- else
- # not a SNAPSHOT: milestone, RC or GA
- export PROJECT_VERSION=$INITIAL_VERSION
- fi
-
- echo "Build Version : $BUILD_VERSION"
- echo "Project Version: $PROJECT_VERSION"
- }
-
- #
- # Configure Maven settings and install some script utilities
- #
- function configureTravis {
- mkdir -p ~/.local
- curl -sSL https://github.com/SonarSource/travis-utils/tarball/v36 | tar zx --strip-components 1 -C ~/.local
- source ~/.local/bin/install
- }
- configureTravis
-
- # When pull request exists on the branch, then the job related to the branch does not need
- # to be executed and should be canceled. It does not book slaves for nothing.
- # @TravisCI please provide the feature natively, like at AppVeyor or CircleCI ;-)
- cancel_branch_build_with_pr
-
- case "$TARGET" in
-
- BUILD)
-
- installJdk8
- installMaven
- fixBuildVersion
-
- # Minimal Maven settings
- export MAVEN_OPTS="-Xmx1G -Xms128m"
- MAVEN_ARGS="-T 1C -Dmaven.test.redirectTestOutputToFile=false -Dsurefire.useFile=false -B -e -V -DbuildVersion=$BUILD_VERSION"
-
- if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
- echo 'Build and analyze master'
-
- # Fetch all commit history so that SonarQube has exact blame information
- # for issue auto-assignment
- # This command can fail with "fatal: --unshallow on a complete repository does not make sense"
- # if there are not enough commits in the Git repository (even if Travis executed git clone --depth 50).
- # For this reason errors are ignored with "|| true"
- git fetch --unshallow || true
-
- mvn org.jacoco:jacoco-maven-plugin:prepare-agent deploy \
- $MAVEN_ARGS \
- -Pdeploy-sonarsource,release
- mvn sonar:sonar \
- -Dsonar.host.url=$SONAR_HOST_URL \
- -Dsonar.login=$SONAR_TOKEN \
- -Dsonar.projectVersion=$INITIAL_VERSION
-
-
- elif [[ "$TRAVIS_BRANCH" == "branch-"* ]] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
- echo 'Build release branch'
-
- mvn deploy $MAVEN_ARGS -Pdeploy-sonarsource,release
-
- elif [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ -n "${GITHUB_TOKEN:-}" ]; then
- echo 'Build and analyze internal pull request'
-
- mvn org.jacoco:jacoco-maven-plugin:prepare-agent deploy \
- $MAVEN_ARGS \
- -Dsource.skip=true \
- -Pdeploy-sonarsource
- mvn sonar:sonar \
- -Dsonar.analysis.mode=preview \
- -Dsonar.github.pullRequest=$TRAVIS_PULL_REQUEST \
- -Dsonar.github.repository=$TRAVIS_REPO_SLUG \
- -Dsonar.github.oauth=$GITHUB_TOKEN \
- -Dsonar.host.url=$SONAR_HOST_URL \
- -Dsonar.login=$SONAR_TOKEN
-
- else
- echo 'Build feature branch or external pull request'
-
- mvn install $MAVEN_ARGS -Dsource.skip=true
- fi
-
- ./run-integration-tests.sh "Lite" ""
- ;;
-
- WEB_TESTS)
- set +u
- source ~/.nvm/nvm.sh && nvm install 6
- curl -o- -L https://yarnpkg.com/install.sh | bash
- export PATH=$HOME/.yarn/bin:$PATH
- cd server/sonar-web && yarn && yarn validate
- ;;
-
- *)
- echo "Unexpected TARGET value: $TARGET"
- exit 1
- ;;
-
- esac
|