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
 
-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.
index 0f38b03..0fdb2a2 100644 (file)
             - "{branch}"
           included-regions: "{obj:github_included_regions}"
 
-########################
+#########################
 # Python Sonar with Tox #
-########################
+#########################
 
 - lf_tox_sonar: &lf_tox_sonar
     name: lf-tox_sonar
     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
       - 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 (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.