TeamCity提供一系列特性可以讓團隊快速實作持續內建:IDE工具內建、各種消息通知、各種報表、項目的管理、分布式的編譯等等,所有的這些,都是讓你的團隊快速享有持續內建帶來的效率提升、高品質的軟體保障。 使用 TeamCity,你能夠在幾分鐘之内為你的項目配置一個建構伺服器,它内建了持續單元測試,代碼品質分析和早期的建構問題分析報告,你甚至可以在IDE進行。 TeamCity 提供平滑的學習曲線,你可以逐漸的學習經它的進階特性和功能,你很快就能加強你釋出管理實踐。 本次釋出,在可用性作了大量的改進,更新的IDE 插件支援 CVS和SVN,另外還包括一些之前版本不具備的企業級的特性。

安裝
用Docker Image 安裝 Server端:
docker run -it --name teamcity-server-instance \
-v /opt/teamcity/data:/data/teamcity_server/datadir \
-v /opt/teamcity/logs:/opt/teamcity/logs \
-p 8111:8111 \
jetbrains/teamcity-server
出現此提示時表示初步安裝成功,接下來進入背景進行配置
Startup confirmation is required. Open TeamCity web page in the browser. Server is running at http://localhost:8111
資料庫選擇:
支援 Mysql, Oracle, PostgreSQL,HSQLDB,這裡選用的是預設資料.
初次進入會提示建立項目,後續需要主動建立項目.這裡提供了簡便的使用者密碼方式授權,同時也提供了 Oauth 方式
根據提示選擇 Proceed,此步驟會根據工程目錄自動選擇可能的Build Steps
首次接觸誤以為 直接run可以了。會提示沒有可用的 agent.
安裝 Agent,每一台要釋出的機器都要安裝 agent,有沒有批量安裝方法呢?用 K8S 環境下如何部署?:
docker run -p 9090:9090 -it -e SERVER_URL="http://120.27.8.120:8111" \
-v /data/teamcity_agent/conf:/data/teamcity_agent/conf \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/buildagent/work:/opt/buildagent/work \
-v /opt/buildagent/temp:/opt/buildagent/temp \
-v /opt/buildagent/tools:/opt/buildagent/tools \
-v /opt/buildagent/plugins:/opt/buildagent/plugins \
-v /opt/buildagent/system:/opt/buildagent/system \
jetbrains/teamcity-agent
注意::
Image 安裝要注意制定本地目錄,否則 Agent 雖然能 connected但是 build的時候找不到。為了省去不必要的麻煩端口号都有點 9090。
angent安裝出現 authorization token 時,複制 token回到 web 管理界面進行 agent 授權。
授權完會進入自動build
到目前為止 整個 TeamCity 就安裝完了:
上面用到了 Token 授權 Server 通路 Agent,在安裝 Server 時也曾出現過用 Token 代替使用者和密碼登陸,後續再要求建立管理者賬号。
配置自動化釋出
設定 Build Steps ,此例子總共6 步:
build, login, push, stop rm, delete image, run.
Login主要是為了登陸阿裡的容器倉庫,實際上在非容器化部署的 agent 中隻執行一次即可,主機會記住登陸資訊。
Buid:
建立 Build,比較簡單 Runner Type 選擇 Docker 即可。 給 Step 命名為 Build(随便命名可讀即可),Docker command 選擇 build,Path to file預設 TeamCity 會讀取根目錄下的Dockerfile,也可以指定其他目錄的 Dockerfile。Image name:tag 根基實際情況指定。這裡是用的阿裡的registry.cn-beijing.aliyuncs.com/langzhe/ssj
Login:
授權允許通路倉庫,Docker command 中沒有 login,這裡選擇 other,在 Command name 中輸入 login.
在 Additional arguments 中資料使用者名密碼和位址。
Push:
把鏡像推到阿裡鏡像倉庫,這個配置比較簡單
stop rm: 測試的時候發現經常 Image 不更新,這裡在 run 時,先把容器停掉并删除,同時把 Image 删除,run 的時候用的 latest.需要在主機上執行指令Runner Type要選擇 CommandLine ,Run:選擇 Custom script并輸入以下腳本:
docker stop `docker images |grep ssj |awk '{print $3}'`
删除 Image,與第四步類似,腳本如下:
docker rmi `docker images |grep ssj |awk '{print $3}'`
第六步 run,與第二步類似:
DockerComand選擇 Other,在 Command name 中輸入 run.
Additional arguments for the command:輸入-p 80:80 -d registry.cn-beijing.aliyuncs.com/langzhe/ssj
然後,執行 Run,這個過程需要反複調試。可以禁用一些 Steps.
最後一定要設定 Trigers