Repair tox-sonar behavior by restoring mvn goal 12/61612/3
authorLott, Christopher (cl778h) <cl778h@att.com>
Fri, 6 Sep 2019 00:38:46 +0000 (20:38 -0400)
committerLott, Christopher (cl778h) <cl778h@att.com>
Fri, 6 Sep 2019 09:39:33 +0000 (05:39 -0400)
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) <cl778h@att.com>
docs/jjb/lf-python-jobs.rst
jjb/lf-python-jobs.yaml
releasenotes/notes/tox-sonar-mvn-goals-66e59631830250b2.yaml [new file with mode: 0644]

index 15c5b08..c36ba8b 100644 (file)
@@ -35,16 +35,6 @@ Install Tox into a virtualenv.
     :python-version: Version of Python to install into the Tox virtualenv.
         Eg. python2 / python3
 
     :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
 --------------
 
 lf-tox-install
 --------------
 
@@ -116,11 +106,11 @@ IQ Server.
 Python Sonar with Tox
 ---------------------
 
 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.
 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)
     :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:
 
 
 :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)
     :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)
     :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
     :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)
     :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.
     :stream: Keyword used to represent a release code-name.
         Often the same as the branch. (default: master)
     :submodule-recursive: Whether to checkout submodules recursively.
index 0f38b03..0fdb2a2 100644 (file)
             - "{branch}"
           included-regions: "{obj:github_included_regions}"
 
             - "{branch}"
           included-regions: "{obj:github_included_regions}"
 
-########################
+#########################
 # Python Sonar with Tox #
 # Python Sonar with Tox #
-########################
+#########################
 
 - lf_tox_sonar: &lf_tox_sonar
     name: lf-tox_sonar
 
 - lf_tox_sonar: &lf_tox_sonar
     name: lf-tox_sonar
     git-url: "$GIT_URL/$PROJECT"
     github-url: "https://github.com"
     java-version: openjdk8
     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-global-settings: global-settings
+    mvn-goals: validate
     mvn-settings: "{mvn-settings}"
     mvn-version: mvn35
     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
     sonar-mvn-goal: "sonar:sonar"
     stream: master
     submodule-recursive: true
       - lf-provide-maven-settings:
           global-settings-file: "{mvn-global-settings}"
           settings-file: "{mvn-settings}"
       - 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}"
           java-version: "{java-version}"
+          mvn-goals: "{mvn-goals}"
           mvn-settings: "{mvn-settings}"
           mvn-version: "{mvn-version}"
 
     publishers:
       - lf-infra-publish
 
           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
 - 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 (file)
index 0000000..fd85ee6
--- /dev/null
@@ -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.