svn + post-commit 实时测试php代码
<p>在开发环境中,一般是程序本地测试->服务器测试环境->正式发布上线,程序员本地写完并且测试完毕之后,提交到svn上,希望实时看提交代码后的效果。有些开发者手动检出到web站点下测试,最后发布到服务器上,这需要花费不少时间,本文将讲诉使用svn在钩子实时展示出代码的效果.</p><p><strong>1. 环境准备</strong><br>
基于apache验证的svn<br>
svn域名:http://svn.ttlsa.com:801</p>
<p>web站点<br>
根目录/data/site/test.ttlsa.com/</p>
<p>svn和站点配置这步骤我跳过了,如果你不会,请参考我们运维生存时间之前写的文章《Linux下基于Apache安装SVN及相关配置》和《nginx安装(1) - ttlsa教程系列之nginx》</p>
<p><strong>2. 流程</strong><br>
首先创建svn版本库/data/svn/test.ttlsa.com,然后在svn库中创建svn钩子,在开发电脑上检出最初版本,并且将自己的代码提交到svn上,此时svn钩子将会把代码实时检出/更新到/data/site/test.ttlsa.com站点目录中。最后访问浏览器测试</p>
<p><strong>3. svn配置</strong><br><span>3.1 创建svn版本库</span></p><pre class="brush:bash;toolbar:false"># svnadmin create /data/svn/test.ttlsa.com</pre><p><span>3.2 创建svn钩子post-commit</span></p><pre class="brush:bash;toolbar:false"># 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</pre><p>给执行权限</p><pre class="brush:bash;toolbar:false"># chmod a+x /data/svn/test.ttlsa.com/hooks/post-commit</pre><p><strong>3.3 检出代码</strong></p>
<div id="attachment_4200" class="wp-caption alignnone"><img src="https://zhuji.jb51.net/uploads/img/20230517/558f6feca3b9de0b24966acb35c50b4d.jpg" width="468" height="388"><p class="wp-caption-text">1 - 检出</p>
</div>
<p><strong>3.4 提交代码</strong><br>
在目录中新建index.php文件,内容如下:</p><pre class="brush:bash;toolbar:false"><?php
echo 'svn - ttlsa.com';
?></pre><p>然后提交到svn上</p>
<div id="attachment_4201" class="wp-caption alignnone"><img src="https://zhuji.jb51.net/uploads/img/20230517/639f824a73aee0b2e3d60f3bc13ccd4d.jpg" width="618" height="484"><p class="wp-caption-text">2 - 提交</p>
</div>
<p> </p>
<p><strong>4. 实时测试php</strong><br>
访问http://test.ttlsa.com/index.php,如下图</p>
<div id="attachment_4202" class="wp-caption alignnone"><img src="https://zhuji.jb51.net/uploads/img/20230517/2f01a4226dffbafb2c8d62d7f5037239.jpg" width="518" height="179"><p class="wp-caption-text">3 - 测试</p>
</div>
<p> </p>
<p><strong>5. 总结</strong><br>
思路很简单,不仅仅php可以这么做,其他程序也可以使用钩子来实现。一般情况下,推荐使用svn+钩子取代ftp传代码的方式,这样备份的问题解决了,恢复版本也相对方便。</p>
<p>站点:运维生存时间(转载请注明出处)<br>
网址:http://www.ttlsa.com/svn/svn-post-commit-php-realtime-test/</p>
頁:
[1]