如题,这周的工作主要围绕着Foreman服务器的搭建和Jenkinsplugin的UI实现上,其间并不顺利,结果也差强人意。
1.Foreman服务器的搭建和问题
操作系统为CentOS6.4x86_64,安装应用开发版,安装完毕重启进入操作界面,打开终端进入root模式,输入
Yum -y install ruby
自动安装Ruby应用。安装完成后安装插件EPEL repo和Percona repo。接下来最好将防火墙和selinux关闭。在root模式下输入setenforce 0即可将selinux关闭。
然后通过yum源下载安装foreman,步骤如下:
yum -y installhttp://yum.theforeman.org/releases/1.1/el6/x86_64/foreman-release.rpm
yum -y install foreman-installer
接着通过hostname修改一下主机名,主机名要求是完整的域名,比如happy.localhost.com。最后直接输入foreman-installer执行服务器搭建,但初次搭建服务器过程中等待时间较长,可能出现比较多报错甚至无法继续搭建过程。第一次不成功试第二次,同样直接输入foreman-installer执行,最终进行完99%进度后出现两个报错,是关于rubygem bootdisk的,涉及的插件是ruby193-rubygem-foreman_disk,关于这个插件在redhat.com看到一点信息,百度搜索到的信息就三条,这成了我这些天搭建Foreman服务器的死结。
2.Jenkins plugin的jelly控件添加及问题
本plugin开发应用扩展节点为BuildWrapper,类的声明为
public class ForemanSetup extendsBuildWrapper{
//继承扩展节点BuildWrapper
}
2.1.应用节点实现界面
应用节点实现界面如下图:
名称通过内部类DescriptorImpl方法getDisplayName()提交,源码如下:
publicString getDisplayName() {
return"Setup host via Foreman";
}
2.2.UI设计
Foreman配置界面如下图:
Jelly控件entry添加源码段如下:
<f:entry title="User" >
<f:textbox name="user"/>
</f:entry>
<f:entry title="Password" >
<f:textbox name="password"/>
</f:entry>
<f:entry title="URL" >
<f:textbox name="url"/>
</f:entry>
<f:entry>
<f:hetero-list addCaption="Add toForeman"></f:hetero-list>
</f:entry>
2.3.Foreman添加Host和Hostgroup界面整体
Foreman添加主机和主机群组界面以及构建环境整体界面如下:
添加主机和主机群组界面jelly实现源码段:
<f:entry title="Foreman Host">
<f:repeatable var="setuphostEntry"items="${instance.buildhostEntries}">
<table width="100%">
<f:entry title="Host" >
<f:textbox name="host"/>
</f:entry>
<f:entry title="Build Host">
<f:checkbox name="buildhost"/>
</f:entry>
<f:entry title="">
<divalign="right">
<f:repeatableDeleteButton/>
</div>
</f:entry>
</table>
</f:repeatable>
</f:entry>
<f:entry title="ForemanHostgroup">
<f:repeatable var="setuphostgroupEntry"items="${instance.buildhostgroupEntries}">
<table width="100%">
<f:entrytitle="Hostgroup" >
<f:textboxname="hostgroup"/>
</f:entry>
<f:entry title="BuildHostgroup" >
<f:checkboxname="buildhostgroup"/>
</f:entry>
<f:entry title="">
<divalign="right">
<f:repeatableDeleteButton/>
</div>
</f:entry>
</table>
</f:repeatable>
</f:entry>
2.4.界面实现遇到问题
到现在还并没有完全实现“Add to Foreman”按钮的下拉选择添加功能。
Acknowledgements
感谢边瑞峰导师提供讨论指导和参考资料,在这个过程中我受益匪浅,古语有云“朋友易结,良师难寻。”
References
1.Foreman安装指导教程
http://my.itwnik.com/2013/06/step-by-step-installationconfiguration-guide-for-foremanpuppet/
2. Jelly Taglib references
https://jenkins-ci.org/maven-site/jenkins-core/jelly-taglib-ref.html#form:repeatable
3. Jenkins插件开发 - 混世魔王 - 开源中国社区
http://my.oschina.net/songcser/blog/159170