From 8df87254a773afdc1d5d2d76c4a759a2a901e10c Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 29 Jan 2016 21:39:18 +0100 Subject: [PATCH] Enable deploy to SonarSource maven repository --- .travis.yml | 2 + pom.xml | 103 ++++++++++++++++++++++++++++++++++++++++++++++++---- travis.sh | 68 +++++++++++++++++++--------------- 3 files changed, 136 insertions(+), 37 deletions(-) diff --git a/.travis.yml b/.travis.yml index 642c387a3e0..19fdf98b294 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,3 +33,5 @@ before_cache: notifications: email: false + webhooks: + - secure: "UsCLBZ1wEQkEPhlIETa8127r+/e+p0NFQR2f6XxvpDdyogQsgsmdz5nOjdttrWItbNNPGyZu+d/W6a/BckpS+hZBgbGbnwKe2Ht6VVIWvhDgcyXpM19CQqfXQVaGpnLTDwXy4ajases1aqsvGaUrljII74phkij/AhnIURxH/FY=" diff --git a/pom.xml b/pom.xml index fb246f606b9..fa4dbe85b7c 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,9 @@ -Xmx512m -Djava.awt.headless=true -XX:MaxPermSize=160m true + + + sonarqube @@ -1484,13 +1487,6 @@ - - analysis - - true - - - it @@ -1498,6 +1494,99 @@ it + + + deploy-sonarsource + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-deploy-settings + + enforce + + + + + gitRepositoryName + You must set name of Git repository in your pom + + + ARTIFACTORY_URL + + + ARTIFACTORY_DEPLOY_REPO + + + ARTIFACTORY_DEPLOY_USERNAME + + + ARTIFACTORY_DEPLOY_PASSWORD + + + true + + + + + + + org.jfrog.buildinfo + artifactory-maven-plugin + 2.4.0 + false + + + build-info + + publish + + + + + *password*,*PASSWORD*,*secret*,*MAVEN_CMD_LINE_ARGS*,sun.java.command,*token*,*TOKEN*,*LOGIN*,*login* + + true + 60 + + + {{GIT_COMMIT|TRAVIS_COMMIT}} + {{GIT_BRANCH|TRAVIS_BRANCH}} + ${gitRepositoryName} + {{BUILD_ID|TRAVIS_BUILD_NUMBER}} + + + true + false + true + project,provided + licences-control@sonarsource.com + + + ${env.ARTIFACTORY_URL} + ${env.ARTIFACTORY_DEPLOY_REPO} + ${env.ARTIFACTORY_DEPLOY_USERNAME} + ${env.ARTIFACTORY_DEPLOY_PASSWORD} + true + true + + + ${gitRepositoryName} + {{BUILD_ID|TRAVIS_BUILD_NUMBER}} + {{CI_BUILD_URL|BUILD_URL}} + {{GIT_COMMIT|TRAVIS_COMMIT}} + + + + + + + + diff --git a/travis.sh b/travis.sh index 045a2adef2a..f5114aef97b 100755 --- a/travis.sh +++ b/travis.sh @@ -2,11 +2,12 @@ set -euo pipefail -function installTravisTools { +function configureTravis { mkdir ~/.local - curl -sSL https://github.com/SonarSource/travis-utils/tarball/v21 | tar zx --strip-components 1 -C ~/.local + curl -sSL https://github.com/SonarSource/travis-utils/tarball/v23 | tar zx --strip-components 1 -C ~/.local source ~/.local/bin/install } +configureTravis function strongEcho { echo "" @@ -16,45 +17,54 @@ function strongEcho { case "$TARGET" in CI) - if [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then - # For security reasons environment variables are not available on the pull requests - # coming from outside repositories - # http://docs.travis-ci.com/user/pull-requests/#Security-Restrictions-when-testing-Pull-Requests - - strongEcho 'Build and analyze pull request' - # this pull request must be built and analyzed (without upload of report) - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent verify sonar:sonar \ - -Panalysis \ - -Dclirr=true \ - -Dsonar.analysis.mode=issues \ - -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 \ - -B -e -V -U + if [ "${TRAVIS_BRANCH}" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + strongEcho 'Build and deploy' + + # Do not deploy a SNAPSHOT version but the release version related to this build + set_maven_build_version $TRAVIS_BUILD_NUMBER + + mvn deploy \ + -Pdeploy-sonarsource \ + -Dmaven.test.redirectTestOutputToFile=false \ + -B -e -V + + elif [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ -n "${GITHUB_TOKEN-}" ]; then + strongEcho 'Build and analyze pull request, no deploy' + + # No need for Maven phase "install" as the generated JAR file does not need to be installed + # in Maven local repository. Phase "verify" is enough. + + mvn org.jacoco:jacoco-maven-plugin:prepare-agent verify sonar:sonar \ + -Pcoverage-per-test \ + -Dclirr=true \ + -Dmaven.test.redirectTestOutputToFile=false \ + -Dsonar.analysis.mode=issues \ + -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 \ + -B -e -V else - strongEcho 'Build, no analysis' - # Build branch, without any analysis + strongEcho 'Build, no analysis, no deploy' - # No need for Maven goal "install" as the generated JAR file does not need to be installed - # in Maven local repository - mvn verify -B -e -V + # No need for Maven phase "install" as the generated JAR file does not need to be installed + # in Maven local repository. Phase "verify" is enough. + + mvn verify \ + -Dmaven.test.redirectTestOutputToFile=false \ + -B -e -V fi ;; POSTGRES) - installTravisTools - psql -c 'create database sonar;' -U postgres runDatabaseCI "postgresql" "jdbc:postgresql://localhost/sonar" "postgres" "" ;; MYSQL) - installTravisTools - mysql -e "CREATE DATABASE sonar CHARACTER SET UTF8;" -uroot mysql -e "CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'sonar';" -uroot mysql -e "GRANT ALL ON sonar.* TO 'sonar'@'localhost';" -uroot @@ -74,8 +84,6 @@ IT) if [ "$IT_CATEGORY" == "Plugins" ] && [ ! -n "$GITHUB_TOKEN" ]; then echo "This job is ignored as it needs to access a private GitHub repository" else - installTravisTools - start_xvfb mvn install -Pit,dev -DskipTests -Dcategory=$IT_CATEGORY -Dmaven.test.redirectTestOutputToFile=false -e -Dsource.skip=true -- 2.39.5