Jenkins源码分析

更新时间:2023-05-26 00:24:42 阅读: 评论:0

Jenkins源码分析
儿童识字游戏
Stapler
Stapler 是⼀个将应⽤程序对象和 URL 装订在⼀起的 lib 库,使编写 web 应⽤程序更加⽅便。Stapler 的核⼼思想是⾃动为应⽤程序对象绑定 URL,并创建直观的 URL 层次结构。
下图显⽰了 Stapler 的⼯作原理:
上图左边显⽰了应⽤程序的代码信息,右边显⽰了 URL 的层次结构。通过反射机制,Stapler 可以将 URL 绑定到应⽤程序对象。⽐如说,应⽤程序的根对象对应 URL 的根“/”。通过 getProject(“stapler”) ⽅法访问的对象将分派给 URL “/project/stapler”。通过这种⽅式,应⽤程序对象模型就直接转化为 URL 的层次结构, 如图中紫⾊箭头所⽰。预防性侵害
Jenkins 的类对象和 URL 绑定就是通过 Stapler 来实现的。Hudson 实例作为 root 对象绑定到 URL“/”,其余部分则根据对象的可达性来绑定。例如 Hudson 有⼀个 getJob(String) ⽅法,那么根据上图的介绍,可以知道 URL“/job/foo/”将绑定到 Job(“foo”) 返回的对象。
右耳朵热
Jelly
ml等于多少g
Jelly 是⼀种基于 Java 技术和 XML 的脚本编制和处理引擎。Jelly 的特点是有许多基于 JSTL (JSP 标准标记库,JSP Standard Tag Library)、Ant、Velocity 及其它众多⼯具的可执⾏标记。Jelly 还⽀持 Jexl(Java 表达式语⾔,Java Expression Language),Jexl 是 JSTL 表达式语⾔的扩展版本。
证券业从业人员资格考试Jenkins的界⾯绘制就是通过Jelly实现的。Jelly⽂件位于resources⽬录下,如下图所⽰
⾸页⽂件渲染⽂件位于lib/layout/layout.jelly,引⽤⽰例如下,l:yui引⽤当前⽬录下的yui.jelly进⾏渲染,查看yui.jelly内容,可以知道此处为引⽤yui-js⽂件的代码:
持久化
无任欢迎Jenkins 使⽤⽂件来存储数据(所有数据都存储在$JENKINS_HOME)。有些数据,⽐如 console 输出,会作为⽂本⽂件存储;有些数据则会像Java 配置⽂件格式⼀样存储;⼤多数的结构数据,如⼀个项⽬的配置或构建(build)记录信息则会通过 XStream 持久化,实际如图 3 所⽰。从图中可以看到 Jenkins 把⼀个 Job 的所有构建记录都通过 XStream 记录下来。
插件
Jenkins 的对象模型是可扩展的,通过 Jenkins 提供的可扩展点,我们可以开发插件扩展 Jenkins 的功能。到⽬前为⽌,Jenkins 已经⽀持超过 600 个插件,这些插件⽀持的功能涵盖了软件配置管理 (SCM)、软件测试、通知(Notification)、报表等⽅⾯。
Jenkins 通过单独的类加载器加载每个插件以避免插件之间产⽣冲突。插件就像 Jenkins 内置的其他类⼀样参与到系统的活动中。另外,插件可以通过 XStream 持久化,可以由 Jelly 提供视图技术,可以提供图⽚等静态资源,插件中所有的功能可以⽆缝的加⼊到 Jenkins 内置的功能上。
回首Jenkins⼊⼝⽂件
Jenkins 代码的⼊⼝是下图所⽰的 WebAppMain 类,位于 hudson(package) 下⾯
哈尔滨三日游
类 WebAppMain 实现了 ServletContextListener 接⼝。该接⼝的作⽤主要是监听 ServletContext 对象的⽣命周期。当 Servlet 容器启动或终⽌ Web 应⽤时,会触发 ServletContextEvent 事件,该事件由 ServletContextListener 来处理。此外,ServletContextListener 接⼝还定义了两个⽅法,contextInitialized 和 contextDestroyed。通过⽅法名,我们可以看到这两个⽅法中⼀个是启动时候调⽤ (contextInitialized),⼀个是终⽌的时候调⽤ (contextDestroyed)。
类中通过 contextInitialized ⽅法初始化了⼀个 Jenkins 对象。在 Servlet 容器初始化的时候,Jenkins 对象会交由WebAppMain 的 initTread 线程创建。

本文发布于:2023-05-26 00:24:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/930813.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   插件   程序   扩展   提供   绑定
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图