Hudson+Continuous Integration筆記-3
閱讀本篇文章, 請先閱讀
Table of Contents
Hudson的安裝
Hudson要安裝在何種作業系統??
基本上這與專案團隊使用的開發工具或是程式開發語言有密切關係, 例如軟體專案是開發在ARM平台執行的嵌入式軟體, 那麽CI/Build Server勢必也要能執行ARM平台開發工具, CI/Build Server也可以
和開發工具安裝在不同機器上, 但是這個設定有點複雜, 筆者不建議這麽做, 目前的硬體平台並不貴,針對不同的開發工具而建置CI/Build Server, 可以省去許多複雜的設定. 所以CI/Build Server要安裝在何種作業系統, 要以軟體專案的開發工具能安裝的作業系統為優先考量.
將Hudson安裝在Mac OS X Server
以下的安裝都是以Mac OS X Server為主, Hudson是跨平台的, 在Windows/Linux上安裝, 原理都一樣,而公司內最後選擇將Hudson安裝在Mac OS X server上, 主要有以下的考量
- 公司內部開發專案主力開發程式語言為Java與Object C , 若以Object C專案而言, 開發工具只能安裝在Mac OS上, 若公司內部專案僅有Java, Hudson在Windows/Linux平台上安裝,也都有很好的支援.
- Mac OS X server支援Time capsule自動備份功能, 可以將server的設定作每天備份. 災難復原工作可以省下許多時間. (註: 自動備份功能, Linux/Windows應該也有對應的解決方案 ).
安裝Tomcat Server
- 到http://tomcat.apache.org下載tomcat 6.x版, 例如apache-tomcat-6.0.24.zip
- 將apache-tomcat-6.0.24.zip解壓縮到$$your_profile$$/Library, $$your_profile$$為你在Mac OS X中的使用者家目錄, 例如/Users/admin
- 執行 chmod a+x $$your_profile$$/Library/apache-tomcat-6.0.24/*.sh
- 設定管理者的帳號與密碼: 編輯 $$your_profile$$/Library/apache-tomcat-6.0.24/conf/tomcat-users.xml , 加入
設定好後執行$your_profile$$/Library/apache-tomcat-6.0.24/bin/startup.sh , 再使用browser連到http://localhost:8080, 如果可以看到以下畫面, Tomcat Server的安裝算是初步完成<role rolename="manager"/><user username="tomcat" password="xxxx" roles="manager"/>
安裝Hudson
- 到http://hudson-ci.org/網站下載hudson.war
- 在$$your_profile$$目錄下建立一個目錄叫hudson, 將hudson.war放到這個目錄, 例如/Users/admin/hudson/hudson.war
- 到$$your_profile$$/Library/apache-tomcat-6.0.24/conf/Catalina/localhost/目錄下新增一個檔案名為hudson.xml, 檔案內容如下
請注意/Users/admin請改成你$$your_profile$$位置<Context path="/hudson" docBase="/Users/admin/hudson/hudson.war" debug="0"></Context>
4. 到$$your_profile$$/Library/apache-tomcat-6.0.24/bin/下新增一個檔案setenv.sh
7. 使用browser連到http://youripaddress:8080/hudson/, 看到以下畫面, 表示Hudson安裝成功
5. chmod a+x $$your_profile$$/Library/apache-tomcat-6.0.24/bin/setenv.sh, setenv.sh的內容如下
export CATALINA_OPTS="-DHUDSON_HOME=/Users/admin/hudson -Xmx512m"6. 重新啟動Tomcat Server 執行$SS$your_profile$$/Library/apache-tomcat-6.0.24/bin/shutdown.sh , 然後再執行startup.sh
7. 使用browser連到http://youripaddress:8080/hudson/, 看到以下畫面, 表示Hudson安裝成功
使用Launchd來啟動Tomcat Server
設定Launchd主要讓Mac OS X server啟動時, 也順便啟動Tomcat Server, Launchd有點類似Windows的NT Service , 在還沒設定Launchd前, 筆者剛開始設定Hudson build的時候遇到一個奇怪的問題, 使用Hudson去執行ANT script時跑出了以下的error message
[java] could not lookup DNS configuration info service: (ipc/send) invalid destination
經過使用Google search engine明察暗訪後, 發現這個error message與Mac OS X的Launchd有關, 將Tomcat的啟動方式改由Launchd啟動後, 這個問題就消失了
- 到$$your_profile$$/Library/apache-tomcat-6.0.24/bin/目錄下新增一個檔案launchd_wrapper.sh, 內容如下
#!/bin/bash
function shutdown()
{
date
echo "Shutting down Tomcat"
$CATALINA_HOME/bin/catalina.sh stop
}
date
echo "Starting Tomcat Server"
export CATALINA_PID=/tmp/$$
# Uncomment to increase Tomcat's maximum heap allocation
# export JAVA_OPTS=-Xmx512M $JAVA_OPTS
export JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m"
export CATALINA_OPTS="-DHUDSON_HOME=/Users/admin/hudson"
. $CATALINA_HOME/bin/catalina.sh start
# Allow any signal which would kill a process to stop Tomcat
trap shutdown HUP INT QUIT ABRT KILL ALRM TERM TSTP請注意, /Users/admin, 請改成$$your_profile$$位置, launchd_wrapper.sh要使用chmod a+x launchd_wrapper.sh使其具有執行權限
2. 加入tomcat for Launchd屬性檔案, 到/Library/LaunchDaemons這個目錄底下使用 sudo touch tomcat.plist 新增tomcat.plist, 這個指令會要求輸入管理者密碼
3. 使用sudo vi tomcat.plist , 編輯tomcat.plist, 檔案內容如下, 要注意的是/Users/admin為筆者的安裝目錄, 請改成你的$$your_profile$$目錄
4. 手動測試Launchd , 啟動指令為 sudo launchctl load -w /Library/LauhchDaemons/tomcat.plist, 停止指令為sudo launchctl unload -w /Library/LaunchDaemons/tomcat.plist<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>Disabled</key><false/><key>EnvironmentVariables</key><dict><key>CATALINA_HOME</key><string>/Users/admin/Library/apache-tomcat-6.0.24</string><key>JAVA_HOME</key><string>/Library/Java/Home</string></dict><key>Label</key><string>com.apache.tomcat</string><key>OnDemand</key><false/><key>ProgramArguments</key><array><string>/Users/admin/Library/apache-tomcat-6.0.24/bin/launchd_wrapper.sh</string></array><key>RunAtLoad</key><true/><key>ServiceDescription</key><string>Tomcat</string><key>StandardErrorPath</key><string>/Users/admin/apache-tomcat-6.0.24/logs/launchd.stderr</string><key>StandardOutPath</key><string>/Users/admin/apache-tomcat-6.0.24/logs/launchd.stdout</string><key>UserName</key><string>root</string></dict></plist>
測試OK後, 下次重新開機Tomcat Server就會自己執行了.
留言