logo资料库

Jenkins插件开发手册.docx

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
Jenkins插件开发
搭建开发环境
1、安装JDK
2、安装Maven
3、安装jenkins
插件开发流程
1、设置环境
2、生成新的插件
3、编译插件
4、为IDE设置开发环境
5、工作空间布局
6、源代码
7、调试插件
8、发布插件
9、安装插件
源码分析
1、java源代码
2、视图配置文件
测试案例
1、编写代码
2、准备编译工作
3、配置jenkins
4、进行编译
参考资料
Jenkins 插件开发 搭建开发环境 为了能开发插件,开发环境需要安装 Maven 和 JDK 6.0 以上版本。 1、安装 JDK 打开 cmd, 输入 java –version 如下图,说明安装完成。 如果没安装,点击链接 http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html 图 1 2、安装 Maven 1. 下载 Maven http://maven.apache.org/download.html 如下图: 图 2 将安装包解压到任意地址,我的路径是 D:\apache-maven-3.0.5 新建环境变量 M2_HOME 指向 D:\apache-maven-3.0.5 在 path 添加路径%M2_HOME%\bin 打开 cmd 输入 mvn –v, 如下图: 图 3 1
安装成功。 给 eclipse 安装插件 m2eclipse。 1、 打开 eclipse 2、 Help-Install New Software 出现下图: 3、 点击 Add 图 4 图 5 在 name 输入 m2e 在 Location 输入 http://m2eclipse.sonatype.org/sites/m2e 4、 确定后出现下图: 5、 勾选 Maven Integration for Eclipse 6、 然后一直下一步直到安装完毕 图 6 2
7、 检查是否安装成功 (1) 点击 Help – about eclipse – installation details,看是否存在 Maven Integration for Eclipse(Required),如下图: (2) 再检查 eclipse 是否可以创建 Maven 项目了,File-New-Other 图 7 到此 Maven 安装完成了。 图 8 3、安装 jenkins 下载 jenkins 链接 http://jenkins-ci.org/ 将 jenkins.war,拷贝到 D:\jenkins 下,打开 cmd,转到 D:\jenkins 目录下 然后运行 java –jar jenkins.war 最后出现 jenkins is fully up an running。说明安装成功。 访问 http://localhost:8080 界面如下图: 3
图 9 插件开发流程 1、设置环境 由于是使用 maven 进行开发,需要对%USERPROFILE%\.m2\settings.xml(USERPROFILE 为用户名路径如 C:\Documents and Settings 下的用户)文件添加以下内容: org.jenkins-ci.tools jenkins true repo.jenkins-ci.org http://repo.jenkins-ci.org/public/ 4
repo.jenkins-ci.org http://repo.jenkins-ci.org/public/ repo.jenkins-ci.org http://repo.jenkins-ci.org/public/ m.g.o-public 这将可以使用缩短的命令来执行运行。 2、生成新的插件 开发新的插件,执行以下命令: mvn –U hpi:create 将会提示出现需要输入 groupid 和 artifactid,如下: groupid:com.jysong.jenkins artifactid: newplugin 这样便生成了新的插件,会生成一个简单的例子,同时在当前目录下生成新的文件夹 newplugin,然后再执行下面的命令。 cd newplugin mvn package 使用这个命令将工程进行打包,不过由于版本的不同可能会出现错误。如果出现错误参 考下面的源代码部分进行修改。 在第一次执行命令时会下载很多的文件,需要耐心的等待。 3、编译插件 mvn install 运行此命令将会生成文件 ./target/newplugin.hpi。可以把它加载到 jenkins 中。并且 将./target/newplugin.hpi、pom.xml、./target/newplugin.jar 这几个文件安装到 maven 的 本地仓库中,就可以被其他的工程调用了。 也可以使用 mvn package,只是进行打包生成所需文件,并不安装到本地仓库中。 4、为 IDE 设置开发环境 使用 eclipse 进行代码开发。 5
mvn -DdownloadSources=true -DdownloadJavadocs=true –DoutputDirectory= target/eclipse-classes eclipse:eclipse 或者 mvn eclipse:eclipse 在此目录中生成 eclipse 工程,可以使用 eclipse 将工程进行导入。如下图: 图 10 5、工作空间布局 导入之后目录结构如下图: 图 11 src/main/java :存放 java 源文件。 src/main/resources:jelly/Groovy 视图文件。 src/main/webapp:静态资源文件,例如图片,HTML 文件。 pom.xml:配置文件,Maven 使用此文件编译插件。 6、源代码 由于版本的不同,在 src/main/java/com/jysong/jenkins 目录下可能有个 null 文件夹, 在文件夹下面有 HelloWorldBuilder.java 文件,将 HelloWorldBuilder.java 文件拷贝到 jenkins 文件夹下面,将 null 文件夹删除。并且将 HelloWorldBuilder.java 文件中的第一行的 package 最后面的.null 删除。HelloWorldBuilder.java 文件是一个开发插件的模板,包含 了开发一个简单插件的所有内容。后面将对这个文件代码进行详细分析。 在 src/main/resources/com/jysong/jenkins 目录下可能有个 null 文件夹,在文件夹下 面有个 HelloWorldBuilder 文件夹,将 HelloWorldBuilder 文件夹拷贝到 jenkins 文件夹下 面,将 null 文件夹删除。在 HelloWorldBuilder 文件夹下面有 global.jelly 和 config.jelly 配 置文件。这两个文件是进行页面配置的文件。 7、调试插件 在 windows 系统上,执行以下命令: set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket, server=y, address 6
=8000, suspend=n mvn hpi:run 使用 http://localhost:8080/ 在浏览器中登录,将会看到 jenkins 页在 Jetty 中运行。MAVEN_OPTS 启 动了端口为 8000 的调试器,可以在这个端口开启一个调试会话。 如果 8080 的端口被占用,将会出现错误,不会运行 jetty 服务器。可以更改端口使用以下命令: mvn hpi:run –Djetty.port=8090 可以使用 http://localhost:8090/进行登录了。 设置上下文路径 mvn hpi:run –Dhpi.prefix=/jenkins 执行这个命令之后登录地址将变为 http://localhost:8090/jenkins 8、发布插件 运行以下命令,生成你的插件的图片。 mvn package 生成 ./target/*.hpi 文件,其他使用者可以使用 jenkins 的 web 界面上传到 jenkins。 9、安装插件 在 jenkins 的 web 界面中由 Manage Jenkins>Manage Plugins>Advanced 图 12 点击 Choose File,选择你的插件的 target 目录下的 hpi 文件。选择之后点击 Upload,插件 就会配置到 jenkins 中。 到此一个简单的插件开发完成了,可以在此基础上进行更复杂的开发。详细开发插件流程的 地址 https://wiki.jenkins-ci.org/display/JENKINS/Plugin+tutorial 源码分析 1、java 源代码 在目录 src/main/java/com/jysong/jenkins 下有文件 HelloWorldBuilder.java。代码如下: public class HelloWorldBuilder extends Builder { private final String name; 7
// Fields in config.jelly must match the parameter names in the "DataBoundConstructor" @DataBoundConstructor public HelloWorldBuilder(String name) { this.name = name; } /** * We'll use this from the config.jelly. */ public String getName() { return name; } @Override public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) { // This is where you 'build' the project. // Since this is a dummy, we just say 'hello world' and call that // This also shows how you can consult the global configuration a build. of the builder if (getDescriptor().getUseFrench()) listener.getLogger().println("Bonjour, "+name+"!"); listener.getLogger().println("Hello, "+name+"!"); else return true; } // Overridden for better type safety. // If your plugin doesn't really define any property on Descriptor, // you don't have to do this. @Override public DescriptorImpl getDescriptor() { return (DescriptorImpl)super.getDescriptor(); } /** * Descriptor for {@link HelloWorldBuilder}. Used as a singleton. * The class is marked as public so that it can be accessed from views. * *

* See src/main/resources/hudson/plugins/hello_world/HelloWorldBuilder/*. jelly * for the actual HTML fragment for the configuration screen. */ @Extension // This indicates to Jenkins that this is an implementation 8

分享到:
收藏