当前位置: 首页 > 面试题库 >

我如何检索可用于工作的所有Jenkins构建步骤的列表?

鲁华皓
2023-03-14
问题内容

我目前正在寻找一种方法来获取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()确实存在。

这解决了我的问题:

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;
}


 类似资料:
  • 问题内容: 我想用詹金斯建立一个Maven项目。但是,只有在SVN储存库中的某个文件已更改(并且包含特殊密钥)的情况下,才必须构建项目。 所以我的计划是创建一个包含两个构建步骤的工作: 第一步是执行检查该“条件”的shell或python脚本。 第二步是实际的Maven构建 仅当步骤1中的条件检查返回“ true”时,才必须调用第二步。 有可能这样做吗?好吧,我想如果不满足条件,我可以在第一个脚本

  • 在Jenkins管道中,我使用构建步骤触发其他几个作业,并向其传递一些参数。除了管道之外,我在可视化我触发的不同工作时遇到了问题。我已经设置了Jenkins Delivery Pipeline插件,但是它的文档非常模糊,我只能可视化管道中的步骤,尽管用阶段和任务名称标记作业。 例子: 我在Jenkins中有两个作业作为管道/工作流作业,具有以下管道脚本: 工作坊: 作业栏: 我如何使它也显示在工作

  • 问题内容: 我想要一个Jenkins构建步骤,该步骤只是将给定的URL下载到工作区中。有没有简单的方法可以做到这一点? (我目前使用一个简单的Ant脚本。但这意味着我需要将该脚本放在SVN中的某个位置,并在构建期间进行检查。我觉得很麻烦。) 更新: 澄清一下,我想下载一个URL,而无需在构建系统上安装其他软件或使用其他脚本。(当然,可以使用Jenkins插件。)优选地,我不想依赖于Linux,Wi

  • 问题内容: 如何在预构建步骤中触发hudson的其他工作? 问题答案: 有一个参数化触发器插件,可在“添加构建步骤”菜单中启用“在其他项目上进行触发器/调用构建”。

  • 问题内容: 我想根据测试工具的输出来并行化Jenkins阶段。但是,我遇到了一个问题,因为所有并行节点的定义都相同(除了jenkins- workflow 插件中当前中断的循环之外)。精简了工作流程脚本示例: 虽然我希望得到如下结果: 我将所有三个节点定义为 三个 -如以下输出所示(请注意重复的输出): 为什么会这样呢?这是中的另一个错误,还是我出了点问题?该 平行 例如 不访问任何变量。 问题答

  • 问题内容: 我有一个使用Perforce插件的参数化作业,想检索构建参数/属性以及由Perforce插件设置的p4.change属性。 如何使用Jenkins Groovy API检索这些属性? 问题答案: 关于参数: 首先看这个答案要获取项目的所有构建的列表(根据该答案获得): 当你发现你特别的身材,你需要得到类型的所有行动ParametersAction用。然后,您查询返回的对象以获取您的特定