Skip to content

Commit

Permalink
[FIXED JENKINS-8939] Fix for JENKINS-8711 breaks deployments with cre…
Browse files Browse the repository at this point in the history
…dentials

take care about using settings from the remote node

Originally-Committed-As: 1458f93a3c809bf8b5a4f2b1ed3de3769bffc715
  • Loading branch information
olamy committed Mar 5, 2011
1 parent a901e3d commit 1e34e36
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 14 deletions.
2 changes: 2 additions & 0 deletions src/main/java/hudson/maven/MavenModuleSetBuild.java
Expand Up @@ -1088,6 +1088,8 @@ public PomParser(BuildListener listener, MavenInstallation mavenHome, MavenModul
} else {
this.privateRepository = null;
}
// TODO maybe in goals with -s,--settings
// or -Dmaven.repo.local
this.alternateSettings = project.getAlternateSettings();
this.mavenVersion = mavenVersion;
this.resolveDependencies = project.isResolveDependencies();
Expand Down
68 changes: 54 additions & 14 deletions src/main/java/hudson/maven/RedeployPublisher.java
Expand Up @@ -24,15 +24,18 @@
package hudson.maven;

import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
import hudson.Util;
import hudson.maven.reporters.MavenAbstractArtifactRecord;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.Computer;
import hudson.model.Hudson;
import hudson.model.Result;
import hudson.model.TaskListener;
import hudson.remoting.Callable;
import hudson.tasks.BuildStepDescriptor;
import hudson.tasks.BuildStepMonitor;
import hudson.tasks.Publisher;
Expand All @@ -50,6 +53,7 @@

import net.sf.json.JSONObject;

import org.apache.commons.lang.StringUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
Expand Down Expand Up @@ -121,6 +125,7 @@ public boolean perform(AbstractBuild<?,?> build, Launcher launcher, BuildListene
listener.getLogger().println("Deploying artifacts to "+url);
try {

//MavenEmbedder embedder = MavenUtil.createEmbedder(listener,build);
MavenEmbedder embedder = createEmbedder(listener,build);
ArtifactRepositoryLayout layout =
(ArtifactRepositoryLayout) embedder.lookup( ArtifactRepositoryLayout.ROLE,"default");
Expand Down Expand Up @@ -159,22 +164,57 @@ private MavenEmbedder createEmbedder(TaskListener listener, AbstractBuild<?,?> b
Properties systemProperties = null;
String privateRepository = null;

AbstractProject project = build.getProject();

if (project instanceof ProjectWithMaven) {
m = ((ProjectWithMaven) project).inferMavenInstallation().forNode(Hudson.getInstance(),listener);
File tmpSettings = File.createTempFile( "jenkins", "temp-settings.xml" );
try {
AbstractProject project = build.getProject();

if (project instanceof ProjectWithMaven) {
m = ((ProjectWithMaven) project).inferMavenInstallation().forNode(Hudson.getInstance(),listener);
}
if (project instanceof MavenModuleSet) {
profiles = ((MavenModuleSet) project).getProfiles();
systemProperties = ((MavenModuleSet) project).getMavenProperties();

// olamy see
// we have to take about the settings use for the project
// order tru configuration
// TODO maybe in goals with -s,--settings last wins but not done in during pom parsing
// or -Dmaven.repo.local
// if not wet must get ~/.m2/settings.xml

String altSettingsPath = ((MavenModuleSet) project).getAlternateSettings();

if (StringUtils.isBlank( altSettingsPath ) ) {
// get userHome from the node where job has been executed
String remoteUserHome = project.getSomeWorkspace().act( new GetUserHome() );
altSettingsPath = remoteUserHome + ".m2/settings.xml";
}

// we copy this file in the master in a temporary file
FilePath filePath = new FilePath( tmpSettings );
FilePath remoteSettings = project.getSomeWorkspace().child( altSettingsPath);
if (remoteSettings.exists()) {
remoteSettings.copyTo( filePath );
settingsLoc = tmpSettings;
}

}

return MavenUtil.createEmbedder(new MavenEmbedderRequest(listener,
m!=null?m.getHomeDir():null,
profiles,
systemProperties,
privateRepository,
settingsLoc ));
} finally {
tmpSettings.delete();
}
if (project instanceof MavenModuleSet) {
profiles = ((MavenModuleSet) project).getProfiles();
systemProperties = ((MavenModuleSet) project).getMavenProperties();
}

private static final class GetUserHome implements Callable<String,IOException> {
public String call() throws IOException {
return System.getProperty("user.home");
}

return MavenUtil.createEmbedder(new MavenEmbedderRequest(listener,
m!=null?m.getHomeDir():null,
profiles,
systemProperties,
privateRepository,
settingsLoc ));
}


Expand Down

0 comments on commit 1e34e36

Please sign in to comment.