我正在寻找一个jenkins插件,它允许我添加一个链接到我创建的新页面的新链接。我已经确定了如何通过扩展RootAction来创建新链接,我可以将它链接到webapp目录中的静态资源。我的问题很多。我想我需要使用果冻页面,因为我想在我的这个新页面上做的动作的性质,即使我能用静态网页内容做我想做的事情,链接弹出我的jenkins界面到仅包含我的静态网页内容的网页。
我需要知道的是,您如何创建一个全新的页面?我一直在寻找JavaDoc寻找接口和互联网,以获取有关如何编写插件的更多文档。但是互联网似乎遗憾地缺乏有关Jenkins插件开发的信息。
我想要做的是能够点击我的新链接并将它带到我的新页面,仍然使用所有Jenkins导航等等,在这个新页面上,我将有一个用于执行某些操作的表单对文件的操作。
我非常感谢任何帮助或对我未找到的文档的指示。
答案 0 :(得分:0)
如您所见,第一步是扩展RootAction或Action,具体取决于您希望页面位于何处:分别是全局或每个项目。
一个简单的RootAction:
package my.package;
@Extension
public class MyNewPage implements hudson.model.RootAction
{
@Override
public String getDisplayName()
{
return "My Custom Page";
}
@Override
public String getIconFileName()
{
return (Jenkins.RESOURCE_PATH + "/images/48x48/terminal.png").replaceFirst("^/", "");
}
@Override
public String getUrlName()
{
return "my-url"; // the url path
}
}
接下来,添加一个关联的果冻文件,位于src/main/resources/my/package/MyNewPage/index.jelly
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true">
<l:header title="My New Page" />
<l:main-panel>
<h1>Put content here</h1>
</l:main-panel>
</l:layout>
</j:jelly>
有关更多标签,请参见jenkins jelly tag reference。请注意,l:layout
标签是完全可选的,您完全不必使用jenkins标签,而可以在果冻中转储静态HTML内容
然后这两个文件将用于呈现对http://localhost:8080/jenkins/my-url的请求
或者,对于完全动态的内容,请使用jenkins中内置的stapler library来呈现任意URL。这是一个愚蠢的小示例,它打印出url:
public void doDynamic(StaplerRequest req, StaplerResponse resp) throws IOException
{
resp.setStatus(418);
resp.getOutputStream().print("I'm a teapot! You requested this path: " + req.getRestOfPath());
}
只需将该方法或any of the stapler methods添加到MyNewPage(或任何支持该方法的扩展名)即可。它将响应http://localhost:8080/jenkins/my-url/*
我发现了一些其他好的参考文献: