提交 1458f93a 编写于 作者: O Olivier Lamy

[FIXED JENKINS-8939] Fix for JENKINS-8711 breaks deployments with credentials

take care about using settings from the remote node
上级 f7dbe863
......@@ -1088,6 +1088,8 @@ public class MavenModuleSetBuild extends AbstractMavenBuild<MavenModuleSet,Maven
} 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();
......
......@@ -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;
......@@ -50,6 +53,7 @@ import java.util.Map.Entry;
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;
......@@ -121,6 +125,7 @@ public class RedeployPublisher extends Recorder {
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");
......@@ -159,22 +164,57 @@ public class RedeployPublisher extends Recorder {
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 ));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册