PostgreSQL
JetBrains
TeamCity

JetBrains CI サーバー TeamCity 9.1 を構築する

More than 3 years have passed since last update.

まず、TeamCity について。

そもそもご存じない方が多いように思うので、ヒトコトで紹介すると、IntelliJ IDEA の開発で有名な JetBrains 製の CI サーバーです。

オンプレミスの CI サーバーとしては、世の中的に Jenkins の方が有名ではありますが、プロジェクトの階層化に対応しており、ビルド構成も非常に見通しやすく、個人的に非常に気に入っています。

JetBrains 製ということでライセンス形態が気になるところですが、20のビルド構成、3つのビルドエージェントまでは、すべての機能が無償で利用することが可能です。

複数のプロダクトを1つのサーバーで横断的に管理したいなどでなければ、無償の範囲で十分に運用できそうです。

さっそく構築してみます。


環境


  • ConoHa by GMO メモリ 1GB プラン

  • Ubuntu 14.04 LTS

  • Java 8

  • PostgreSQL 9.3

  • TeamCity 9.1.6

$ cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
$ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
$ psql --version
psql (PostgreSQL) 9.3.10


ダウンロード - TeamCity

JetBrains の公式ページより。

https://www.jetbrains.com/teamcity/download/#section=linux-version

インスタンスへ直接ダウンロードする場合は、ダウンロード ページにダイレクト リンクがあるので、これを利用する。

展開、配置、起動までおこなっておく。

$ cd ~

$ wget https://download.jetbrains.com/teamcity/TeamCity-9.1.6.tar.gz
$ tar -zxvf TeamCity-9.1.6.tar.gz

$ sudo mkdir -p /opt/lib/
$ sudo mv TeamCity /opt/lib/TeamCity-9.1.6
$ sudo ln -s /opt/lib/TeamCity-9.1.6 /opt/lib/teamcity

$ sudo /opt/lib/teamcity/bin/runAll.sh start

この時点で、TeamCity は起動している。

http://{server.address}:8111/ へアクセスすることで、起動は確認できる。

ウィザードを進めることで、セットアップはできるがまだしない。


セットアップ - データベース

手軽に利用を開始したければ、内部データベースとして HSQLDB も利用することができるので、データベースのセットアップはスキップしてもいい。

ただし、サーバーの負荷状況次第で、万が一 TeamCity が不調に陥ったりして不正に停止してしまったりすると、内部データベースが巻き込まれ、構成情報が破損する場合があるため、可能な限りデータベースは別で構築しておくのがオススメ。

また、データベースのバックアップやスケールなど、可用性を高めたい場合も、別途データベースをセットアップしておく必要がある。

今回は、PostgreSQL をセットアップする。

apt-get でインストールして、TeamCity 用のユーザー、データベースを作成する。

$ sudo apt-get install postgresql

$ sudo apt-get install postgresql-client

$ sudo su postgres
[sudo] password for :

postgres@..$ createuser -P -d -l teamcity
Enter password for new role:
Enter it again:

postgres@..$ psql
psql (9.3.10)
Type "help" for help.

postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
teamcity | Create DB | {}

postgres=# CREATE DATABASE teamcity;
CREATE DATABASE

postgres=# ALTER USER teamcity SET search_path to teamcity;
ALTER ROLE

postgres=# \connect teamcity;
You are now connected to database "teamcity" as user "postgres".

teamcity=# CREATE SCHEMA teamcity AUTHORIZATION teamcity;
CREATE SCHEMA

teamcity=# \q
postgres@..$ exit
exit

$ cd /


セットアップ - TeamCity

ここまでで、TeamCity を利用するための準備は完了。

今度こそ、http://{server.address}:8111/ へアクセスして、セットアップを進める。

セットアップ ウィザードでは、はじめにデータ ディレクトリのロケーション指定を求められる。

今回は、/var/opt/teamcity にディレクトリを作成して指定する。

$ sudo mkdir -p /var/opt/teamcity

Property
Value

Data Directory location
/var/opt/teamcity/.BuildServer

スクリーンショット 2016-02-07 1.12.24.png

ウィザードを進めて、先ほど おこなったデータベースのセットアップのとおり、接続情報を入力する。

Property
Value

Database host[:port]
localhost:5432

Database name
teamcity

User name
teamcity

Password
****

スクリーンショット 2016-02-06 23.06.14.png

ここで、JDBC ドライバーの配置が必要になるため、ダウンロードと配置をおこなう。

PostgreSQL の場合はこちらから。

https://jdbc.postgresql.org/download.html#current

$ cd /var/opt/teamcity/.BuildServer/lib/jdbc

$ sudo wget https://jdbc.postgresql.org/download/postgresql-9.4.1207.jre7.jar

ダウンロードしたら、セットアップウィザード上の [Reflesh JDBC drivers] ボタンをクリックして、ダウンロードしたドライバーを認識させる。

スクリーンショット 2016-02-06 23.08.41.png

ドライバーが認識されたら、引き続きウィザードを進めていく。

次に、License Agreement の確認を求められるので、[Accept license agreement] をチェックして [Continue >>] する。

スクリーンショット 2016-02-06 23.11.10.png

以上でセットアップは完了する。

初回利用時に、管理者アカウントの作成が求められるので、これを作成してログインすることで、利用できるようになる。

スクリーンショット 2016-02-06 23.11.52.png

ログイン後。

画面左上の [Projects] から、プロジェクトの作成がおこなえる。

スクリーンショット 2016-02-06 23.13.45.png

Github などからプロジェクトの URL を持ってくれば、[+Create project from URL] で、簡単にプロジェクトの作成がおこなえる。

スクリーンショット 2016-02-06 23.14.16.png