在對 CI/CD 有基本瞭解後,接下來就要把我們的主角 TeamCity 安裝起來。TeamCity 提供 3 種安裝方式,在接下的幾天會逐一介紹,讀者可以依據自己的條件與需求選擇一個最適合的方式。首先介紹的第一種方式就是直接下載官方軟體包,搭配 JDK 直接啟動。
由於整個 TeamCity 軟體都是用 Java/Kotlin 打造的,官方也將整個系統封裝成 Jar 檔,所以在安裝 TeamCity 前要先有 JVM 運行環境。以 TeamCity 來說,其綁定的 JDK 版本是 8,請務必使用正確的 JDK 版本才不會發生預期外的錯誤。以下分兩個主流作業系統說明如何建立 JDK 8 的執行環境:
在 JVM 上開發程式時,通常你不會只用一套 JDK 版本,加上我想減少記憶負擔,想用同一種方式在 macOS 及 Linux 上建立 JDK 8 的執行環境,所以我強烈推薦大家使用 SDKMAN 。
SDKMAN 是一個 SDK 管理器,可以協助我們安裝幾乎所有 JVM 開發者會需要用到的 SDK,像是 JDK、Kotlin Compiler、Gradle…等,若有更新時還可以一鍵下載,需要安裝多個不同版本的 JDK 也沒問題,可以透過指令去切換環境裡的 JDK,甚至還可以幫我們更新 PATH 設定,非常方便!
安裝 SDKMAN 很簡單,只要將官網上的指令貼在終端機並執行即可:
$ curl -s "https://get.sdkman.io" | bash
SDKMAN 是用 Bash Script 實作,沒有相依其他工具,安裝起來完全無痛。安裝好後重新載入就可以用 $ sdk version
指令來驗證安裝是否成功。
緊接著安裝 JDK,首先要取得 JDK 8 的 Identifier,先用 list
指令查詢:
$ sdk list java # 取得所有 JDK 清單
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 8.0.292.j9 | adpt | | 8.0.292.j9-adpt
| | 8.0.292.hs | adpt | | 8.0.292.hs-adpt
| | 8.0.242.hs | adpt | | 8.0.242.hs-adpt
Corretto | | 8.302.08.1 | amzn | | 8.302.08.1-amzn
Zulu | | 8.0.302 | zulu | | 8.0.302-zulu
| | 8.0.302.fx | zulu | | 8.0.302.fx-zulu
# 為節省版面部份輸出已被精簡
從上面的畫面可以看到,JDK 8 也有很多版本,每一個版本對應到的 Identifier 都不一樣。假設我想安裝 AdoptOpenJDK
的 8.0.292.hs
這個版本,對應到的 Identifier 就是 8.0.292.hs-adpt
。把這個字串記下來,再用 install
指令安裝:
$ sdk install java 8.0.292.hs-adpt
SDKMAN 就會到網路上把 AdoptOpenJDK 8.0.292.hs 抓下來安裝,也會在安裝結束前詢問要不要將這個版本的 JDK 做為系統預設 Shell 環境的 JDK。假如你安裝的這台主機就只跑 TeamCity 的話就直接按 Y 設成預設吧!假如不是的話,之後在啟動 TeamCity 之前,記得要先將環境切成 JDK 8。
$ sdk use java 8.0.292.hs-adpt
假如是 Windows 作業系統的話,我會推薦使用 Scoop 這個套件管理系統。你可以把 Scoop 想成是 Windows 版本 apt,許多 CLI 套件都可以用它來安裝。安裝 Scoop 的方式很簡單,直接把官網的幾行指令貼在 PowerShell 裡即可:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# 假如有 Policy 警告,則再補這一行
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
接著要讓 Scoop 取得所有 JDK 清單(在 Scoop 叫 Bucket),在 PowerShell 裡輸入:
$ scoop bucket add java
至於要安裝的 JDK 版本名稱可以參考 Bucket 的 Repository ,以我們的例子來說,我想安裝 adopt8-upstream
這個版本,就在 PowerShell 裡輸入:
$ scoop install adopt8-upstream
假如有安裝多個版本,別忘了在啟動 TeamCity 前切換到 JDK 8 喔!
$ scoop reset adopt8-upstream
環境準備好後,接著請到 TeamCity 官網下載頁 下載軟體包,版本請統一選擇 Linux (.tar.gz) 即可。
下載後,請將這個 .tar.gz
的壓縮檔解開,並將資料夾放到你想要的位置(比方說在 Unix-like 作業系統上的 /opt
底下、在 Windows 作業系統上的 C:\Apps
)。完成後開啟終端機,將工作目錄切換到 TeamCity 資料夾,進入底下 bin
資料夾後執行 runAll
腳本。
# Unix-like 執行 Bash 腳本
$ bash .../bin/runAll.sh start
# Windows 執行 bat 腳本
$ .\...\bin\runAll.bat start
runAll
腳本是 TeamCity 預先準備好單一啟動指令,所有啟動的複雜步驟都已經先準備好了,若看到終端機裡回應啟動完成就代表 TeamCity 已經準備好第一次的啟動設定,我們後續會再詳細說明首次啟動設定要做的動作。若要將 TeamCity 關閉,則將剛剛的指令從 start
換成 stop
即可。
本篇文章使用的安裝方式,比較適合以下幾種情境: