持續集成代碼管理平臺svn版本庫控制(二)

  svn(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟件都使用svn作爲代碼版本管理軟件,而持續代碼構建平臺需要從svn上拉代碼,所以本章主要配置一下svn。
一、svn環境安裝:
# yum install subversion mysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv vim-enhanced mod_ssl -y
 
二、配置svn倉庫:
1.新建一個目錄用於存儲SVN所有文件
# mkdir /data/svn 
2.新建一個版本倉庫
# svnadmin create /data/svn/project 
3.添加用戶
要添加SVN用戶非常簡單,只需在/data/svn/project/conf/passwd文件添加一個形如“username=password”的條目就可以了。爲了測試,我添加了如下內容:
  1. [users] 
  2. luowei = luowei 
  3. zhangyp = zyp  
4.修改用戶訪問策略
# vim /data/svn/project/conf/authz記錄用戶的訪問策略,以下是參考:
  1. [groups] 
  2. admin  = luowei,zhangyp 
  3. [/] 
  4. @admin = rw 
  5. * = 
說明:以上信息表示,只有admin用戶組有根目錄的讀寫權。r表示對該目錄有讀權限,w表示對該目錄有寫權限,rw表示對該目錄有讀寫權限。最後一行的* =表示,除了上面設置了權限的用戶組之外,其他任何人都被禁止訪問本目錄。這個很重要,一定要加上! 
5.修改svnserve.conf文件,讓用戶和策略配置升效.
# vim /data/svn/project/conf/svnserve.conf內容如下: 
  1. [general] 
  2. anon-access = none 
  3. auth-access = write 
  4. password-db = /data/svn/project/conf/passwd 
  5. authz-db = /data/svn/project/conf/authz 
6.啓動服務器
# svnserve -d -r /data/svn
注意:如果修改了svn配置,需要重啓svn服務,步驟如下: 
# ps -aux|grep svnserve
# kill -9 ID號
# svnserve -d -r /data/svn
 
三、配置SVN服務器的HTTP支持
1.轉換svn的密碼
由於svn密碼是明文的,HTTP服務器不與支持,所以要轉換HTTP支持的格式。
下面通過一個perl腳步進行轉換:
  1. #!/usr/bin/perl  
  2. #  
  3. use warnings; 
  4. use strict; 
  5. #open the svn passwd file  
  6. open (FILE, "passwd") or die ("Cannot open the passwd file!!!n"); 
  7. #clear the apache passwd file  
  8. open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!n"); 
  9. close (OUT_FILE); 
  10. #begin  
  11. foreach (<FILE>) { 
  12.   if($_ =~ m/^[^#].*=/) 
  13.     { $_ =~ s/=//; 
  14.       `htpasswd -b webpasswd $_`; 
  15.     } 
執行即可。 
2.修改apache配置文件,添加支持svn的內容:
# vim /etc/httpd/conf/httpd.conf  添加以下內容:
  1. <Location /project> 
  2.   DAV svn 
  3.   SVNPath /data/svn/project/ 
  4.   AuthType Basic 
  5.   AuthName "svn for project" 
  6.   AuthUserFile /data/svn/project/conf/webpasswd 
  7.   AuthzSVNAccessFile /data/svn/project/conf/authz 
  8.   Satisfy all 
  9.   Require valid-user 
  10. </Location> 
# chown -R apache.apache /data/svn/project/ 重啓apache服務:# service  httpd restart
3.添加ssl認證:
生存密鑰文件

 

修改apache的配置文件:
# vim /etc/httpd/conf.d/ssl.conf   //修改一下兩項:
  1. SSLCertificateFile /etc/httpd/conf/httpd.pem 
  2. SSLCertificateKeyFile /etc/httpd/conf/httpd.key 
如下圖所示:

     

修改apache的主配置文件:
  1. <Directory /> 
  2.     Options FollowSymLinks 
  3.     AllowOverride None 
  4.     SSLRequireSSL  //添加這一行 
  5. </Directory>  
然後重啓apache
配置完成,接下來實現svn高級配置。
 
四、配置郵件提醒支持
1.安裝Perl模塊Module::Build
  1. # tar xvf Module-Build-0.36_11.tar.gz 
  2. # cd Module-Build-0.36_11 
  3. # perl Build.PL 
  4. # ./Build 
  5. # ./Build test 
  6. # ./Build install 
  7. # cd .. 
2.安裝Perl模塊Authen::SASL
  1. # tar xvf Authen-SASL-2.15.tar.gz 
  2. # cd Authen-SASL-2.15 
  3. # perl Makefile.PL 
  4. # make test 
  5. # make install 
  6. # cd .. 
3.安裝Perl模塊Net::SMTP_auth
  1. # tar xvf Net-SMTP_auth-0.08.tar.gz 
  2. # cd Net-SMTP_auth-0.08 
  3. # perl Makefile.PL 
  4. # make test 
  5. # make install 
  6. # cd .. 
4.安裝Perl模塊SVN::Notify
  1. # tar xvf SVN-Notify-2.80.tar.gz 
  2. # cd SVN-Notify-2.80 
  3. # perl Build.PL 
  4. # ./Build 
  5. # ./Build test 
  6. # ./Build install 
  7. # cd .. 
5.啓動郵件服務器
# service sendmail restart
Shutting down sendmail:                                    [FAILED]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ] 
6.配置自動發郵件腳本
修改post-commit腳本,以支持郵件通知功能.
# cd /data/svn/project/hooks/
# vim post-commit
內容如下:
  1. #!/bin/sh 
  2. REPOS="$1" 
  3. REV="$2" 
  4.  
  5. cat >/tmp/userlist<<EOF 
  6. [email protected] 
  7. [email protected] 
  8. EOF             //添加郵件通知的列表 
  9.  
  10. IFS=$'\n' 
  11. for LINE in `cat /tmp/userlist`;do 
  12.   /usr/bin/svnnotify --repos-path "$1" --revision "$2" --to $LINE --from [email protected]  --handler "HTML::ColorDiff" --with-diff --smtp localhost --smtp-user root --smtp-pass 5201314318 -c "UTF-8" -g zh_CN -O raw --svnlook /usr/bin/svnlook --subject-prefix '[SVN UPDATE]' 
  13. done 
測試提交更新收到郵件:

     

 
五、使用svnstat分析SVN數據:
1.svnstat是JAVA應用程序,需要先安裝JAVA環境。
下載jre,URL: http://javadl.sun.com/webapps/download/AutoDL?BundleId=39484
安裝:
  1. # rpm -ivh jre-6u20-linux-i586.rpm  
 
2.下載並解壓svnstat
  1. # wget http://downloads.sourceforge.net/project/svnstat/svnstat/Release-1.0/SvnStat-1.0.zip?use_mirror=jaist 
  2. # unzip SvnStat-1.0.zip 

3.更新代碼
# pwd
/root 
# svn co svn://192.168.158.216/project
Authentication realm: <svn://192.168.158.216:3690> a445a473-9def-448a-9560-b008c929378f
Password for 'baison': 
 
-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:
 
   <svn://192.168.158.216:3690> a445a473-9def-448a-9560-b008c929378f
 
can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.
 
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes 
4.生成svnstat數據
  1. # svn log project -v --xml --non-interactive > project.log 
  2. # cd SvnStat-1.0 
  3. # java -classpath SvnStat-all.jar de.agentlab.svnstat.SvnStat -jar SvnStat-all.jar -r /root/project.log -d /var/www/html/ 
 
5.用瀏覽器登錄即可看到許多統計出來的圖表。大致如下圖所示:
https://192.168.158.216

 
 
六、用statsvn分析SVN數據
1.下載並解壓statsvn
  1. # unzip statsvn-0.7.0.zip 
  2. # cd statsvn-0.7.0  
2.生成statsvn數據
  1. # mkdir /var/www/html/statsvn 
  2. # java -jar statsvn.jar -verbose -output-dir /var/www/html/statsvn/ /root/project.log /root/project 

3.用瀏覽器測測試效果如下圖:
https://192.168.158.216/statsvn 

 

 

    到此配置完成!   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章