清单 2. /service/cruisecontrol/run 的内容
#!/bin/sh svc=`pwd` cd /home/cruise exec 2>&1 exec setuidgid cruise \ envdir ${svc}/env \ java -jar pkg/cruisecontrol-2.2.1/main/dist/cruisecontrol.jar
这个脚本相当简单。它执行以下这些步骤:
保存服务目录的名称(在这个示例中是 /service/cruisecontrol)留待后用。 把当前目录变为 /home/cruise。 让标准错误流写入到multilog进程的管道,这个管道已经连接到了标准输出流。 启动 JVM,运行 CruiseControl,以cruise这个用户身份运行进程,并根据 /service/cruisecontrol/env 目录中创建的文件设置环境。清单 3 演示了 /service/cruisecontrol/log/run 脚本,它更简单。它以cruise用户的身份运行multilog:
清单 3. /service/cruisecontrol/log/run 的内容
#!/bin/sh exec setuidgid cruise multilog /home/cruise/log/cruisecontrol
请注意,必须使用chmod把两个脚本变成可执行的。而且,这两个脚本都要小心地使用exec外壳命令,这个命令用一个程序替代另一个程序,但是没有创建新进程。这一点很重要,因为supervise只能管理自己的直接子进程。如果没有使用exec,那么 JVM 会作为执行 run 脚本的外壳的一个子进程启动。如果向supervise发送了杀死其子进程的信息,那么外壳会接收到信号并退出,但是 JVM 会继续运行,从而变成孤儿。supervise并不会知道这一点,所以可能会接着启动守护程序的第二个拷贝 —— 这并不是想要的结果。
在设置好服务目录之后,可以把它改名,删除前导点号。然后svscan就会自动启动 CruiseControl,它的输出也会出现在日志文件中:
[root@fcvm .cruisecontrol]#cd ..[root@fcvm service]#mv .cruisecontrol cruisecontrol[root@fcvm service]#cat /home/cruise/log/cruisecontrol/current[cc]Aug-24 21:45:45 Main - CruiseControl Version 2.2.1 [cc]Aug-24 21:45:46 trolController- projectName = [xstream] [cc]Aug-24 21:45:46 Project - Project xstream: reading settings from config file [/home/cruise/config.xml] [cc]Aug-24 21:45:47 BuildQueue - BuildQueue started [cc]Aug-24 21:45:47 Project - Project xstream starting [cc]Aug-24 21:45:47 Project - Project xstream: idle [cc]Aug-24 21:45:47 Project - Project xstream started [cc]Aug-24 21:45:47 Project - Project xstream: next build in 1 hours [cc]Aug-24 21:45:47 Project - Project xstream: waiting for next time to build [root@fcvm service]#
简化 CruiseControl 的配置
现在已经让 CruiseControl 自动运行在一个很好的受控环境中。下面要做的就是向配置中添加自己的项目。正如所料,config.xml 文件中的项目看起来非常相似,不同之处只是要用哪个工具来构建项目的细节。可以在文本编辑器中用拷贝粘贴的方式手工维护 config.xml 文件,但是一种更少出错的技术是使用 XSLT 样式表从更简单的 XML 文档生成 config.xml 文件。实现这个方案的文件集合已经合成了一个可以下载的压缩 tar 文件(请参阅下载)。请解压缩这些文件到 /home/cruise 目录:
[cruise@fcvm ~]$lsconfig.xml force-build pkg xstream.ser cruisecontrol.log log src [cruise@fcvm ~]$tar xvzf[...]/simple-cc.tar.gzmeta-config-params.xsl meta-config.xsl meta-config.xml mkconfig [cruise@fcvm ~]$lsconfig.xml meta-config-params.xsl pkg cruisecontrol.log meta-config.xml src force-build meta-config.xsl xstream.ser log mkconfig [cruise@fcvm ~]$
简化的配置文件名为 meta-config.xml。这个文件要用 meta-config.xsl 样式表进行变换,生成 CruiseControl 的 config.xml 文件。叫作mkconfig的简单脚本用早先安装的 XMLStarlet 工具执行转换操作。请运行mkconfig重新生成 CruiseControl 的 config.xml 文件。
构建监视
前面开始的简单 CruiseControl 配置对于让第一个构建工作来说足够了,但是对于监视构建过程来说还不够。最常见的需求是把集成构建的结果通过电子邮件发送给相关开发人员。meta-config.xsl 样式表生成发送电子邮件消息的配置,但是要做到这一点,它需要一些本地环境变量的信息。它必须知道的许多变量要从 meta-config-params.xsl 文件读取;在开始之前应该根据实际情况修改这个文件。这个文件中的设置如下所示:
文章来源于领测软件测试网 https://www.ltesting.net/