我目前正在寻找一种方法来获取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();
提前致谢!
好吧,显然Builder.all()确实存在。
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; }