-
Notifications
You must be signed in to change notification settings - Fork 529
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
JENKINS-37104# Matrix project handling (#412)
* JENKINS-37104# Matrix project handling - Bare minimum support for Matrix project. Ensures it doesn't break. - For matrix project, self href points to classic URL path ("/job/:name") - Adds hudson.matrix.MatrixProject capability - UI to check hudson.matrix.MatrixProject capability and if present create a link using returned self href, so that when user clicks on it, he gets redirected to classic Matrix job page. * Reverting removal of matrix project test dependency, favorite tests fail as Favorite plugin idepends on matrix project plugin and has reference to MatrixConfiguration.
- Loading branch information
Showing
5 changed files
with
130 additions
and
4 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
101 changes: 101 additions & 0 deletions
101
...ine-api-impl/src/main/java/io/jenkins/blueocean/rest/impl/pipeline/MatrixProjectImpl.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,101 @@ | ||
package io.jenkins.blueocean.rest.impl.pipeline; | ||
|
||
/** | ||
* @author Vivek Pandey | ||
*/ | ||
|
||
import hudson.Extension; | ||
import hudson.matrix.MatrixProject; | ||
import hudson.model.Item; | ||
import io.jenkins.blueocean.rest.Reachable; | ||
import io.jenkins.blueocean.rest.annotation.Capability; | ||
import io.jenkins.blueocean.rest.hal.Link; | ||
import io.jenkins.blueocean.rest.model.BluePipeline; | ||
import io.jenkins.blueocean.rest.model.BluePipelineContainer; | ||
import io.jenkins.blueocean.rest.model.BlueRun; | ||
import io.jenkins.blueocean.rest.model.BlueRunContainer; | ||
import io.jenkins.blueocean.rest.model.Resource; | ||
import io.jenkins.blueocean.service.embedded.rest.AbstractRunImpl; | ||
import io.jenkins.blueocean.service.embedded.rest.BluePipelineFactory; | ||
import io.jenkins.blueocean.service.embedded.rest.PipelineFolderImpl; | ||
|
||
/** | ||
* @author Vivek Pandey | ||
*/ | ||
@Capability("hudson.matrix.MatrixProject") | ||
public class MatrixProjectImpl extends PipelineFolderImpl { | ||
|
||
private final MatrixProject matrixProject; | ||
|
||
public MatrixProjectImpl(MatrixProject folder, Link parent) { | ||
super(folder, parent); | ||
this.matrixProject = folder; | ||
} | ||
|
||
@Extension(ordinal = 1) | ||
public static class PipelineFactoryImpl extends BluePipelineFactory{ | ||
|
||
@Override | ||
public MatrixProjectImpl getPipeline(Item item, Reachable parent) { | ||
if (item instanceof MatrixProject) { | ||
return new MatrixProjectImpl((MatrixProject) item, parent.getLink()); | ||
} | ||
return null; | ||
} | ||
|
||
@Override | ||
public Resource resolve(Item context, Reachable parent, Item target) { | ||
MatrixProjectImpl project = getPipeline(context, parent); | ||
if (project!=null) { | ||
if(context == target){ | ||
return project; | ||
} | ||
Item nextChild = findNextStep(project.matrixProject,target); | ||
for (BluePipelineFactory f : all()) { | ||
Resource answer = f.resolve(nextChild, project, target); | ||
if (answer!=null) | ||
return answer; | ||
} | ||
} | ||
return null; | ||
} | ||
} | ||
|
||
@Override | ||
public BluePipeline getDynamic(String name) { | ||
return null; | ||
} | ||
|
||
@Override | ||
public BluePipelineContainer getPipelines() { | ||
return null; | ||
} | ||
|
||
@Override | ||
public Integer getNumberOfFolders() { | ||
return 0; | ||
} | ||
|
||
@Override | ||
public Integer getNumberOfPipelines() { | ||
return 0; | ||
} | ||
|
||
@Override | ||
public Link getLink() { | ||
return new Link("/"+ matrixProject.getUrl()); | ||
} | ||
|
||
@Override | ||
public BlueRunContainer getRuns() { | ||
return null; //TODO: matrix build have run but we are not returning any for now. to be fixed when full matrix build support is defined. | ||
} | ||
|
||
@Override | ||
public BlueRun getLatestRun() { | ||
if(matrixProject.getLastBuild() == null){ | ||
return null; | ||
} | ||
return AbstractRunImpl.getBlueRun(matrixProject.getLastBuild(), this); | ||
} | ||
} |
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