まず、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 |
ウィザードを進めて、先ほど おこなったデータベースのセットアップのとおり、接続情報を入力する。
Property | Value |
---|---|
Database host[:port] | localhost:5432 |
Database name | teamcity |
User name | teamcity |
Password | **** |
ここで、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] ボタンをクリックして、ダウンロードしたドライバーを認識させる。
ドライバーが認識されたら、引き続きウィザードを進めていく。
次に、License Agreement の確認を求められるので、[Accept license agreement] をチェックして [Continue >>] する。
以上でセットアップは完了する。
初回利用時に、管理者アカウントの作成が求められるので、これを作成してログインすることで、利用できるようになる。
ログイン後。
画面左上の [Projects] から、プロジェクトの作成がおこなえる。
Github などからプロジェクトの URL を持ってくれば、[+Create project from URL] で、簡単にプロジェクトの作成がおこなえる。