Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix JENKINS-8524 - expose username and password
  • Loading branch information
imod committed Dec 3, 2011
1 parent a1ddf1d commit 944906c
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 38 deletions.
@@ -0,0 +1,65 @@
/*
* The MIT License
*
* Copyright (c) 2011, Dominik Bartholdi
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package org.jvnet.hudson.plugins.m2release;

import hudson.maven.MavenArgumentInterceptorAction;
import hudson.maven.MavenModuleSetBuild;
import hudson.util.ArgumentListBuilder;

/**
* This action provides the arguments to trigger maven in case of a release
* build.
*
* @author Dominik Bartholdi
* @version 0.9.0
*/
public class M2ReleaseArgumentInterceptorAction implements MavenArgumentInterceptorAction {

private String goalsAndOptions;

public M2ReleaseArgumentInterceptorAction(String goalsAndOptions) {
this.goalsAndOptions = goalsAndOptions;
}

public String getIconFileName() {
return null;
}

public String getDisplayName() {
return null;
}

public String getUrlName() {
return null;
}

public String getGoalsAndOptions(MavenModuleSetBuild build) {
return goalsAndOptions;
}

public ArgumentListBuilder intercept(ArgumentListBuilder mavenargs, MavenModuleSetBuild build) {
return null;
}

}
Expand Up @@ -76,6 +76,7 @@
* ability to auto close a Nexus Pro Staging Repo
*
* @author James Nord
* @author Dominik Bartholdi
* @version 0.3
* @since 0.1
*/
Expand Down Expand Up @@ -120,8 +121,6 @@ public M2ReleaseBuildWrapper(String releaseGoals, boolean selectCustomScmComment
public Environment setUp(@SuppressWarnings("rawtypes") AbstractBuild build, Launcher launcher, final BuildListener listener)
throws IOException,
InterruptedException {
final String originalGoals;
final MavenModuleSet mmSet;

synchronized (getModuleSet(build)) {
if (!doRelease) {
Expand All @@ -133,45 +132,36 @@ public Environment setUp(@SuppressWarnings("rawtypes") AbstractBuild build, Laun
// reset for the next build.
doRelease = false;

mmSet = getModuleSet(build);
if (mmSet != null) {
originalGoals = mmSet.getGoals();

StringBuilder buildGoals = new StringBuilder();
StringBuilder buildGoals = new StringBuilder();

buildGoals.append("-DdevelopmentVersion=").append(developmentVersion).append(' ');
buildGoals.append("-DreleaseVersion=").append(releaseVersion).append(' ');

if (scmUsername != null) {
buildGoals.append("-Dusername=").append(scmUsername).append(' ');
}

if (scmPassword != null) {
buildGoals.append("-Dpassword=").append(scmPassword).append(' ');
}

if (scmCommentPrefix != null) {
buildGoals.append("\"-DscmCommentPrefix=");
buildGoals.append(scmCommentPrefix);
if(appendHusonUserName) {
buildGoals.append(String.format("(%s)", hudsonUserName));
}
buildGoals.append("\" ");
}

if (scmTag != null) {
buildGoals.append("-Dtag=").append(scmTag).append(' ');
buildGoals.append("-DdevelopmentVersion=").append(developmentVersion).append(' ');
buildGoals.append("-DreleaseVersion=").append(releaseVersion).append(' ');

if (scmUsername != null) {
buildGoals.append("-Dusername=").append(scmUsername).append(' ');
}

if (scmPassword != null) {
buildGoals.append("-Dpassword=").append(scmPassword).append(' ');
}

if (scmCommentPrefix != null) {
buildGoals.append("\"-DscmCommentPrefix=");
buildGoals.append(scmCommentPrefix);
if(appendHusonUserName) {
buildGoals.append(String.format("(%s)", hudsonUserName));
}

buildGoals.append(releaseGoals);

mmSet.setGoals(buildGoals.toString());
buildGoals.append("\" ");
}
else {
// can this be so?
originalGoals = null;

if (scmTag != null) {
buildGoals.append("-Dtag=").append(scmTag).append(' ');
}

buildGoals.append(releaseGoals);


build.addAction(new M2ReleaseArgumentInterceptorAction(buildGoals.toString()));
build.addAction(new M2ReleaseBadgeAction("Release - " + releaseVersion));
}

Expand All @@ -181,11 +171,9 @@ public Environment setUp(@SuppressWarnings("rawtypes") AbstractBuild build, Laun
public boolean tearDown(@SuppressWarnings("rawtypes") AbstractBuild bld, BuildListener lstnr) throws IOException,
InterruptedException {
boolean retVal = true;
// TODO only re-set the build goals if they are still releaseGoals to avoid mid-air collisions.
final MavenModuleSet mmSet = getModuleSet(bld);
final boolean localcloseStage;
synchronized (mmSet) {
mmSet.setGoals(originalGoals);
// get a local variable so we don't have to synchronize on mmSet any more than we have to.
localcloseStage = closeNexusStage;
}
Expand Down

0 comments on commit 944906c

Please sign in to comment.