Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #34 from jenkinsci/feature/JENKINS-37738
JENKINS-37738
- Loading branch information
Showing
12 changed files
with
288 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/AbstractJobWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package net.uaznia.lukanus.hudson.plugins.gitparameter.jobs; | ||
|
||
|
||
import java.io.IOException; | ||
|
||
import hudson.EnvVars; | ||
import hudson.model.Job; | ||
import hudson.model.Node; | ||
import hudson.model.ParametersDefinitionProperty; | ||
import hudson.model.TaskListener; | ||
|
||
public abstract class AbstractJobWrapper implements JobWrapper { | ||
private Job job; | ||
|
||
public AbstractJobWrapper(Job job) { | ||
this.job = job; | ||
} | ||
|
||
@Override | ||
public Job getJob() { | ||
return job; | ||
} | ||
|
||
@Override | ||
public ParametersDefinitionProperty getProperty(Class<ParametersDefinitionProperty> propertyClass) { | ||
return (ParametersDefinitionProperty) job.getProperty(propertyClass); | ||
} | ||
|
||
@Override | ||
public EnvVars getEnvironment(Node node, TaskListener taskListener) throws IOException, InterruptedException { | ||
return job.getEnvironment(node, taskListener); | ||
} | ||
|
||
@Override | ||
public int getNextBuildNumber() { | ||
return job.getNextBuildNumber(); | ||
} | ||
|
||
@Override | ||
public void updateNextBuildNumber(int nextBuildNumber) throws IOException { | ||
job.updateNextBuildNumber(nextBuildNumber); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
...n/java/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/AbstractProjectJobWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package net.uaznia.lukanus.hudson.plugins.gitparameter.jobs; | ||
|
||
import hudson.FilePath; | ||
import hudson.model.AbstractBuild; | ||
import hudson.model.AbstractProject; | ||
import hudson.model.Job; | ||
import hudson.scm.SCM; | ||
|
||
public class AbstractProjectJobWrapper extends AbstractJobWrapper { | ||
public AbstractProjectJobWrapper(Job job) { | ||
super(job); | ||
} | ||
|
||
@Override | ||
public SCM getScm() { | ||
return ((AbstractProject) getJob()).getScm(); | ||
} | ||
|
||
@Override | ||
public FilePath getSomeWorkspace() { | ||
return ((AbstractProject) getJob()).getSomeWorkspace(); | ||
} | ||
|
||
@Override | ||
public AbstractBuild getSomeBuildWithWorkspace() { | ||
return ((AbstractProject) getJob()).getSomeBuildWithWorkspace(); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/JobWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package net.uaznia.lukanus.hudson.plugins.gitparameter.jobs; | ||
|
||
import java.io.IOException; | ||
|
||
import hudson.EnvVars; | ||
import hudson.FilePath; | ||
import hudson.model.AbstractBuild; | ||
import hudson.model.Job; | ||
import hudson.model.Node; | ||
import hudson.model.ParametersDefinitionProperty; | ||
import hudson.model.TaskListener; | ||
import hudson.scm.SCM; | ||
|
||
public interface JobWrapper { | ||
Job getJob(); | ||
|
||
ParametersDefinitionProperty getProperty(Class<ParametersDefinitionProperty> parametersDefinitionPropertyClass); | ||
|
||
SCM getScm(); | ||
|
||
FilePath getSomeWorkspace() throws IOException, InterruptedException; | ||
|
||
EnvVars getEnvironment(Node node, TaskListener taskListener) throws IOException, InterruptedException; | ||
|
||
AbstractBuild getSomeBuildWithWorkspace(); | ||
|
||
int getNextBuildNumber(); | ||
|
||
void updateNextBuildNumber(int nextBuildNumber) throws IOException; | ||
} |
21 changes: 21 additions & 0 deletions
21
src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/JobWrapperFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package net.uaznia.lukanus.hudson.plugins.gitparameter.jobs; | ||
|
||
import hudson.model.AbstractProject; | ||
import hudson.model.Job; | ||
|
||
public class JobWrapperFactory { | ||
private static final String WORKFLOW_JOB_CLASS_NAME = "org.jenkinsci.plugins.workflow.job.WorkflowJob"; | ||
|
||
public static JobWrapper createJobWrapper(Job job) { | ||
if (job instanceof AbstractProject) { | ||
return new AbstractProjectJobWrapper(job); | ||
} else if (isWorkflowJob(job)) { | ||
return new WorkflowJobWrapper(job); | ||
} | ||
throw new UnsupportedJobType(Messages.JobWrapperFactory_UnsupportedJobType(job.getClass().getName())); | ||
} | ||
|
||
private static boolean isWorkflowJob(Job job) { | ||
return job != null && WORKFLOW_JOB_CLASS_NAME.equals(job.getClass().getName()); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/UnsupportedJobType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package net.uaznia.lukanus.hudson.plugins.gitparameter.jobs; | ||
|
||
public class UnsupportedJobType extends RuntimeException { | ||
public UnsupportedJobType(String message) { | ||
super(message); | ||
} | ||
} |
56 changes: 56 additions & 0 deletions
56
src/main/java/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/WorkflowJobWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package net.uaznia.lukanus.hudson.plugins.gitparameter.jobs; | ||
|
||
import java.io.IOException; | ||
import java.lang.reflect.Method; | ||
import java.util.logging.Level; | ||
import java.util.logging.Logger; | ||
|
||
import hudson.FilePath; | ||
import hudson.model.AbstractBuild; | ||
import hudson.model.Job; | ||
import hudson.model.TopLevelItem; | ||
import hudson.scm.SCM; | ||
import jenkins.model.Jenkins; | ||
import net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterDefinition; | ||
|
||
public class WorkflowJobWrapper extends AbstractJobWrapper { | ||
private static final Logger LOGGER = Logger.getLogger(WorkflowJobWrapper.class.getName()); | ||
|
||
public WorkflowJobWrapper(Job job) { | ||
super(job); | ||
} | ||
|
||
@Override | ||
public SCM getScm() { | ||
try { | ||
Class<?> workflowJobClazz = getJob().getClass(); | ||
Method getDefinitionMethod = workflowJobClazz.getDeclaredMethod("getDefinition"); | ||
Object definition = getDefinitionMethod.invoke(getJob()); | ||
|
||
Class<?> cpsScmFlowDefinitionClazz = definition.getClass(); | ||
Method getScmMethod = cpsScmFlowDefinitionClazz.getMethod("getScm"); | ||
|
||
Object scm = getScmMethod.invoke(definition); | ||
if (scm instanceof SCM) { | ||
return (SCM) scm; | ||
} | ||
} catch (Exception e) { | ||
LOGGER.log(Level.SEVERE, Messages.WorkflowJobWrapper_GetWorkflowRepoScmFail(), e); | ||
} | ||
return null; | ||
} | ||
|
||
@Override | ||
public FilePath getSomeWorkspace() throws IOException, InterruptedException { | ||
FilePath workspaceForWorkflow = Jenkins.getInstance().getWorkspaceFor((TopLevelItem) getJob()).withSuffix("@script"); | ||
if (workspaceForWorkflow.exists()) { | ||
return workspaceForWorkflow; | ||
} | ||
return null; | ||
} | ||
|
||
@Override | ||
public AbstractBuild getSomeBuildWithWorkspace() { | ||
return null; //TODO Add implementation, perhaps is not necessary | ||
} | ||
} |
2 changes: 2 additions & 0 deletions
2
src/main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/Messages.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
JobWrapperFactory.UnsupportedJobType=Unsupported job type. Class: {0} | ||
WorkflowJobWrapper.GetWorkflowRepoScmFail=Get repo scm from Workflow job fail |
2 changes: 2 additions & 0 deletions
2
...main/resources/net/uaznia/lukanus/hudson/plugins/gitparameter/jobs/Messages_pl.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
JobWrapperFactory.UnsupportedJobType=Niewspierany typ zadania. Class: {0} | ||
WorkflowJobWrapper.GetWorkflowRepoScmFail=B\u0142\u0105d przy obs\u0142udze repo scm w WorkflowJob |
Oops, something went wrong.