2014-08-29 53 views
0

我正在尋找一種方法來獲取Jenkins作業的所有可用構建步驟的列表。如何檢索可用於工作的所有Jenkins構建步驟的列表?

有點像:提前

FreeStyleProject newJob = Jenkins.getInstance().createProject(FreeStyleProject.class, this.jobName); 
// TODO: Get the available build steps of the created job, following is pseudocode 
newJob.getAvailableBuilders(); 

謝謝!

回答

1

那麼,顯然Builder.all()確實存在。

這解決了我的問題:

List<BuildStepDescriptor<? extends Builder>> builders = new ArrayList<BuildStepDescriptor<? extends Builder>>(); 
for (hudson.model.Descriptor<Builder> descriptor : Builder.all()) { 
    if (!(descriptor instanceof BuildStepDescriptor)) { 
     continue; 
    } 
    BuildStepDescriptor<? extends Builder> buildStepDescriptor = (BuildStepDescriptor) descriptor; 
    // newJob is a FreeStyleProject 
    if (buildStepDescriptor.isApplicable(newJob.getClass()) && hasDbc(buildStepDescriptor.clazz)) { 
     builders.add(buildStepDescriptor); 
    } 
} 
for (BuildStepDescriptor<? extends Builder> buildStepDescriptor : builders) { 
    System.out.println(buildStepDescriptor.getDisplayName()); 
} 

private boolean hasDbc(final Class<?> clazz) { 
    for (Constructor<?> constructor : clazz.getConstructors()) { 
     if (constructor.isAnnotationPresent(DataBoundConstructor.class)) { 
      return true; 
     } 
    } 
    return false; 
} 
相關問題