svn + post-commit 实时测试php代码

凉白开 SVN319,3645字数 1999阅读6分39秒阅读模式

在开发环境中,一般是程序本地测试->服务器测试环境->正式发布上线,程序员本地写完并且测试完毕之后,提交到svn上,希望实时看提交代码后的效果。有些开发者手动检出到web站点下测试,最后发布到服务器上,这需要花费不少时间,本文将讲诉使用svn在钩子实时展示出代码的效果.

1. 环境准备
基于apache验证的svn
svn域名:http://svn.ttlsa.com:801文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

web站点
根目录/data/site/test.ttlsa.com/文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

svn和站点配置这步骤我跳过了,如果你不会,请参考我们运维生存时间之前写的文章《Linux下基于Apache安装SVN及相关配置》和《nginx安装(1) - ttlsa教程系列之nginx文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

2. 流程
首先创建svn版本库/data/svn/test.ttlsa.com,然后在svn库中创建svn钩子,在开发电脑上检出最初版本,并且将自己的代码提交到svn上,此时svn钩子将会把代码实时检出/更新到/data/site/test.ttlsa.com站点目录中。最后访问浏览器测试文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

3. svn配置
3.1 创建svn版本库文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

# svnadmin create /data/svn/test.ttlsa.com

3.2 创建svn钩子post-commit文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

# vim /data/svn/test.ttlsa.com/hooks/post-commit
#!/bin/bash
# DateTime:2013-05-16 14:58:33
# AuthorName: Deng Yun
# description:用于实时检出的钩子

# 基本变量
export LANG=en_US.UTF-8
dateTime=`date +%F`
dateTimeMinute=`date +%H%M%S`
binSvn=/usr/local/subversion-1.8.5/bin/svn # 你svn的绝对路径
dirHtmlApp=/data/site/test.ttlsa.com #检出的web站点根目录
logFileName=/tmp/svnhooks_${dateTime}.log

# svn配置
REPOS="$1"
REV="$2"

# 检出或者更新subversion,钩子的核心功能
echo  "-- $dateTimeMinute" >> $logFileName
if [ ! -d $dirHtmlApp/.svn ]; then
   # 检出SVN
   echo "$binSvn co file://$REPOS/  $dirHtmlApp" >> $logFileName
   $binSvn co file://$REPOS/  $dirHtmlApp
   if [ $? -eq 0 ]; then
      echo  "checkout ok"  >> $logFileName
   else
      echo  "checkout error"   >>  $logFileName
   fi
else
   # 更新svn
   echo " $binSvn up $REV $dirHtmlApp " >> $logFileName
   $binSvn up $REV $dirHtmlApp   >> $logFileName
   if [ $? -eq 0 ]; then
       echo  "  update sucess "  >> $logFileName
   else
       echo  "  update fial "   >>  $logFileName
   fi
fi
echo  "--" >>  $logFileName

给执行权限文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

# chmod a+x /data/svn/test.ttlsa.com/hooks/post-commit

3.3 检出代码文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

git

1 - 检出

3.4 提交代码
在目录中新建index.php文件,内容如下:文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

<?php
echo 'svn - ttlsa.com';
?>

然后提交到svn上文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

git

2 - 提交

 文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

4. 实时测试php
访问http://test.ttlsa.com/index.php,如下图文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

git

3 - 测试

 文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

5. 总结
思路很简单,不仅仅php可以这么做,其他程序也可以使用钩子来实现。一般情况下,推荐使用svn+钩子取代ftp传代码的方式,这样备份的问题解决了,恢复版本也相对方便。文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

站点:运维生存时间(转载请注明出处)
网址:https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/ 文章源自运维生存时间-https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 14/02/2014 00:24:45
  • 转载请务必保留本文链接:https://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/
评论  3  访客  3
    • 风范
      风范 9

      PHP不需要编译,如果需要编译的如JAVA 中间还得弄个编译器

    评论已关闭!