您的位置:首页 > 其它

Jenkins插件开发进阶篇之扩展插件功能

2018-02-08 20:00 453 查看
之前写过一篇文章是关于如何开发jenkins插件,主要讲述了开发jenkins插件时需要准备的环境,如何新建一个jenkins插件工程,以及对工程项目目录结构的解析。
本文是jenkins插件开发的进阶篇,主要讲述如何扩展jenkins插件的功能。如下图所示:


(1)Job任务侧边栏添加选项

(2)在Job任务中添加新页面

实现Jenkins插件以上两个功能,需要关注以下两个问题。
1、  如何向Job项目主页面中回传的数据
2、  如何在Job项目中添加新页面
废话少说,直入正题吧。
一、传递数据
首先在FireLineBuilder类的同一目录下新建一个FireLineScanCodeAction类,该类需要实现Action接口。Action接口是扩展jenkins插件的一个基本构建接口,其他还有很多不同功能的子接口,例如:BuildBadgeAction,runAction2,HealthReportingAction,SimpleBuildStep.LastBuildAction,ProminentProjectAction等等。         Action接口中有三个方法必须要实现:getUrlName()、getIconFileName()和getDisplayName()。以上三个方法分别设置该Action的URL地址名称、显示图标地址以及显示的名称。
当需要传递数据到Job任务页面中时,我们需要在FireLineScanCodeAction类中添加一个字段,以及get方法。
源代码如下所示:package com.qihoo.fireline;
import hudson.model.Action;
public class FireLineScanCodeAction implements Action {
private String name;
public FireLineScanCodeAction(String name) {
this.name = name;
}
public String getName() {
return name;
}
(…)
}Action的实现类已经准备好了,现在我们需要在job构建时为实现类添加实例。在FireLineBuilder类中的perform方法中为本次构建添加FireLineScanCodeAction类的实例。
源代码如下:(...)
@Override
public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException {
run.addAction(new FireLineScanCodeAction(" FireLine "));
}
(...)

二、添加新页面
首先,我们需要回到FireLineScanCodeAction类中为此Action定义图标主题名称和URL地址名称。
源代码如下: @Override
public String getIconFileName() {
return "document.png";
}
@Override
public String getDisplayName() {
return " FireLine Static Analysis ";
}
@Override
public String getUrlName() {
return "fireline";
}

添加好相关信息后,需要在src/main/resources/com/qihoo/fireline/目录下添加FireLineScanCodeAction/目录,此目录与FireLineScanCodeAction类相对应。在src/main/resources/com/qihoo/fireline/FireLineScanCodeAction/目录下新建index.jelly文件。
文件内容如下:(…)
<l:layout title="fireline">
<l:main-panel>
<h1>
Name: ${it.name}
</h1>
</l:main-panel>
</l:layout>

此时,页面已经添加完成。使用命令mvn hpi:run运行,浏览器打开页面http://localhost:8080/jenkins新建一个任务,命名为firelineTest。到项目配置中添加”ExecuteFireLine”构建选项后保存。返回到firelineTest项目中可看到侧边栏中增加“FireLine Static Analysis”选项。
到此一个有回传数据的侧边栏选项就添加完成了。
后续还会介绍如何更改为自定义的图标,以及如何扩展ProminentProjectAction接口等进阶内容。例如火线(FireLine )的jenkins插件的图标显示。如下图:


目前相关Jenkins插件的开发方面的资料比较少,如有纰漏还望指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息