Last active
October 7, 2019 18:59
-
-
Save ruslan-khalitov/5def58b8d78486e94ba5dda56cf7bf00 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| import com.cloudbees.hudson.plugins.folder.Folder | |
| import hudson.model.Descriptor | |
| import hudson.model.TaskListener | |
| import jenkins.model.Jenkins | |
| import org.jenkinsci.plugins.pipeline.maven.GlobalPipelineMavenConfig | |
| import org.jenkinsci.plugins.pipeline.maven.MavenDependency | |
| import org.jenkinsci.plugins.pipeline.maven.dao.PipelineMavenPluginDao | |
| import org.jenkinsci.plugins.pipeline.maven.dao.PipelineMavenPluginMonitoringDao | |
| import org.jenkinsci.plugins.pipeline.maven.publishers.MavenReport | |
| import org.jenkinsci.plugins.workflow.job.WorkflowJob | |
| import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject | |
| import org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper | |
| def mavenDao = (Jenkins.instanceOrNull.getDescriptor(GlobalPipelineMavenConfig) as GlobalPipelineMavenConfig).getDao() | |
| def findJob = { String rootPath, String mavenArtifactId -> | |
| def folder = Jenkins.instanceOrNull.getItemByFullName(rootPath, Folder) | |
| def projects = folder.getAllItems(WorkflowMultiBranchProject) | |
| for (WorkflowMultiBranchProject project in projects) { | |
| Collection<WorkflowJob> jobs = project.allJobs.findAll { it.lastSuccessfulBuild } | |
| for (def job in jobs) { | |
| def build = job.lastSuccessfulBuild | |
| while(null != build) { | |
| def artifacts = mavenDao.getGeneratedArtifacts(job.fullName, job.lastSuccessfulBuild.number) | |
| if (artifacts.any { mavenArtifactId.equalsIgnoreCase(it.id) }) { | |
| return job | |
| } | |
| build = build.previousSuccessfulBuild | |
| } | |
| } | |
| } | |
| return null | |
| } | |
| def artifactJob = findJob('product-folder', 'com.acme:examle:1.0.0-SNAPSHOT') | |
| if (artifactJob) { | |
| return new RunWrapper(artifactJob.scheduleBuild2(5).waitForStart(), false) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment