持續整合解決問題
- 統一測試代碼發布
- 代碼自動化測試
- 多機自動化部署
工具選擇
- 整合工具jenkins 官網http://jenkins-ci.org/
- 構建工具phing 官網http://www.phing.info/
jenkins+php安裝(Linux環境、預設php5.3)
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.keyyum install jenkinsyum install javayum install java-1.6.0-openjdkyum install phpyum install php-develyum install php-pearyum install re2cyum install php-pecl-imagickyum install php-domyum install php-pear-phingyum install php-phpunit-PHPUnityum install php-phpunit-phpcpdpear channel-discover pear.phpmd.orgpear install --alldeps phpmd/PHP_PMD
jenkins配置和啟動
service jenkins startchkconfig jenkins on
jenkins配置
jenkins需安裝的擴充(線上web進行擴充安裝)
Role Strategy(基於角色的許可權管理)Publish Over SSH Plugin(通過ssh發布代碼)Phing(php構建工具)PMD(代碼靜態檢查)PlotJDependDRY
基於角色的許可權管理
使用Role Strategy外掛程式實現許可權管理,設定在:系統管理-->Manage and Assign Roles
通過項目首碼+正則匹配,可實現項目組的許可權管理
通過ssh發布代碼(免密碼輸入)
- 在生產機建立使用者生產機,即實際運行程式的機器,接收來自jenkins部署機通過ssh上傳的代碼
useradd jenkins_publisher
- 在發布機產生公私密金鑰發布機,即jenkins所在的機器
keygen -t rsa (全部選擇是)然後在 /root/.ssh/ 能夠找到公私密金鑰
- 將公開金鑰發送發布機
1.將 發布機上的 /root/.ssh/id_rsa.pub 傳送到 生產機的 /home/jenkins_publisher/.ssh/2.將 id_rsa.pub 改名為 authorized_keys3.將 authorized_keys 設定為 jenkins_publisher 所有
- 在生產機建立程式目錄
【首次部署】建立對應的 程式包目錄: mkdir -p /data/svn_data/chown -R jenkins_publisher /data/svn_data/(根據實際部署環境)【每次應用部署】建立對應的 web程式目錄: mkdir -p /data/www/*** (根據實際部署環境)更改目錄的所有者: chown -R jenkins_publisher /data/www/***
- jenkins 配置ssh源通過免密碼方式配置 ssh 源(將上面步驟產生 的 私密金鑰,複製進去),登陸帳號是:jenkins_publisher
發布到生產機
建立jenkins項目
build檔案模板
在程式svn根目錄添加 build.xml 檔案
####程式的目錄(根據實際情況更改) ####整合構建相關配置 ####php代碼規模分析工具配置 ####php代碼靜態檢查工具配置 ####php程式碼分析工具配置 ####php單例測試組態 ####構建參數配置 ####構建參數配置
jenkins 打包代碼配置
打包配置
配置jenkins 的ssh發布(可執行shell)
發布目錄配置
代碼發布
- 將代碼更新到svn
- 在jenkins 的該項目中,操作“立即構建”
- 檢查本次構建-控制台輸出,正常狀態如下
構建結果
發布復原
- 將svn上的代碼復原到上一穩定版本,並提交(一定是提交,不能只是將本地檔案復原)
- 重新構建代碼
- 資料復原
整理於2015/02