0

我正在尝试开发我的第一个 Jenkins 插件,但我不确定几个问题:
到目前为止,我有一个创建新工作类型的类。它基本上看起来就像 Jenkins 的 FreeStyleProject 并且运行良好。

1)现在我希望插件在作业的配置页面上创建一个附加部分(新类型)。我尝试在资源包中添加一个 config.jelly,但没有奏效。然后我从 resources/hudson/model/Project 复制了 Jenkins 的 configure-entries.jelly 并在此处添加了我的信息。这样做可以吗?
2)此外,我想在项目页面中添加一些内容。我发现可以使用一个名为 jobMain.jelly 的文件,但仅在资源包中创建该文件并不会改变任何内容。因此,我从 resources/hudson/model/AbstractProject 复制了 Jenkins 的 main.jelly,并在此处添加了一些内容。那样行吗?它有效,但我不确定我以后是否会遇到麻烦。

提前致谢!

4

1 回答 1

2

配置页面

  • 首先,您需要一个扩展 BuildStepCompatibilityLayer 后代的类(如 Recorder 或 Builder 类)。
  • @DataBoundConstructor为这个类创建一个
  • 为这个类创建一个描述符,作为内部类
  • 扩展 Builder 类的类的示例:

    package tryBuilder.tryBuilder;
    
    import org.kohsuke.stapler.DataBoundConstructor;
    
    import hudson.Extension;
    import hudson.model.AbstractProject;
    import hudson.model.FreeStyleProject;
    import hudson.tasks.BuildStepDescriptor;
    import hudson.tasks.Builder;
    
    import org.kohsuke.stapler.DataBoundConstructor;
    
    public class BuilderExample extends Builder {
    
      @DataBoundConstructor
      public BuilderExample() {
      }
    
      @Extension
      public static class Descriptor extends BuildStepDescriptor<Builder> {
    
        @Override
        public boolean isApplicable(Class<? extends AbstractProject> jobType) {
            return FreeStyleProject.class.isAssignableFrom(jobType);
        }
    
        @Override
        public String getDisplayName() {
            return "BuildstepName";
        }
      }
    }
    

方法中返回的字符串getDisplayName()(现在是“BuildstepName”)确定 Jenkins 中构建步骤或操作的名称。

  • 现在您需要在资源目录中创建一个与上面创建的类同名的映射。
  • 将 config.jelly 放在该目录中
  • 在 Jenkins 中,开始工作,然后进行配置,接下来:
    • 如果您创建的类扩展了从 Builder 派生的类:添加构建步骤
    • 如果您创建的类扩展了类派生形式 Publisher:在构建步骤后添加操作
  • 并选择您在 getDisplayName() 方法中设置的名称
  • 现在您的 config.jelly 应该在此部分中可见

添加到项目页面

  • 创建一个实现 Action 的类(覆盖必要的方法并给它们一个值(非空))
  • 在创建的 Builder/Publisher 类中,重写getProjectAction(AbstractProject<?, ?> project)方法并返回上面创建的实现 Action 的类
  • 覆盖 Builder/Publisher 类中的 `perform(AbstractBuild build, Launcher launcher, BuildListener listener)' 方法,让它返回 true
  • 由于它的工作,项目页面的侧面板中有一个可见的链接
  • 将 index.jelly 链接到此 Action 类(在与 Action 类同名的资源映射中)
  • 如果您单击侧面板中的链接,您将看到此页面
  • 要在项目页面本身上显示某些内容,您需要创建一个名为 floatingBox.jelly 的文件(也在资源映射中使用 Action 类的名称)
于 2014-12-10T13:52:22.143 回答