Skip to content

Commit

Permalink
Set BUILD_USER to "SCMTrigger" if a build is run because of a source …
Browse files Browse the repository at this point in the history
…code change - fixes JENKINS-21955
  • Loading branch information
Clifford Sanders committed Feb 26, 2014
1 parent 16ef318 commit e2e328e
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/main/java/org/jenkinsci/plugins/builduser/BuildUser.java
@@ -1,18 +1,26 @@
package org.jenkinsci.plugins.builduser;
import hudson.Extension;
import hudson.Launcher;
import hudson.model.*;
import hudson.model.BuildListener;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Cause;
import hudson.model.Cause.UserCause;
import hudson.model.Cause.UserIdCause;
import hudson.model.Job;
import hudson.model.Run;
import hudson.tasks.BuildWrapper;
import hudson.tasks.BuildWrapperDescriptor;
import hudson.triggers.SCMTrigger;

import java.io.IOException;
import java.util.Map;

import jenkins.model.Jenkins;

import org.jenkinsci.plugins.builduser.utils.ClassUtils;
import org.jenkinsci.plugins.builduser.varsetter.IUsernameSettable;
import org.jenkinsci.plugins.builduser.varsetter.impl.SCMTriggerCauseDeterminant;
import org.jenkinsci.plugins.builduser.varsetter.impl.UserCauseDeterminant;
import org.jenkinsci.plugins.builduser.varsetter.impl.UserIdCauseDeterminant;
import org.kohsuke.stapler.DataBoundConstructor;
Expand Down Expand Up @@ -65,6 +73,12 @@ private void makeUserBuildVariables(Run build, Map<String, String> variables) {
makeUserBuildVariables(upstream, variables);
}

// set BUILD_USER_NAME to fixed value if the build was triggered by a change in the scm
SCMTrigger.SCMTriggerCause scmTriggerCause = (SCMTrigger.SCMTriggerCause) build.getCause(SCMTrigger.SCMTriggerCause.class);
if (new SCMTriggerCauseDeterminant().setJenkinsUserBuildVars(scmTriggerCause, variables)) {
return;
}

// Use UserIdCause.class if it exists in the system (should be starting from b1.427 of jenkins).
if(ClassUtils.isClassExists(USER_ID_CAUSE_CLASS_NAME)){
/* Try to use UserIdCause to get & set jenkins user build variables */
Expand Down
@@ -0,0 +1,32 @@
package org.jenkinsci.plugins.builduser.varsetter.impl;

import hudson.triggers.SCMTrigger;
import hudson.triggers.SCMTrigger.SCMTriggerCause;

import java.util.Map;

import org.jenkinsci.plugins.builduser.utils.UsernameUtils;
import org.jenkinsci.plugins.builduser.varsetter.IUsernameSettable;

public class SCMTriggerCauseDeterminant implements IUsernameSettable<SCMTrigger.SCMTriggerCause> {

final Class<SCMTrigger.SCMTriggerCause> causeClass = SCMTrigger.SCMTriggerCause.class;

public boolean setJenkinsUserBuildVars(SCMTriggerCause cause,
Map<String, String> variables) {

if (cause != null) {
UsernameUtils.setUsernameVars("SCMTrigger", variables);

return true;
} else {
return false;
}
}

public Class<SCMTriggerCause> getUsedCauseClass() {

return causeClass;
}

}

0 comments on commit e2e328e

Please sign in to comment.