终于整好WIndows下持续集成环境了Hudson

4952 次阅读 by 九九 2012-02-22 | 标签:Svn Hooks Hudson 持续集成 CI 总结

终于整好WIndows下持续集成环境了: 1. Hudson + svn + ant  + java; 2. Hudson + svn + phing + php; 详细请看:
比较无语为什么post-commit.bat里写入: php xxx.php commit时php程序找不到,错误信息: “钩子 “post-commit” 'php' 不是内部或外部命令,也不是可运行的程序” 解决方法:php程序的绝对路径 参数;如,E:\AppServ\php5\php.exe %SETPATH%/svn-hudson.php %REPOS% %REV% 我的hooks实例:hooks.rar 里面包含有两个文件:(提交后自动执行的操作)post-commit.bat, svn-hudson.php。调用关系:svn->post-commit.bat->svn-hudson.php。如果你有同样的问题,欢迎交流。 post-commit.bat代码:
REM 仓库路径
set REPOS=%1
REM 版本号
set REV=%2
set SETPATH=F:/CodeLibrary/hooks
REM Invoke php file
E:\AppServ\php5\php.exe %SETPATH%/svn-hudson.php %REPOS% %REV%
svn-huson.php代码:
 1,

'HudsonTest_1' => 0,

'HongJuZi' => 1

);

$commitProjectDir   = getRepositoryChangeDirs();

foreach($projects as $project => $open) {

if($open == 1 && stripos($commitProjectDir, $project)) {

activeBuild($project);

}

}

}

/**

* 激活构建

*

* 激活工程的构建过程

*

* @Access public

* @Param $projectName

* @Return void

* @Exception none

*/

function activeBuild($projectName)

{

static $hudsonBuildUrl  = "http://localhost:800/hudson/job/%s/build?delay=0sec";

logger($projectName + " ActiveBuild:\t" + sprintf($hudsonBuildUrl, $projectName));

return file_get_contents(sprintf($hudsonBuildUrl, $projectName));

}

/**

* 日志

*

* 记录一下日志

*

* @Access public

* @Return void

* @Exception none

*/

function logger($msg)

{

$logFile        = dirname(__FILE__) . '/svn_hook_log';

$msg            = formatLogMsg(&$msg);

if(file_exists($logFile)) {

$fHandle    = fopen($logFile, 'a');

fwrite($fHandle, $msg);

fclose($fHandle);

} else {

file_put_contents($logFile, $msg);

}

}

/**

* 格式化日志信息

*

* 给日志加上一定的格式,如操作时间

*

* @Access public

* @Param $msg

* @Return void

* @Exception none

*/

function &formatLogMsg($msg)

{

return sprintf("%s\t%s\n", date("Y-m-d H:m:s", $msg));

}

/**

* 程序入口

*

* 执行程序的过程

*

* @Access public

* @Return void

* @Exception none

*/

function main()

{

global $argv;

/**

* @Var 仓库路径

*/

$repository = $argv[1];

/**

* @Var 版本号

*/

$version    = $argv[2];

if(count($argv) > 2) {

buildProject();

}

}

//调用入口

main();

?>
:D

评论(0)

暂无评论!


PS:多打字可以减肥哦~234字以内。支持表情:


Top