使用 Docker 簡化 TeamCity 安裝

jopen 10年前發布 | 20K 次閱讀 Docker 虛擬化

JetBrains出品的TeamCity是一款強大易用的持續集成(continuous integration)系統。它是一款商業產品,但對于小型項目和FOSS應用程序(免費和開源軟件)有一項特殊的零費用許可證。盡管TeamCity的安裝已經相對容易了,但通過使用Docker,安裝過程會更簡便。

像許多其它的最新式的持續集成系統一樣,TeamCity采用了構建服務器和構建代理的概念。服務器負責管理和構建配置。實際的構建過程(編譯、打包、部署等等)是由一個或多個代理執行的。通過個種方式,很容易實現代理的自動設置,整個設置過程中只需要很少的手動配置。

TeamCity服務器只需要Java。安裝過程很簡單。通過Docker,安裝會更簡單。為此,我準備了一個專門的容器 ariya/centos6-teamcity-server。此容器的基本系統是ariya/centos6-oracle-jre7,一個運行了Oracle官方Java 7的CentOS 6.5系統(更準確地說,到發稿為止是JRE 1.7.0_65-b17)。

假定你有一個已經安裝了Docker的系統(VPS例如:Linode或DigitalOcean,Amazon EC2實例,一個虛擬機或一部真正的計算機),安裝TeamCity服務器就簡單到只需要運行下列命令。注意,如果你在使用OS X,如果你僅想試驗本安裝請使用boot2docker(參看我之前發表的博客 Docker on OS X 了解更多細節)。

docker run -dt -name teamcity_server -p 8111:8111 ariya/centos6-teamcity-server

幾分鐘后,打開機器地址的8111端口,開始TeamCity服務器的Web配置(更多細節請閱讀官方TeamCity文檔),如下圖所示。如果你的系統使用了iptalbes,確保8111端口允許連接。注意,TeamCity數據將存儲在特殊的位置/data/teamcity這是一個標準的Docker卷,應當允許簡單掛載、備份和未來升級。

 使用 Docker 簡化 TeamCity 安裝

服務器配置完成后,就應為此服務器指定構建代理(不然,什么也構建不了)。通過運行容器ariya/centos-teamcity-agent,我們再次用Docker產生一個構建代理。為了讓代理工作,我們需要為它指定服務器。運行下列命令:

docker run -e TEAMCITY_SERVER=http://buildserver:8111 \
    -dt -p 9090:9090 ariya/centos6-teamcity-agent

如果你在運行著服務器容器的同一臺主機上運行它,你需要將它們連接(link)起來。

docker run -e TEAMCITY_SERVER=http://teamcity_server:8111 \
    --link teamcity_server:teamcity_server -dt ariya/centos6-teamcity-agent

環境變量中的TEAMCITY_SERVER是必須的,需要指向你上一步啟動的TeamCity服務器的本地實例。一旦你運行了這個容器,它會連接到所指定的服務器,下載代理ZIP文件并安裝。第一次連接服務器后,構建代理通常需要花幾分鐘時間更新。如果一切工作正常,在你的TeamCity服務器Web頁面的Agent標簽項中,你將看到一個新的代理。授權代理,現在它準備接受任何構建工作了!

如果啟動代理出現問題,(docker ps)沒有顯示運行的容器,重新運行它,但這次使用 -it選項(interactive terminal交互終端)代替 -dt。這將轉存一些額外的調試信息,有助于解決問題。

注意,此代理容器也是基于帶Java 7的CentOS 6。通常這還不夠,你可能需要其它的依賴項(不同的SDK,編譯器,庫等等)。理想情況下,那些依賴項能自動解決,或基于不同系統容器,或通過正確的自動設置。更多細節,參考我之前發表的博客 Build Agent: Template vs Provisioning

還有借口不用持續集成?我可不這么想!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!