Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #!/bin/bash
  2. set -euo pipefail
  3. ./.travis/setup_ramdisk.sh
  4. #
  5. # A (too) old version of JDK8 is installed by default on Travis.
  6. # This method is preferred over Travis apt oracle-java8-installer because
  7. # JDK is kept in cache. It does not need to be downloaded from Oracle
  8. # at each build.
  9. #
  10. function installJdk8 {
  11. echo "Setup JDK 1.8u161"
  12. mkdir -p ~/jvm
  13. pushd ~/jvm > /dev/null
  14. if [ ! -d "jdk1.8.0_161" ]; then
  15. wget --quiet --continue --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz
  16. tar xzf jdk-8u161-linux-x64.tar.gz
  17. rm jdk-8u161-linux-x64.tar.gz
  18. fi
  19. popd > /dev/null
  20. export JAVA_HOME=~/jvm/jdk1.8.0_161
  21. export PATH=$JAVA_HOME/bin:$PATH
  22. }
  23. function installNode {
  24. set +u
  25. source ~/.nvm/nvm.sh && nvm install 8
  26. set -u
  27. }
  28. #
  29. # Configure Maven settings and install some script utilities
  30. #
  31. function configureTravis {
  32. mkdir -p ~/.local
  33. curl -sSL https://github.com/SonarSource/travis-utils/tarball/v41 | tar zx --strip-components 1 -C ~/.local
  34. source ~/.local/bin/install
  35. }
  36. configureTravis
  37. # When a pull request is open on the branch, then the job related
  38. # to the branch does not need to be executed and should be canceled.
  39. # It does not book slaves for nothing.
  40. # @TravisCI please provide the feature natively, like at AppVeyor or CircleCI ;-)
  41. cancel_branch_build_with_pr || if [[ $? -eq 1 ]]; then exit 0; fi
  42. # configure environment variables for Artifactory
  43. export GIT_COMMIT=$TRAVIS_COMMIT
  44. export BUILD_NUMBER=$TRAVIS_BUILD_NUMBER
  45. if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
  46. export GIT_BRANCH=$TRAVIS_BRANCH
  47. unset PULL_REQUEST_BRANCH_TARGET
  48. unset PULL_REQUEST_NUMBER
  49. else
  50. export GIT_BRANCH=$TRAVIS_PULL_REQUEST_BRANCH
  51. export PULL_REQUEST_BRANCH_TARGET=$TRAVIS_BRANCH
  52. export PULL_REQUEST_NUMBER=$TRAVIS_PULL_REQUEST
  53. fi
  54. case "$TARGET" in
  55. BUILD)
  56. installJdk8
  57. installNode
  58. # Used by Next
  59. export INITIAL_VERSION=$(cat gradle.properties | grep version | awk -F= '{print $2}')
  60. # Fetch all commit history so that SonarQube has exact blame information
  61. # for issue auto-assignment
  62. # This command can fail with "fatal: --unshallow on a complete repository does not make sense"
  63. # if there are not enough commits in the Git repository (even if Travis executed git clone --depth 50).
  64. # For this reason errors are ignored with "|| true"
  65. git fetch --unshallow || true
  66. if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
  67. echo 'Build and analyze master'
  68. ./gradlew --no-daemon --console plain \
  69. -DbuildNumber=$BUILD_NUMBER \
  70. build sonarqube artifactoryPublish -PjacocoEnabled=true -Prelease=true \
  71. -Dsonar.host.url=$SONAR_HOST_URL \
  72. -Dsonar.login=$SONAR_TOKEN \
  73. -Dsonar.projectVersion=$INITIAL_VERSION \
  74. -Dsonar.analysis.buildNumber=$BUILD_NUMBER \
  75. -Dsonar.analysis.pipeline=$BUILD_NUMBER \
  76. -Dsonar.analysis.sha1=$GIT_COMMIT \
  77. -Dsonar.analysis.repository=$TRAVIS_REPO_SLUG
  78. elif [[ "$TRAVIS_BRANCH" == "branch-"* ]] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
  79. echo 'Build release branch'
  80. ./gradlew --no-daemon --console plain \
  81. -DbuildNumber=$BUILD_NUMBER \
  82. build sonarqube artifactoryPublish -PjacocoEnabled=true -Prelease=true \
  83. -Dsonar.host.url=$SONAR_HOST_URL \
  84. -Dsonar.login=$SONAR_TOKEN \
  85. -Dsonar.branch.name=$TRAVIS_BRANCH \
  86. -Dsonar.projectVersion=$INITIAL_VERSION \
  87. -Dsonar.analysis.buildNumber=$BUILD_NUMBER \
  88. -Dsonar.analysis.pipeline=$BUILD_NUMBER \
  89. -Dsonar.analysis.sha1=$GIT_COMMIT \
  90. -Dsonar.analysis.repository=$TRAVIS_REPO_SLUG
  91. elif [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ -n "${GITHUB_TOKEN:-}" ]; then
  92. echo 'Build and analyze internal pull request'
  93. ./gradlew --no-daemon --console plain \
  94. -DbuildNumber=$BUILD_NUMBER \
  95. build sonarqube artifactoryPublish -PjacocoEnabled=true -Prelease=true \
  96. -Dsonar.host.url=$SONAR_HOST_URL \
  97. -Dsonar.login=$SONAR_TOKEN \
  98. -Dsonar.analysis.buildNumber=$BUILD_NUMBER \
  99. -Dsonar.analysis.pipeline=$BUILD_NUMBER \
  100. -Dsonar.analysis.sha1=$TRAVIS_PULL_REQUEST_SHA \
  101. -Dsonar.analysis.prNumber=$TRAVIS_PULL_REQUEST \
  102. -Dsonar.analysis.repository=$TRAVIS_REPO_SLUG \
  103. -Dsonar.pullrequest.key=$TRAVIS_PULL_REQUEST \
  104. -Dsonar.pullrequest.branch=$TRAVIS_PULL_REQUEST_BRANCH \
  105. -Dsonar.pullrequest.base=$TRAVIS_BRANCH \
  106. -Dsonar.pullrequest.provider=github \
  107. -Dsonar.pullrequest.github.repository=$TRAVIS_REPO_SLUG
  108. else
  109. echo 'Build feature branch or external pull request'
  110. ./gradlew --no-daemon --console plain \
  111. -DbuildNumber=$BUILD_NUMBER -Prelease=true \
  112. build artifactoryPublish
  113. fi
  114. ;;
  115. WEB_TESTS)
  116. installNode
  117. curl -o- -L https://yarnpkg.com/install.sh | bash
  118. export PATH=$HOME/.yarn/bin:$PATH
  119. cd server/sonar-web && yarn && yarn validate
  120. ;;
  121. *)
  122. echo "Unexpected TARGET value: $TARGET"
  123. exit 1
  124. ;;
  125. esac