SVN本地開發、測試環境版本控制-自動發佈生產環境

發佈系統 javascript

因爲網站的結構是基於lnmp的,因此咱們主要的代碼都是php代碼,以前在大網站的時候,通常會有比較嚴格的流程和比較嚴格的打包發佈機制,好比Yahoo的 yinst package, 可是對於初創團隊來講有些重了,這裏咱們直接使用svn進行代碼的管理和發佈。 php

雖然系統環境不復雜,可是咱們仍是分爲開發環境,測試環境(beta),和生產環境(線上),開發環境咱們在本身的機器上搭建,個人是 Ubuntu的系統,everfly是MacOS的系統,測試環境在和svn服務同一臺服務器上,咱們使用svnseve的post-commit 功能實現了一旦咱們提交了代碼,服務器會自動將代碼部署到beta環境的web服務器上, 在生產環境則是直接使用svn export進行部署,整個流程仍是很是簡單的。 html

注意,有的時候咱們在生產環境和開發環境的時候須要執行不一樣的邏輯,好比針對html內部引用的javascript代碼,爲了節省流量(固然 還有一個緣由是代碼寫的太醜了,不想讓你們看到笑話),在生產環境上,咱們使用了jsmin進行壓縮,可是在本機進行開發的時候,爲了調試前端代碼方便, 不能對javascript代碼進行壓縮,因此咱們經過設置環境變量,而後在代碼中檢測環境變量的方式解決了這個問題,因爲環境變量是設置在web server或者php-fpm的配置中的,因此線上和開發環境能夠保持同一份代碼,在代碼中判斷當前的系統執行不一樣的邏輯便可。 前端

SVN自動發佈系統實現 java

實現過程,是使用了svn的一個hook的功能,調用了 post-commit 來作一些當提交完成後的操做。 

一、在版本庫的hooks目錄下面,有一些基於事件觸發的執行腳本,好比post-commit, 去掉後綴.tmpl 
二、編輯svn代碼庫服務器上文件: svn/test/hooks/post-commit  web

#!/bin/sh 
REPOS="$1" 
REV="$2" 
export PATH="/usr/local/svn/bin:$PATH"  #因爲代碼是apache的進程用戶www運行,因此須要設置環境變量 
export LC_CTYPE=en_US.UTF-8             #防止提交的文件名存在非字母字符。   
if (svnlook log -r $REV /home/http/repository/svn/test | grep "auto_deploy" )  #當用戶提交時註釋中寫上"auto_deploy"的時候,就自動部署到apache目錄,不然不部署。 
then 
  echo "`date` 'auto depoly command received" >> /tmp/test_svnautocommit.txt   #這一行僅做調試使用 
  svn export "http://192.168.16.48/repo/svn/test/trunk/test_website"  /home/http/html/test_website  --force 
fi

 三、 在客戶端測試,而且要在comment中加入 auto_deploy,不然不會觸發自動部署的操做。  shell

參考文章 apache

1)http://www.chinaz.com/start/2013/0816/313608.shtml 服務器

2)http://lullabyus.iteye.com/blog/1329859
svn

相關文章
相關標籤/搜索