TeamCity インストール手順およびドキュメント参照
[最終更新] (2019/06/03 00:32:20)

概要

CI/CD ツールの一つである TeamCity のインストール手順等を記載します。

インストール

こちらからダウンロードします。.tar.gz をダウンロードした場合は以下のように起動します。

Tomcat を起動するために Java8 が必要なため、インストールします。

sudo yum install java-1.8.0-openjdk-devel
export JAVA_HOME=/usr/lib/jvm/java-1.8.0

解凍して起動します。

tar zxvf TeamCity-2017.2.4.tar.gz
cd TeamCity/
bin/runAll.sh start
jps -m

ポート番号を確認して HTTP でアクセスします。

sudo netstat -ltnp
curl http://192.168.56.10:8111/

Uploaded Image

初回起動時

DB を選択します。動作確認等を目的としている場合は外部 DB を用意する必要はなく Java の HSQLDB が利用できます。

Uploaded Image

Administrator アカウントを作成します。あるいは、teamcity-server.log に記載されているトークンを用いて super user でログインすることもできます。

[username@localhost TeamCity]$ grep 'token' logs/teamcity-server.log | tail -1
[2018-06-11 14:26:12,393]   INFO -   jetbrains.buildServer.SERVER - Super user authentication token: "6809741467420593932". To login as Super user use an empty username and this token as a password on the login page.

Uploaded Image

Uploaded Image

ドキュメントの参照

Jenkins のプロジェクト (ジョブ) と異なり、TeamCity のプロジェクトは複数の Build Configuration を持ちます。ビルドで実行するシェルコマンド等は、Build Configuration 内の Build Step に記載します。

Build Configuration 内で TeamCity 記法を用いる

ビルド設定 (Build script) 内で TeamCity と連携することができます。標準出力に特定のフォーマットで連携用の文字列を出力します。例えば、Build step で Command Line を選択している場合は以下のようにしてエラーメッセージを出力できます。

echo "-----"
echo "##teamcity[message text='Hello world' errorDetails='xxxx' status='ERROR']"
echo "-----"

Run した後に Build Log を確認すると以下のようなメッセージが確認できます。

[19:47:08]The build is removed from the queue to be prepared for the start
[19:47:08]Collecting changes in 1 VCS root
[19:47:08]Starting the build on the agent Default Agent
[19:47:08]Clearing temporary directory: /home/username/TeamCity/buildAgent/temp/buildTmp
[19:47:08]Free disk space requirement
[19:47:08]Publishing internal artifacts
[19:47:08]Using vcs information from agent file: c72794c3eb687f22.xml
[19:47:08]Checkout directory: /home/username/TeamCity/buildAgent/work/c72794c3eb687f22
[19:47:08]Updating sources: auto checkout (on server)
[19:47:09]Step 1/1: my-step-1 (Command Line)
[19:47:09][Step 1/1] Starting: /home/username/TeamCity/buildAgent/temp/agentTmp/custom_script8069562897406100923
[19:47:09][Step 1/1] in directory: /home/username/TeamCity/buildAgent/work/c72794c3eb687f22
[19:47:09][Step 1/1] -----
[19:47:09]
[Step 1/1] Hello world
xxxx
[19:47:09][Step 1/1] -----
[19:47:09][Step 1/1] Process exited with code 0
[19:47:09]Publishing internal artifacts
[19:47:09]Build finished

グラフを生成する

buildStatisticValue 用いて、グラフを生成できます。

echo "##teamcity[buildStatisticValue key='mykey1' value='123']"

Build Configuration の Statistics タブを開いて Add new chart することでグラフを追加できます。

Uploaded Image

以下はビルドを三回実行した後のグラフです。

Uploaded Image

また、ビルド結果詳細画面の Parameters タブ内の Reported statistic values から結果を確認できます。

Uploaded Image

REST API の利用

TeamCity の REST API が利用できます。基本的なドキュメントは存在しますが、詳細は /httpAuth/app/rest 以下のドキュメント用のエンドポイントから取得することになっています。

This documentation is not meant to be comprehensive, but just provide some initial knowledge useful for using the API.
https://confluence.jetbrains.com/display/TCD10/REST+API

TeamCity にログインした状態で、以下の URL を開きます。

http://192.168.56.10:8111/httpAuth/app/rest
http://192.168.56.10:8111/httpAuth/app/rest/server  ←エンドポイントをhrefで辿ることができます
http://192.168.56.10:8111/httpAuth/app/rest/application.wadl  ←指定可能なリクエストパラメータの情報 (分からないときはここを参照)

また、以下の情報は TeamCity10.x のドキュメント情報をもとにしています。9.x では存在しない機能もいくつか存在するため注意します。

例えば 10.x では Swagger 形式で上記エンドポイントの最後の情報を JSON で取得できます。

http://192.168.56.10:8111/httpAuth/app/rest/swagger.json

また、10.x では $help を locator に指定することで適宜エンドポイントの使用方法のヘルプを得ることができます。例えば以下のようにヘルプを得ます。

$ curl -sS -XGET -u myuser:mypass -H 'Accept: application/json' 'http://192.168.56.10:8111/httpAuth/app/rest/server' | jq . | grep 'agents' -A3
  "agents": {
    "href": "/httpAuth/app/rest/agents"
  },

$ curl -sS -XGET -u myuser:mypass -H 'Accept: application/json' 'http://192.168.56.10:8111/httpAuth/app/rest/agents' | jq .
{
  "count": 1,
  "href": "/httpAuth/app/rest/agents",
  "agent": [
    {
      "id": 1,
      "name": "Default Agent",
      "typeId": 1,
      "href": "/httpAuth/app/rest/agents/id:1",
      "webUrl": "http://192.168.56.10:8111/agentDetails.html?id=1&realAgentName=Default%20Agent&agentTypeId=1"
    }
  ]
}

$ curl -sS -XGET -u myuser:mypass -H 'Accept: application/json' 'http://192.168.56.10:8111/httpAuth/app/rest/agents/$help'
Responding with error, status code: 400 (Bad Request).
Details: jetbrains.buildServer.server.rest.errors.LocatorProcessException: Locator help requested: Supported dimensions are: [id, name, connected, authorized, enabled, parameter, ip, pool, build, compatible, $singleValue, start, count]
Invalid request. Check locator is specified correctly.

認証方法について

個人的に都度利用する場合は TeamCity のログイン用 ID とパスワードを利用して認証することができます。そうではなく、ビルド時に API を利用するためには、以下のような記法を用います。

  • %system.teamcity.auth.userId% ビルド時にのみ有効なユーザ ID に置換されます
  • %system.teamcity.auth.password% ビルド時にのみ有効なパスワードに置換されます

その他にも % で利用可能な変数は存在しており、適宜組み合わせます。

  • %teamcity.serverUrl% ビルドしている TeamCity の URL
  • %teamcity.build.id% ビルド番号

設定例

curl -sS -XGET -u '%system.teamcity.auth.userId%:%system.teamcity.auth.password%' -H 'Accept: application/json' '%teamcity.serverUrl%/httpAuth/app/rest/builds/id:%teamcity.build.id%'

locator の構造

この続きが気になる方は

TeamCity インストール手順およびドキュメント参照

残り文字数は全体の約 39 %
tybot
100 円
関連ページ