Skip to content

Commit

Permalink
Merge pull request #240 from tfennelly/JENKINS-26010
Browse files Browse the repository at this point in the history
[JENKINS-26010] Workflow compatibility
  • Loading branch information
rsandell committed Aug 15, 2015
2 parents 0e79ae1 + c4f8562 commit 5661bcf
Show file tree
Hide file tree
Showing 48 changed files with 1,234 additions and 642 deletions.
20 changes: 16 additions & 4 deletions pom.xml
Expand Up @@ -3,7 +3,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.565.3</version>
<version>1.580.1</version>
</parent>

<groupId>com.sonyericsson.hudson.plugins.gerrit</groupId>
Expand Down Expand Up @@ -69,19 +69,19 @@
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>git</artifactId>
<version>1.2.0</version>
<version>2.3</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>git-client</artifactId>
<version>1.4.2</version>
<version>1.11.1</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.sonyericsson.hudson.plugins.rebuild</groupId>
<artifactId>rebuild</artifactId>
<version>1.22</version>
<version>1.25</version>
<optional>true</optional>
</dependency>
<dependency>
Expand All @@ -95,6 +95,12 @@
<artifactId>commons-net</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins.workflow</groupId>
<artifactId>workflow-aggregator</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
Expand Down Expand Up @@ -158,6 +164,12 @@
<version>1.51</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
<repositories>
<repository>
Expand Down
Expand Up @@ -3,7 +3,7 @@
import hudson.Extension;
import hudson.MarkupText;
import hudson.MarkupText.SubText;
import hudson.model.AbstractBuild;
import hudson.model.Run;
import hudson.scm.ChangeLogAnnotator;
import hudson.scm.ChangeLogSet.Entry;

Expand All @@ -19,7 +19,7 @@
@Extension
public class ChangeIdAnnotator extends ChangeLogAnnotator {
@Override
public void annotate(AbstractBuild<?, ?> build, Entry change, MarkupText text) {
public void annotate(Run<?, ?> build, Entry change, MarkupText text) {
for (SubText token : text.findTokens(CHANGE_ID)) {
GerritCause gerritCause = build.getCause(GerritCause.class);
if (gerritCause != null
Expand Down
Expand Up @@ -28,7 +28,7 @@
import com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritCause;
import com.sonyericsson.rebuild.RebuildValidator;
import hudson.Extension;
import hudson.model.AbstractBuild;
import hudson.model.Run;

/**
* Disables the rebuild button for Gerrit triggered builds.
Expand All @@ -41,7 +41,7 @@ public class GerritRebuildValidator extends RebuildValidator {
private static final long serialVersionUID = 2704238052581467905L;

@Override
public boolean isApplicable(AbstractBuild build) {
public boolean isApplicable(Run build) {
return (build.getCause(GerritCause.class) != null);
}

Expand Down
Expand Up @@ -33,6 +33,7 @@
import hudson.Functions;
import hudson.RelativePath;
import hudson.model.AbstractProject;
import hudson.model.Job;
import hudson.model.Action;
import hudson.model.Describable;
import hudson.model.Failure;
Expand Down Expand Up @@ -904,7 +905,7 @@ private void rename(String newName) {
*
* @return the list of jobs configured with this server.
*/
public List<AbstractProject> getConfiguredJobs() {
public List<Job> getConfiguredJobs() {
return PluginImpl.getConfiguredJobs_(name);
}

Expand All @@ -914,14 +915,23 @@ public List<AbstractProject> getConfiguredJobs() {
* @param oldName the old name of the Gerrit server
*/
private void changeSelectedServerInJobs(String oldName) {
for (AbstractProject job : PluginImpl.getConfiguredJobs_(oldName)) {
GerritTrigger trigger = (GerritTrigger)job.getTrigger(GerritTrigger.class);
for (Job job : PluginImpl.getConfiguredJobs_(oldName)) {

if (!(job instanceof AbstractProject)) {
logger.warn("Unable to modify Gerrit Trigger configurations for job [" + job.getName()
+ "] after Gerrit server has been renamed from [" + oldName + "] to [" + name + "]."
+ " This feature is only supported for AbstractProject types e.g. Freestyle Jobs.");
return;
}
AbstractProject project = (AbstractProject)job;

GerritTrigger trigger = (GerritTrigger)project.getTrigger(GerritTrigger.class);
if (trigger != null) {
try {
trigger.setServerName(name);
trigger.start(job, false);
job.addTrigger(trigger);
job.save();
project.addTrigger(trigger);
project.save();
} catch (IOException e) {
logger.error("Error saving Gerrit Trigger configurations for job [" + job.getName()
+ "] after Gerrit server has been renamed from [" + oldName + "] to [" + name + "]");
Expand All @@ -934,11 +944,19 @@ private void changeSelectedServerInJobs(String oldName) {
* Remove "Gerrit event" as a trigger in all jobs selecting this server.
*/
private void removeGerritTriggerInJobs() {
for (AbstractProject job : getConfiguredJobs()) {
GerritTrigger trigger = (GerritTrigger)job.getTrigger(GerritTrigger.class);
for (Job job : getConfiguredJobs()) {

if (!(job instanceof AbstractProject)) {
logger.warn("Unable to remove Gerrit Trigger ffrom job [" + job.getName() + "]. "
+ " This feature is only supported for AbstractProject types e.g. Freestyle Jobs.");
return;
}
AbstractProject project = (AbstractProject)job;

GerritTrigger trigger = (GerritTrigger)project.getTrigger(GerritTrigger.class);
trigger.stop();
try {
job.removeTrigger(trigger.getDescriptor());
project.removeTrigger(trigger.getDescriptor());
} catch (IOException e) {
logger.error("Error removing Gerrit trigger from job [" + job.getName()
+ "]. Please check job config");
Expand Down
Expand Up @@ -36,7 +36,8 @@
import com.sonymobile.tools.gerrit.gerritevents.dto.attr.Provider;
import com.sonymobile.tools.gerrit.gerritevents.dto.events.GerritTriggeredEvent;
import hudson.Plugin;
import hudson.model.AbstractProject;
import hudson.model.Item;
import hudson.model.Job;
import hudson.model.Api;
import hudson.model.Hudson;
import hudson.model.Items;
Expand Down Expand Up @@ -96,7 +97,7 @@ public class PluginImpl extends Plugin {
public static final Permission RETRIGGER = new Permission(PERMISSION_GROUP,
"Retrigger",
Messages._RetriggerPermissionDescription(),
AbstractProject.BUILD);
Item.BUILD);

private static final Logger logger = LoggerFactory.getLogger(PluginImpl.class);
private final List<GerritServer> servers = new CopyOnWriteArrayList<GerritServer>();
Expand Down Expand Up @@ -436,10 +437,10 @@ public static GerritHandler getHandler_() {
* @param serverName the name of the Gerrit server.
* @return the list of jobs configured with this server.
*/
public List<AbstractProject> getConfiguredJobs(String serverName) {
LinkedList<AbstractProject> configuredJobs = new LinkedList<AbstractProject>();
for (AbstractProject<?, ?> project : Hudson.getInstance().getItems(AbstractProject.class)) { //get the jobs
GerritTrigger gerritTrigger = project.getTrigger(GerritTrigger.class);
public List<Job> getConfiguredJobs(String serverName) {
LinkedList<Job> configuredJobs = new LinkedList<Job>();
for (Job<?, ?> project : Jenkins.getInstance().getItems(Job.class)) { //get the jobs
GerritTrigger gerritTrigger = GerritTrigger.getTrigger(project);

//if the job has a gerrit trigger, check whether the trigger has selected this server:
if (gerritTrigger != null && gerritTrigger.getServerName().equals(serverName)) {
Expand All @@ -458,7 +459,7 @@ public List<AbstractProject> getConfiguredJobs(String serverName) {
*/
@Nonnull
//CS IGNORE MethodName FOR NEXT 1 LINES. REASON: Static equivalent marker.
public static List<AbstractProject> getConfiguredJobs_(String serverName) {
public static List<Job> getConfiguredJobs_(String serverName) {
PluginImpl plugin = getInstance();
if (plugin == null) {
logger.debug("Error, plugin instance could not be found!");
Expand Down
Expand Up @@ -23,7 +23,7 @@
*/
package com.sonyericsson.hudson.plugins.gerrit.trigger.dependency;

import hudson.model.AbstractProject;
import hudson.model.Job;
import hudson.model.queue.CauseOfBlockage;

import java.util.List;
Expand All @@ -37,13 +37,13 @@
*/
public class BecauseDependentBuildIsBuilding extends CauseOfBlockage {

private List<AbstractProject> blockingProjects;
private List<Job> blockingProjects;

/**
* Standard constructor.
* @param blockingProjects The list of dependant builds which are blocking this one.
*/
public BecauseDependentBuildIsBuilding(List<AbstractProject> blockingProjects) {
public BecauseDependentBuildIsBuilding(List<Job> blockingProjects) {
this.blockingProjects = blockingProjects;
}

Expand Down
Expand Up @@ -25,11 +25,11 @@

import hudson.Extension;
import hudson.ExtensionList;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.Cause;
import hudson.model.Item;
import hudson.model.Job;
import hudson.model.Queue;
import hudson.model.Run;
import hudson.model.queue.QueueTaskDispatcher;
import hudson.model.queue.CauseOfBlockage;
import jenkins.model.Jenkins;
Expand Down Expand Up @@ -117,9 +117,9 @@ public static DependencyQueueTaskDispatcher getInstance() {

@Override
public CauseOfBlockage canRun(Queue.Item item) {
//AbstractProject check
if (!(item.task instanceof AbstractProject)) {
logger.debug("Not an abstract project: {}", item.task);
//Job check
if (!(item.task instanceof Job)) {
logger.debug("Not an Job instance: {}", item.task);
return null;
}

Expand All @@ -143,15 +143,15 @@ public CauseOfBlockage canRun(Queue.Item item) {
logger.debug("Item is already buildable");
return null;
}
AbstractProject p = (AbstractProject)item.task;
Job p = (Job)item.task;
GerritTrigger trigger = GerritTrigger.getTrigger(p);
//The project being checked has no Gerrit Trigger
if (trigger == null) {
logger.debug("Project does not contain a trigger");
return null;
}
//Dependency projects in the build queue
List<AbstractProject> dependencies = getProjectsFromString(trigger.getDependencyJobsNames(),
List<Job> dependencies = getProjectsFromString(trigger.getDependencyJobsNames(),
(Item)p);
if ((dependencies == null) || (dependencies.size() == 0)) {
logger.debug("No dependencies on project: {}", p);
Expand Down Expand Up @@ -182,7 +182,7 @@ public CauseOfBlockage canRun(Queue.Item item) {
}


List<AbstractProject> blockingProjects = getBlockingDependencyProjects(dependencies, event);
List<Job> blockingProjects = getBlockingDependencyProjects(dependencies, event);

if (blockingProjects.size() > 0) {
return new BecauseDependentBuildIsBuilding(blockingProjects);
Expand All @@ -198,12 +198,12 @@ public CauseOfBlockage canRun(Queue.Item item) {
* @param event The event should have also caused the blocking builds.
* @return the sublist of dependencies which need to be completed before this event is resolved.
*/
protected List<AbstractProject> getBlockingDependencyProjects(List<AbstractProject> dependencies,
protected List<Job> getBlockingDependencyProjects(List<Job> dependencies,
GerritTriggeredEvent event) {
List<AbstractProject> blockingProjects = new ArrayList<AbstractProject>();
List<Job> blockingProjects = new ArrayList<Job>();
ToGerritRunListener toGerritRunListener = ToGerritRunListener.getInstance();
if (toGerritRunListener != null) {
for (AbstractProject dependency : dependencies) {
for (Job dependency : dependencies) {
if (toGerritRunListener.isProjectTriggeredAndIncomplete(dependency, event)) {
blockingProjects.add(dependency);
}
Expand Down Expand Up @@ -232,8 +232,8 @@ private GerritCause getGerritCause(Queue.Item item) {
* @param context The context in which to read the string
* @return the list of projects
*/
public static List<AbstractProject> getProjectsFromString(String projects, Item context) {
List<AbstractProject> dependencyJobs = new ArrayList<AbstractProject>();
public static List<Job> getProjectsFromString(String projects, Item context) {
List<Job> dependencyJobs = new ArrayList<Job>();
if ((projects == null) || projects.equals("")) {
return null;
} else {
Expand All @@ -244,9 +244,9 @@ public static List<AbstractProject> getProjectsFromString(String projects, Item
String projectName = tokens.nextToken().trim();
if (!projectName.equals("")) {
Item item = jenkins.getItem(projectName, context, Item.class);
if ((item != null) && (item instanceof AbstractProject)) {
dependencyJobs.add((AbstractProject)item);
logger.debug("project dependency job added : {}", (AbstractProject)item);
if ((item != null) && (item instanceof Job)) {
dependencyJobs.add((Job)item);
logger.debug("project dependency job added : {}", (Job)item);
}
}
}
Expand Down Expand Up @@ -331,15 +331,15 @@ public void triggerScanDone(GerritEvent event) {
}

@Override
public void projectTriggered(GerritEvent event, AbstractProject project) {
public void projectTriggered(GerritEvent event, Job project) {
}

@Override
public void buildStarted(GerritEvent event, AbstractBuild build) {
public void buildStarted(GerritEvent event, Run build) {
}

@Override
public void buildCompleted(GerritEvent event, AbstractBuild build) {
public void buildCompleted(GerritEvent event, Run build) {
}

@Override
Expand Down
Expand Up @@ -28,16 +28,15 @@
import java.util.LinkedList;
import java.util.List;

import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;

import com.sonymobile.tools.gerrit.gerritevents.dto.GerritEvent;
import com.sonymobile.tools.gerrit.gerritevents.dto.attr.Change;
import com.sonymobile.tools.gerrit.gerritevents.dto.attr.PatchSet;
import com.sonymobile.tools.gerrit.gerritevents.dto.events.PatchsetCreated;
import com.sonyericsson.hudson.plugins.gerrit.trigger.events.lifecycle.GerritEventLifecycle;
import com.sonyericsson.hudson.plugins.gerrit.trigger.events.lifecycle.GerritEventLifecycleListener;

import hudson.model.Job;
import hudson.model.Run;
import net.sf.json.JSONObject;

/**
Expand Down Expand Up @@ -147,7 +146,7 @@ public void visit(GerritEventLifecycleListener listener, GerritEvent event) {
}

@Override
public synchronized void fireProjectTriggered(final AbstractProject project) {
public synchronized void fireProjectTriggered(final Job project) {
fireEvent(new ListenerVisitor() {
@Override
public void visit(GerritEventLifecycleListener listener, GerritEvent event) {
Expand All @@ -157,7 +156,7 @@ public void visit(GerritEventLifecycleListener listener, GerritEvent event) {
}

@Override
public synchronized void fireBuildStarted(final AbstractBuild build) {
public synchronized void fireBuildStarted(final Run build) {
fireEvent(new ListenerVisitor() {
@Override
public void visit(GerritEventLifecycleListener listener, GerritEvent event) {
Expand All @@ -167,7 +166,7 @@ public void visit(GerritEventLifecycleListener listener, GerritEvent event) {
}

@Override
public synchronized void fireBuildCompleted(final AbstractBuild build) {
public synchronized void fireBuildCompleted(final Run build) {
fireEvent(new ListenerVisitor() {
@Override
public void visit(GerritEventLifecycleListener listener, GerritEvent event) {
Expand Down

0 comments on commit 5661bcf

Please sign in to comment.