终于整好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)
暂无评论!