如何将页面添加到Jenkins?

ite*_*ewk 5 hudson jenkins

我正在寻找一个jenkins插件,可以让我添加一个新链接,该链接链接到我创建的新页面。我已经确定了如何通过扩展RootAction来创建新链接,并且可以将其链接到webapp目录中的静态资源。我的问题有很多。我想我需要使用一个果冻页面,因为我想在我的这个新页面上进行操作,因此即使我可以使用静态Web内容执行该操作,该链接也会从我的jenkins界面弹出页面仅包含我的静态网页内容。

我需要知道的是,您如何创建一个全新的页面?我一直在为寻找接口和Internet寻找JavaDoc而苦苦寻找有关如何编写插件的更多文档。但是,令人遗憾的是,互联网似乎缺少与Jenkins插件开发有关的信息。

我想要做的是能够单击我的新链接,并将其带到我的新页面,同时仍然具有所有的Jenkins导航等功能,在这个新页面上,我将具有一个用于对文件执行某些操作的表单。

我没有找到的任何帮助或指向文档的指针将不胜感激。

byt*_*101 2

正如您所发现的,第一步是扩展 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
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,添加位于以下位置的关联果冻文件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>
Run Code Online (Sandbox Code Playgroud)

有关更多标签,请参阅jenkins jelly 标签参考。请注意,该l:layout标签是完全可选的,您根本不必使用 jenkins 标签,而是可以在 jelly 中转储静态 HTML 内容

然后,这两个文件将用于呈现对http://localhost:8080/jenkins/my-url 的请求

或者,对于完全动态的内容,可以使用jenkins 内置的订书机库来呈现任意 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());
}
Run Code Online (Sandbox Code Playgroud)

只需将该方法或任何订书机方法添加到 MyNewPage(或支持它的任何扩展)即可。它将响应以下所有网址http://localhost:8080/jenkins/my-url/*

我发现的其他一些很好的参考资料: