Hashar has submitted this change and it was merged.

Change subject: Add partial support for maven-release-plugin
......................................................................


Add partial support for maven-release-plugin

This patch adds support for the Maven release build wrapper.
The Maven release plugin makes use of the concept of jenkins Actions
to trigger the actual release -
https://wiki.jenkins-ci.org/display/JENKINS/Action+and+its+family+of+subtypes

The actual code for the action -
https://github.com/jenkinsci/m2release-plugin/blob/master/
src/main/java/org/jvnet/hudson/plugins/m2release/M2ReleaseAction.java,
seems to put together all the required
parameters and makes a call to scheduleBuild2 and passes an Action object with 
it.
Afaik, JJB doesn't support the concept of Actions. If the M2ReleaseAction was an
instance of Builder, instead of Action it would work with this. Currently, I 
don't
see how the actual build (release) can be triggered from JJB config, and it 
seems
like we can define the build wrapper alone as part of the job definition, and 
would
still have to trigger the release from the UI for the job like - 
<jobname>/m2release

Change-Id: Ifc979cdb8e40ad31debff04f745649f23f7ef91a
---
M jenkins_jobs/modules/wrappers.py
A tests/wrappers/fixtures/maven-release001.xml
A tests/wrappers/fixtures/maven-release001.yaml
A tests/wrappers/fixtures/maven-release002.xml
A tests/wrappers/fixtures/maven-release002.yaml
5 files changed, 101 insertions(+), 0 deletions(-)



diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py
index b05ebd8..c184b7e 100644
--- a/jenkins_jobs/modules/wrappers.py
+++ b/jenkins_jobs/modules/wrappers.py
@@ -2152,6 +2152,55 @@
     artifactory_optional_props(artifactory, data, 'wrappers')
 
 
+def maven_release(parser, xml_parent, data):
+    """yaml: maven-release
+    Wrapper for Maven projects
+    Requires :jenkins-wiki:`M2 Release Plugin <M2+Release+Plugin>`
+
+    :arg str release-goals: Release goals and options (default '')
+    :arg str dry-run-goals: DryRun goals and options (default '')
+    :arg int num-successful-builds: Number of successful release builds to keep
+        (default 1)
+    :arg bool select-custom-scm-comment-prefix: Preselect 'Specify custom SCM
+        comment prefix' (default false)
+    :arg bool select-append-jenkins-username: Preselect 'Append Jenkins
+        Username' (default false)
+    :arg bool select-scm-credentials: Preselect 'Specify SCM login/password'
+        (default false)
+    :arg str release-env-var: Release environment variable (default '')
+    :arg str scm-user-env-var: SCM username environment variable (default '')
+    :arg str scm-password-env-var: SCM password environment variable
+        (default '')
+
+    Example:
+
+    .. literalinclude:: /../../tests/wrappers/fixtures/maven-release001.yaml
+       :language: yaml
+
+    """
+    mvn_release = XML.SubElement(xml_parent,
+                                 'org.jvnet.hudson.plugins.m2release.'
+                                 'M2ReleaseBuildWrapper')
+    XML.SubElement(mvn_release, 'releaseGoals').text = str(
+        data.get('release-goals', ''))
+    XML.SubElement(mvn_release, 'dryRunGoals').text = str(
+        data.get('dry-run-goals', ''))
+    XML.SubElement(mvn_release, 'numberOfReleaseBuildsToKeep').text = str(
+        data.get('num-successful-builds', '1'))
+    XML.SubElement(mvn_release, 'selectCustomScmCommentPrefix').text = str(
+        data.get('select-custom-scm-comment-prefix', 'false')).lower()
+    XML.SubElement(mvn_release, 'selectAppendHudsonUsername').text = str(
+        data.get('select-append-jenkins-username', 'false')).lower()
+    XML.SubElement(mvn_release, 'selectScmCredentials').text = str(
+        data.get('select-scm-credentials', 'false')).lower()
+    XML.SubElement(mvn_release, 'releaseEnvVar').text = str(
+        data.get('release-env-var', ''))
+    XML.SubElement(mvn_release, 'scmUserEnvVar').text = str(
+        data.get('scm-user-env-var', ''))
+    XML.SubElement(mvn_release, 'scmPasswordEnvVar').text = str(
+        data.get('scm-password-env-var', ''))
+
+
 class Wrappers(jenkins_jobs.modules.base.Base):
     sequence = 80
 
diff --git a/tests/wrappers/fixtures/maven-release001.xml 
b/tests/wrappers/fixtures/maven-release001.xml
new file mode 100644
index 0000000..9a885ca
--- /dev/null
+++ b/tests/wrappers/fixtures/maven-release001.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+  <buildWrappers>
+    <org.jvnet.hudson.plugins.m2release.M2ReleaseBuildWrapper>
+      <releaseGoals>-Dresume=false release:prepare 
release:perform</releaseGoals>
+      <dryRunGoals>-Dresume=false -DdryRun=true release:prepare</dryRunGoals>
+      <numberOfReleaseBuildsToKeep>1</numberOfReleaseBuildsToKeep>
+      <selectCustomScmCommentPrefix>false</selectCustomScmCommentPrefix>
+      <selectAppendHudsonUsername>false</selectAppendHudsonUsername>
+      <selectScmCredentials>false</selectScmCredentials>
+      <releaseEnvVar>IS_M2RELEASEBUILD</releaseEnvVar>
+      <scmUserEnvVar>SCM_USER</scmUserEnvVar>
+      <scmPasswordEnvVar/>
+    </org.jvnet.hudson.plugins.m2release.M2ReleaseBuildWrapper>
+  </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/maven-release001.yaml 
b/tests/wrappers/fixtures/maven-release001.yaml
new file mode 100644
index 0000000..02f3afb
--- /dev/null
+++ b/tests/wrappers/fixtures/maven-release001.yaml
@@ -0,0 +1,10 @@
+wrappers:
+  - maven-release:
+      release-goals: -Dresume=false release:prepare release:perform
+      dry-run-goals: -Dresume=false -DdryRun=true release:prepare
+      num-successful-builds: 1
+      select-custom-scm-comment-prefix: false
+      select-append-jenkins-username: false
+      select-scm-credentials: false
+      release-env-var: IS_M2RELEASEBUILD
+      scm-user-env-var: SCM_USER
diff --git a/tests/wrappers/fixtures/maven-release002.xml 
b/tests/wrappers/fixtures/maven-release002.xml
new file mode 100644
index 0000000..42941ef
--- /dev/null
+++ b/tests/wrappers/fixtures/maven-release002.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project>
+  <buildWrappers>
+    <org.jvnet.hudson.plugins.m2release.M2ReleaseBuildWrapper>
+      <releaseGoals>-Dresume=false release:prepare 
release:perform</releaseGoals>
+      <dryRunGoals>-Dresume=false -DdryRun=true release:prepare</dryRunGoals>
+      <numberOfReleaseBuildsToKeep>2</numberOfReleaseBuildsToKeep>
+      <selectCustomScmCommentPrefix>true</selectCustomScmCommentPrefix>
+      <selectAppendHudsonUsername>false</selectAppendHudsonUsername>
+      <selectScmCredentials>true</selectScmCredentials>
+      <releaseEnvVar/>
+      <scmUserEnvVar>SCM_USER</scmUserEnvVar>
+      <scmPasswordEnvVar>SCM_PASSWORD</scmPasswordEnvVar>
+    </org.jvnet.hudson.plugins.m2release.M2ReleaseBuildWrapper>
+  </buildWrappers>
+</project>
diff --git a/tests/wrappers/fixtures/maven-release002.yaml 
b/tests/wrappers/fixtures/maven-release002.yaml
new file mode 100644
index 0000000..4102b2e
--- /dev/null
+++ b/tests/wrappers/fixtures/maven-release002.yaml
@@ -0,0 +1,10 @@
+wrappers:
+  - maven-release:
+      release-goals: -Dresume=false release:prepare release:perform
+      dry-run-goals: -Dresume=false -DdryRun=true release:prepare
+      num-successful-builds: 2
+      select-custom-scm-comment-prefix: true
+      select-append-jenkins-username: false
+      select-scm-credentials: true
+      scm-user-env-var: SCM_USER
+      scm-password-env-var: SCM_PASSWORD

-- 
To view, visit https://gerrit.wikimedia.org/r/286788
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifc979cdb8e40ad31debff04f745649f23f7ef91a
Gerrit-PatchSet: 5
Gerrit-Project: integration/jenkins-job-builder
Gerrit-Branch: master
Gerrit-Owner: Madhuvishy <[email protected]>
Gerrit-Reviewer: 20after4 <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: Madhuvishy <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to