第三天:以软件包安装 TeamCity

在对 CI/CD 有基本了解後,接下来就要把我们的主角 TeamCity 安装起来。TeamCity 提供 3 种安装方式,在接下的几天会逐一介绍,读者可以依据自己的条件与需求选择一个最适合的方式。首先介绍的第一种方式就是直接下载官方软件包,搭配 JDK 直接启动。

先建立一个 JDK 8 执行环境

由於整个 TeamCity 软件都是用 Java/Kotlin 打造的,官方也将整个系统封装成 Jar 档,所以在安装 TeamCity 前要先有 JVM 运行环境。以 TeamCity 来说,其绑定的 JDK 版本是 8,请务必使用正确的 JDK 版本才不会发生预期外的错误。以下分两个主流作业系统说明如何建立 JDK 8 的执行环境:

在 Unix-like 作业系统上安装 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 都不一样。假设我想安装 AdoptOpenJDK8.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 作业系统上安装 JDK 8

假如是 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

环境准备好後,接着请到 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 即可。

适用情境

本篇文章使用的安装方式,比较适合以下几种情境:

  1. 熟悉 JVM,对手动安装 JDK 不排斥
  2. 拥有整台主机的控制权,需要客制化设定时有足够权限
  3. 本机测试用,没有要对外上线服务

参考资料


<<:  Day 8. Hashicorp Nomad: Application Logs

>>:  Day 8 | 比较漂亮的清单-客制化Adapter

[Day3] Cloud Architectures

讲到云端相关的议题,一定会看到的就是 IaaS 、 PaaS 与 SaaS。这几个名词可以算是云端的...

[Day 52] 留言板後台及前台(八) - 加入图片上传

在正文之前要说一下, 其实我觉得在留言板用文字编辑器不是个好主意, 反而应该放在心情随笔的地方, (...

从 IT 技术面细说 Search Console 的 27 组数字 KPI (1) 前言

在 5 年前,不只在开会时会这样要求,也常常说一个概念:SEO 是一种 Multi-Stack 的工...

离职倒数11天:「怎样算好PM?」

这几天到处问别人「怎样算好PM?」 我的前同事告诉我公司有标准答案: MS leadership p...

【领域展开 20 式】 Menu 修炼失败纪录手册

更动 Menu 大作战 暨【领域展开 13 式】 有了骨头与皮肤,再搞清楚主要肌群 Menu 层级与...