Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save ruslan-khalitov/5def58b8d78486e94ba5dda56cf7bf00 to your computer and use it in GitHub Desktop.

Select an option

Save ruslan-khalitov/5def58b8d78486e94ba5dda56cf7bf00 to your computer and use it in GitHub Desktop.
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