Hudson+Continuous Integration筆記-3

閱讀本篇文章, 請先閱讀 

  1. Hudson+Continue Integration筆記-1
  2. Hudson+Continue Integration筆記-2

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

  1. 到http://tomcat.apache.org下載tomcat 6.x版, 例如apache-tomcat-6.0.24.zip
  2. 將apache-tomcat-6.0.24.zip解壓縮到$$your_profile$$/Library, $$your_profile$$為你在Mac OS X中的使用者家目錄, 例如/Users/admin 
  3. 執行 chmod a+x $$your_profile$$/Library/apache-tomcat-6.0.24/*.sh
  4. 設定管理者的帳號與密碼: 編輯 $$your_profile$$/Library/apache-tomcat-6.0.24/conf/tomcat-users.xml , 加入
<role rolename="manager"/>
<user username="tomcat" password="xxxx" roles="manager"/>

    設定好後執行$your_profile$$/Library/apache-tomcat-6.0.24/bin/startup.sh , 再使用browser連到http://localhost:8080, 如果可以看到以下畫面, Tomcat Server的安裝算是初步完成



安裝Hudson 

  1. 到http://hudson-ci.org/網站下載hudson.war 
  2. 在$$your_profile$$目錄下建立一個目錄叫hudson, 將hudson.war放到這個目錄, 例如/Users/admin/hudson/hudson.war
  3. 到$$your_profile$$/Library/apache-tomcat-6.0.24/conf/Catalina/localhost/目錄下新增一個檔案名為hudson.xml, 檔案內容如下
<Context path="/hudson" docBase="/Users/admin/hudson/hudson.war" debug="0">
</Context>
   請注意/Users/admin請改成你$$your_profile$$位置
   4. 到$$your_profile$$/Library/apache-tomcat-6.0.24/bin/下新增一個檔案setenv.sh
   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啟動後, 這個問題就消失了

  1. 到$$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$$目錄

<?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>
   4.  手動測試Launchd , 啟動指令為 sudo launchctl load -w /Library/LauhchDaemons/tomcat.plist, 停止指令為sudo launchctl unload -w /Library/LaunchDaemons/tomcat.plist

測試OK後, 下次重新開機Tomcat Server就會自己執行了. 

留言

這個網誌中的熱門文章

我的Kindle 2支援中文顯示了

[ ChatGPT 與你分享好書 ] 超級預測

免費的最貴?