天天看點

TeamCity 之旅1

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

TeamCity 之旅1

安裝

用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 方式

TeamCity 之旅1
TeamCity 之旅1

根據提示選擇 Proceed,此步驟會根據工程目錄自動選擇可能的Build Steps

TeamCity 之旅1

首次接觸誤以為 直接run可以了。會提示沒有可用的 agent.

TeamCity 之旅1

安裝 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。
           
TeamCity 之旅1

angent安裝出現 authorization token 時,複制 token回到 web 管理界面進行 agent 授權。

TeamCity 之旅1
TeamCity 之旅1

授權完會進入自動build

TeamCity 之旅1
TeamCity 之旅1

到目前為止 整個 TeamCity 就安裝完了:

上面用到了 Token 授權 Server 通路 Agent,在安裝 Server 時也曾出現過用 Token 代替使用者和密碼登陸,後續再要求建立管理者賬号。

配置自動化釋出

設定 Build Steps ,此例子總共6 步:

build, login, push, stop rm, delete image, run.

Login主要是為了登陸阿裡的容器倉庫,實際上在非容器化部署的 agent 中隻執行一次即可,主機會記住登陸資訊。

TeamCity 之旅1

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
           
TeamCity 之旅1

Login:

授權允許通路倉庫,Docker command 中沒有 login,這裡選擇 other,在 Command name 中輸入 login.
在 Additional arguments 中資料使用者名密碼和位址。
           
TeamCity 之旅1

Push:

把鏡像推到阿裡鏡像倉庫,這個配置比較簡單
           
TeamCity 之旅1

stop rm: 測試的時候發現經常 Image 不更新,這裡在 run 時,先把容器停掉并删除,同時把 Image 删除,run 的時候用的 latest.需要在主機上執行指令Runner Type要選擇 CommandLine ,Run:選擇 Custom script并輸入以下腳本:

docker stop `docker images |grep ssj |awk '{print $3}'`
           
TeamCity 之旅1

删除 Image,與第四步類似,腳本如下:

docker rmi `docker images |grep ssj |awk '{print $3}'`
           
TeamCity 之旅1

第六步 run,與第二步類似:

DockerComand選擇 Other,在 Command name 中輸入 run.           

Additional arguments for the command:輸入-p 80:80 -d registry.cn-beijing.aliyuncs.com/langzhe/ssj

TeamCity 之旅1

然後,執行 Run,這個過程需要反複調試。可以禁用一些 Steps.

最後一定要設定 Trigers

TeamCity 之旅1
TeamCity 之旅1