Jenkins插件开发:可以复制果冻文件并修改它们吗?

时间:2014-08-28 17:57:12

标签: plugins jenkins hudson jenkins-plugins jelly

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

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

提前谢谢!

1 个答案:

答案 0 :(得分:1)

配置页

  • 首先,您需要一个扩展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()中返回的String(现在为“BuildstepName”)确定了Jenkins中构建步骤或操作的名称。

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

添加到项目页面

  • 创建一个实现Action的类(覆盖必要的方法并为它们赋值(非null))
  • 在创建的Builder / Publisher类中,覆盖getProjectAction(AbstractProject<?, ?> project)方法并返回上面创建的实现Action的类
  • 覆盖Builder / Publisher类中的`perform(AbstractBuild构建,Launcher启动器,BuildListener侦听器)方法,让它返回true
  • 工作时,项目页面侧面板上有一个链接
  • 将index.jelly链接到此Action类(在与Action类同名的资源映射中)
  • 如果单击侧面板中的链接
  • ,您将看到此页面
  • 要在项目页面本身上显示一些内容,您需要创建一个名为floatingBox.jelly的文件(也在资源图中使用Action类的名称)