Perforce
TeamCity は Perforce と統合して、Perforce P4 に保存されたソースプロジェクトをビルドし、継続的インテグレーションとデリバリーを実現できます。 この統合の詳細については、 こちらを参照してください。
この記事では、 Perforce P4(英語) VCS ルートに固有の設定について説明します。 一般的な VCS ルート設定については、 こちらで説明しています。
P4 接続設定
設定 | 説明 |
|---|---|
ポート | Perforce サーバーアドレスを 特定の環境では、 |
ストリーム / クライアント / クライアントマッピング | 接続モードを選択します。 以下の詳細を参照してください。 |
ユーザー名 | ユーザーのログイン名を指定してください。 |
パスワードまたはチケット | オプションで、パスワードまたはチケットを指定します。 値を入力すると、TeamCity は次の処理を行います:
フィールドを空のままにすると、TeamCity は現在のユーザーの既存の P4 チケットを使用します ( p4ticket.txt )。 チケットがこのファイルに存在しないものの Perforce での認証に必要な場合、失敗します。 |
チケットベースの認証 | チケットベースの認証を有効にするには、このオプションをオンにします。 このオプションはデフォルトで有効になっており、表示されません。 |
Perforce Streams を使用
既存の Perforce ストリーム(英語)を使用するには、 ストリームオプションを選択します。 TeamCity はこのストリームを使用して、ストリームベースのワークスペースを準備し、それに合わせてクライアントマッピングを調整します。
このモードの使用に関する注意:
ストリームフィールドの形式:
深層構造仕様、つまり
//DEPOTNAME/1/2/nのようなパスをサポートします。ビルドパラメーターをサポートします。
StreamAtChangeオプションを使用するには、 同期するラベル / 変更リストを定義する必要があります。ストリームを エージェント側チェックアウトモードで使用する場合、
。 => sub/directoryのような単純な チェックアウトルールがサポートされます。 除外チェックアウトルール、複数の包含ルール、aaa=>bbbのようなルールは、「非ストリームワークスペースを作成する 」オプションが有効になっている場合にのみサポートされます (以下を参照)。タスクストリームが機能ブランチに使用されている場合、変更を加えるコミットが行われるまで、TeamCity はタスクストリーム内の一部の変更を見逃すことがあります。つまり、タスクストリームへの 実際のコミットが行われるまで、親ストリームからのマージコミットは検出されません (チケット TW-44765 を参照)。
TeamCity の Perforce サポートでは、チェックアウトルールが大文字と小文字を区別して扱われることに注意してください。 Perforce ベースのビルド構成の大文字と小文字を区別しないようにするには、 バージョン管理設定 ページで、 チェックアウト規則の編集フォームに次のコメントを追加します:
##teamcity ignore-case
「機能ブランチサポートを有効にする 」オプションを使用すると、デフォルトのストリームに加えて、変更を監視するブランチストリームを指定できます。 この機能の詳細については、 続きを読むを参照してください。
Perforce クライアントを使用
クライアントオプションを使用すると、クライアントワークスペース名を直接指定できます。 ワークスペースは、Perforce クライアントアプリケーション (P4V や P4Win など) によってすでに作成されている必要があります。 構成されたクライアントワークスペースからのマッピングルールのみが使用されます。 クライアント名は無視されます。
このモードの使用に関する注意:
このオプションを サーバー側チェックアウトで使用すると、サーバー側の内部 TeamCity ソースキャッシングが無効になります。 これにより、 クリーンチェックアウトのパフォーマンスが低下する可能性があります。
ビルド構成に 構成パラメーター
teamcity.perforce.agent.reuse.client=trueがあり、デフォルトのチェックアウトルールを使用している場合、TeamCity はエージェント上に別の Perforce ワークスペースを作成せず、Perforce VCS ルートで指定されたお名前を持つ既存の Perforce クライアントを再利用しようとします。
Perforce デポをクライアントにマップ
クライアントマッピングオプションを使用すると、ディポをクライアントマシンにマッピングできます。
このモードの使用に関する注意:
クライアントマッピングフィールドの形式:
TeamCity は、ビルドが実行されるビルドエージェントの OS/プラットフォームに応じてファイル区切り文字を処理します。 すべてのビルドエージェントに特定の改行コード文字を使用できるようにするには、代わりに クライアントまたは ストリームオプションを選択します (Perforce で
LineEndを指定します)。 または、特定のプラットフォームでのみビルドを実行する エージェント要件を追加することもできます。マッピング内のクライアントのお名前の代わりに
team-city-agentを使用します。
例://depot/MPS/... //team-city-agent/... //depot/MPS/lib/tools/... //team-city-agent/tools/...
2 つのビルド間で直接クライアントマッピングが変更された場合、2 番目のビルドでは クリーンチェックアウトが 強制されます 。ただし、サーバーで
teamcity.perforce.enable-no-clean-checkout内部プロパティが設定されている場合を除きます。次の場合には、クライアントマッピングを変更しても、エージェント側のチェックアウトのクリーンチェックアウトは 強制されません。
Perforce クライアントのお名前が使用されています: そのクライアントの Perforce クライアントマッピングを変更しても、クリーンチェックアウトにはなりません。
Perforce ストリームが使用されています: 同じストリームルートを維持したままストリームのお名前を変更しても、クリーンチェックアウトにはなりません。
ChangeView の使用
特定のリビジョンに焦点を合わせるには、 変更ビュー (英語) 仕様を使用します。
ここで、 90 は ディレクトリ 1 の正確なリビジョンの番号であり、 リビジョン付きの自動ラベル は ディレクトリ 2 のラベル付きリビジョンです。 これらのディレクトリの他のすべてのリビジョンは、この VCS ルートによって監視されません。
エージェントチェックアウト設定
エージェント側チェックアウトを使用すると、TeamCity は各 チェックアウトディレクトリ/VCS ルートに対して Perforce ワークスペースを作成します。 これらのワークスペースは必要に応じて自動的に作成され、タイムアウト後に自動的に削除されます。 詳細については、 Perforce ワークスペースの処理を参照してください。
設定 | 説明 |
|---|---|
ワークスペースオプション | 必要に応じて、 特定の環境では、 |
非ストリームワークスペースを作成する | Stream でのみ使用可能 ストリーム仕様に基づいて、非ストリームワークスペースを使用してソースをチェックアウトできるようにします。 これにより、 チェックアウトルールを使用できますが、ビルド内でストリームにコミットすることはできなくなります。 |
クリーンアップのために「p4 clean」を実行します | このオプションを有効にすると、ビルド前に余分なファイルからワークスペースがクリーンアップされます。 有効にすると、 |
所有リストの更新をスキップする | このオプションを有効にすると、同期時に Perforce サーバー上のファイルを追跡しません (常にすべてのファイルをエージェント |
追加同期オプション | 追加の
詳細については、 |
Perforce ワークスペースを自動的に除去 | この設定がオンの場合、TeamCity は クリーンアップ のたびに非アクティブなエージェントワークスペースを除去します。 詳細についてはこの記事を参照してください: ワークスペースの削除 |
Perforce ワークスペースパラメーター
TeamCity は各 Perforce VCS ルートの接続変数を次のパラメーターに格納します:
%vcsRoot.extId.port%%vcsRoot.extId.user%%vcsRoot.extId.p4client%
ここで、 extId は、設定で指定された VCS ルートの外部 ID です。
このようにして、ルートごとに個別にスクリプトからそれらにアクセスできます。
エージェントでチェックアウトする場合、TeamCity はチェックアウトプロセス中に作成された Perforce ワークスペースを表す環境変数を提供します。
チェックアウトに複数の Perforce VCS ルートが使用される場合、変数は 最初 VCS ルート用に作成されます。 変数は次のとおりです:
P4USER —
vcsroot.<VCS_root_ID>.userビルドパラメーターと同じです。P4PORT —
vcsroot.<VCS_root_ID>.portと同じです。P4CLIENT —
vcsroot.<VCS root ID>.p4clientと同じで、ビルドエージェントで生成された P4 ワークスペースの名前です。
これらの変数を使用して、チェックアウト後にカスタム p4 コマンドを実行できます。
詳細を見る
Perforce プロキシ設定
エージェント側のチェックアウトで Perforce プロキシを使用できるようにするには、 ビルドエージェントで env.TEAMCITY_P4PORT 環境変数を指定すると、エージェントはこの値を P4PORT 値として受け取ります。
その他の設定
設定 | 説明 |
|---|---|
ビルドエージェント上の P4 パス | Perforce コマンドラインクライアント( これは エージェント側のチェックアウトに対してのみ機能します。 エージェント側では、このパラメーターの値は、 サーバーの場合、p4 バイナリは TeamCity サーバーマシンの |
同期するラベル / 変更リスト | 最新のリビジョンではなく、特定の Perforce ラベル (選択的な変更を含む) でソースをチェックアウトする場合は、ラベルを指定します。 たとえば、これはマイルストーン / リリースビルドを作成するときに役立ちます。 このフィールドが空の場合、最新の変更リストが同期に使用されます。 TeamCity がラベルを使用してソースを同期すると、リビジョン番号を |
文字セット | クライアントマシンで使用されている文字セットを選択します。 |
UTF-16 エンコーディングをサポート | プロジェクトに ディポで サーバー側のチェックアウトと
|
P4 トラスト | プロジェクトの VCS ルートが SSL 経由で Perforce に接続する場合、TeamCity はその接続を信頼済みとして自動的に確立します。 Perforce サーバーの SSL 証明書が更新された場合、特別なパラメーターを使用して、この新しい証明書を信頼するようにエージェントを構成する必要があります。 セキュリティ上の理由から、すべてのエージェントがソースをチェックアウトした後、このパラメーターを削除する必要があります。 |