From: Lott, Christopher (cl778h) Date: Fri, 6 Sep 2019 00:38:46 +0000 (-0400) Subject: Repair tox-sonar behavior by restoring mvn goal X-Git-Tag: v0.43.0~5 X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=commitdiff_plain;h=f5172109fc4ca477ad8e4764f41ef03f43fe0956;p=releng%2Fglobal-jjb.git Repair tox-sonar behavior by restoring mvn goal Use existing builder lf-infra-maven-sonar, drop the locally defined builder lf-infra-tox-sonar, to get desired behavior of generating code analysis then publishing to Sonar. This broke when hardcoded goals were removed from maven-sonar.sh. Change-Id: I862c4857d60361d77b390425d50f3c7c77e3919d Issue: RELENG-2359 Signed-off-by: Lott, Christopher (cl778h) --- diff --git a/docs/jjb/lf-python-jobs.rst b/docs/jjb/lf-python-jobs.rst index 15c5b088..c36ba8b9 100644 --- a/docs/jjb/lf-python-jobs.rst +++ b/docs/jjb/lf-python-jobs.rst @@ -35,16 +35,6 @@ Install Tox into a virtualenv. :python-version: Version of Python to install into the Tox virtualenv. Eg. python2 / python3 -lf-infra-tox-sonar ------------------- - -Runs Sonar scanning against a Python project. - -:Required Parameters: - - :java-version: Version of Java to use to run Sonar. - :mvn-version: Version of Maven to use to run Sonar. - lf-tox-install -------------- @@ -116,11 +106,11 @@ IQ Server. Python Sonar with Tox --------------------- -Sonar scans for Python based repos. This job will perform a tox call which -runs the coverage command to gather tests results. These test results get -published back into Sonar after running the Sonar goals. +Sonar scans for Python based repos. This job will invoke tox to run tests +and gather coverage statistics from test results. Then the job invokes Maven +with a Sonar goal, which runs a plugin to publish results to a Sonar server. -To get the Sonar coverage results, tox.ini needs to exist and configured +To get the Sonar coverage results, tox.ini needs to exist and be configured with coverage commands to run. The coverage commands define the code that gets executed by the test suites. @@ -156,24 +146,29 @@ https://docs.sonarqube.org/display/PLUG/Python+Coverage+Results+Import :build-node: The node to run build on. :jenkins-ssh-credential: Credential to use for SSH. (Generally should get configured in defaults.yaml) - :mvn-settings: The name of settings file containing credentials for the project. + :mvn-settings: The name of the settings file with credentials for the project. :Optional parameters: + :branch: Git branch, should be master (default: master) :build-days-to-keep: Days to keep build logs in Jenkins. (default: 7) :build-timeout: Timeout in minutes before aborting build. (default: 60) :cron: Cron schedule when to trigger the job. This parameter also supports multiline input via YAML pipe | character in cases where one may want to provide more than 1 cron timer. (default: H 11 * * * to run once a day) + :disable-job: Whether to disable the job (default: false) :git-url: URL clone project from. (default: $GIT_URL/$PROJECT) + :github-url: URL for Github. (default: https://github.com) :java-version: Version of Java to use for the build. (default: openjdk8) :mvn-global-settings: The name of the Maven global settings to use for - Maven configuration. (default: global-settings) + :mvn-goals: The Maven goal to run first. (default: validate) :mvn-version: Version of maven to use. (default: mvn35) :pre-build-script: Shell script to execute before the Sonar builder. For example, install prerequisites or move files to the repo root. (default: a string with only a comment) + :python-version: Python version (default: python2) + :sonar-mvn-goal: The Maven goal to run the Sonar plugin. (default: sonar:sonar) :stream: Keyword used to represent a release code-name. Often the same as the branch. (default: master) :submodule-recursive: Whether to checkout submodules recursively. diff --git a/jjb/lf-python-jobs.yaml b/jjb/lf-python-jobs.yaml index 0f38b035..0fdb2a2d 100644 --- a/jjb/lf-python-jobs.yaml +++ b/jjb/lf-python-jobs.yaml @@ -206,9 +206,9 @@ - "{branch}" included-regions: "{obj:github_included_regions}" -######################## +######################### # Python Sonar with Tox # -######################## +######################### - lf_tox_sonar: &lf_tox_sonar name: lf-tox_sonar @@ -225,11 +225,12 @@ git-url: "$GIT_URL/$PROJECT" github-url: "https://github.com" java-version: openjdk8 - pre-build-script: "# pre-build script goes here" - python-version: python2 mvn-global-settings: global-settings + mvn-goals: validate mvn-settings: "{mvn-settings}" mvn-version: mvn35 + pre-build-script: "# pre-build script goes here" + python-version: python2 sonar-mvn-goal: "sonar:sonar" stream: master submodule-recursive: true @@ -283,30 +284,15 @@ - lf-provide-maven-settings: global-settings-file: "{mvn-global-settings}" settings-file: "{mvn-settings}" - - lf-infra-tox-sonar: + - lf-infra-maven-sonar: java-version: "{java-version}" + mvn-goals: "{mvn-goals}" mvn-settings: "{mvn-settings}" mvn-version: "{mvn-version}" publishers: - lf-infra-publish -- builder: - name: lf-infra-tox-sonar - # Run a Sonar build with Maven - builders: - - lf-maven-install: - mvn-version: "{mvn-version}" - - lf-update-java-alternatives: - java-version: "{java-version}" - - inject: - # TODO: Switch this to the sonar wrapper when JJB 2.0 is available - properties-content: SONAR_HOST_URL=$SONAR_URL - - shell: !include-raw-escape: - - ../shell/common-variables.sh - - ../shell/maven-sonar.sh - - lf-provide-maven-settings-cleanup - - job-template: name: "{project-name}-tox-sonar" id: gerrit-tox-sonar diff --git a/releasenotes/notes/tox-sonar-mvn-goals-66e59631830250b2.yaml b/releasenotes/notes/tox-sonar-mvn-goals-66e59631830250b2.yaml new file mode 100644 index 00000000..fd85ee67 --- /dev/null +++ b/releasenotes/notes/tox-sonar-mvn-goals-66e59631830250b2.yaml @@ -0,0 +1,9 @@ +--- +fixes: + - | + Use existing builder lf-infra-maven sonar, drop incomplete builder + lf-tox-maven-sonar, to gain desired behavior of pushing code analysis + results to Sonar. Use trivial goal 'validate' by default. + The script maven-sonar.sh calls maven twice, first with build goals + and then with Sonar goals. The incomplete builder did not supply the + build goals.