TeamCity オンプレミス 2025.11 ヘルプ

Perforce

TeamCity は Perforce と統合することで、Perforce P4 に保存されたソースプロジェクトをビルドし、継続的な統合とデリバリーを実現できます。この統合の詳細については、こちらを参照してください。

この記事では、Perforce P4(英語) VCS ルートに固有の設定について説明します。一般的な VCS ルート設定については、ここで説明します。

P4 接続設定

設定

説明

ポート

Perforce サーバーアドレスを host:port として定義します。

特定の環境では、P4Host 環境変数は、あらゆる型のチェックアウトについて、以下のワークスペースオプションで設定できます。

ストリーム / クライアント / クライアントマッピング

接続モードを選択します。以下の詳細を参照してください。

ユーザー名

ユーザーのログイン名を指定してください。

パスワードまたはチケット

オプションで、パスワードまたはチケットを指定します。

値を入力すると、TeamCity は次のようになります。

  • Perforce コマンドを実行するための P4PASSWD 環境変数として設定するか

  • Perforce サーバーでパスワードベースの認証が無効になっている場合は、p4 login コマンドのチケットとして使用してください。

フィールドを空のままにすると、TeamCity は現在のユーザー (p4ticket.txt) の既存の P4 チケットに依存します。チケットがこのファイルに存在しないが、Perforce による認証に必要な場合は、失敗が発生します。
チケットファイルは、TeamCity サーバーマシンと、この VCS ルートに対して TeamCity が Perforce ビルドを実行するすべてのビルドエージェントに存在する必要があります。

チケットベースの認証

チケットベースの認証を有効にするには、このオプションをオンにします。このオプションはデフォルトで有効になっており、表示されません。

Perforce ストリームを使用する

既存の 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 つのビルド間で直接クライアントマッピングが変更された場合、サーバー上で teamcity.perforce.enable-no-clean-checkout 内部プロパティが設定されていない限り、2 番目のビルドのクリーンチェックアウト が強制されます

  • 次の場合には、クライアントマッピングを変更しても、エージェント側のチェックアウトのクリーンチェックアウトは強制されません

    • Perforce クライアント名が使用されます。クライアントの Perforce クライアントマッピングを変更しても、クリーンチェックアウトにはなりません。

    • Perforce ストリームが使用されます。同じストリームルートを維持しながらストリーム名を変更しても、クリーンなチェックアウトは行われません。

ChangeView の使用

特定のリビジョンに焦点を合わせるには、 ChangeView (英語) 仕様を使用します。

//depot/... //team-city-agent/... ChangeView: //depot/dir1/…@90 //depot/dir2/…@automaticLabelWithRevision

ここで、90dir1 の正確なリビジョンの番号であり、automaticLabelWithRevisiondir2 のラベル付きリビジョンです。これらのディレクトリの他のすべてのリビジョンは、この VCS ルートによって監視されません。

エージェントチェックアウト設定

エージェント側のチェックアウトを使用すると、TeamCity は各チェックアウトディレクトリ /VCS ルートに対して Perforce ワークスペースを作成します。これらのワークスペースは必要に応じて自動的に作成され、タイムアウト後に自動的に削除されます。詳細については、Perforce ワークスペースの処理を参照してください。

設定

説明

ワークスペースオプション

必要に応じて、 p4 client (英語) コマンドに次のオプションを設定します: OptionsSubmitOptionsLineEnd

特定の環境では、P4Host を定義します(あらゆる型のチェックアウトでサポートされます)。以下のワークスペースパラメーターの詳細を参照してください。

非ストリームワークスペースを作成する

Stream でのみ使用可能

ストリーム仕様に基づいて、非ストリームワークスペースを使用してソースをチェックアウトできるようにします。これにより、チェックアウトルールを使用できますが、ビルド内でストリームにコミットすることはできなくなります。

クリーンアップのために「p4 clean」を実行します

このオプションを有効にすると、ビルド前に余分なファイルからワークスペースがクリーンアップされます。有効にすると、p4 sync -f または p4 sync -p が使用されていない限り、p4 clean コマンドは p4 sync の前に実行されます。コマンドリファレンス(英語)を参照してください。

所有リストの更新をスキップする

このオプションを有効にすると、同期時に Perforce サーバー上のファイルを追跡しません (常にすべてのファイルをエージェント p4 sync -p (英語) に転送します)。無効にすると、TeamCity は p4 have を使用してリストを最新の状態に保ちます。

追加同期オプション

追加の p4 sync オプションを指定します。

sync コマンドの後に宣言するオプションのリストを指定する必要がある場合は、このコマンドの名前を省略します。例:

  • --parallel=threads=5 と入力して、p4 sync --parallel=threads=5 コマンドを実行します。

sync コマンドの前後の両方で宣言する必要があるオプションを指定するには、この追加オプションのリストにコマンド名を含めます。例:

  • -r3 sync と入力して、p4 -r3 sync コマンドを実行します。

  • -r4 sync --parallel=threads=5 と入力して、p4 -r4 sync --parallel=threads=5 コマンドを実行します。

詳細については、 command reference (英語) を参照してください。

Perforce ワークスペースを自動的に削除する

この設定がオンの場合、TeamCity は各 clean-up 上の非アクティブなエージェントワークスペースを削除します。

詳細についてはこの記事を参照してください: ワークスペースの削除

Perforce ワークスペースパラメーター

TeamCity は、各 Perforce VCS ルートの接続変数を次のパラメーターに格納します。

  • %vcsRoot.extId.port%

  • %vcsRoot.extId.user%

  • %vcsRoot.extId.p4client%

ここで、extId は、設定で指定された VCS ルートの外部 ID です。

このようにして、ルートごとに個別にスクリプトからそれらにアクセスできます。

エージェントでのチェックアウトでは、TeamCity はチェックアウトプロセス中に作成された Perforce ワークスペースを記述する環境変数を提供します。
チェックアウトに複数の Perforce VCS ルートが使用される場合、最初の VCS ルートに対して変数が作成されます。変数は次のとおりです。

  • P4USERvcsroot.<VCS_root_ID>.user ビルドパラメーターと同じです。

  • P4PORTvcsroot.<VCS_root_ID>.port と同じです。

  • P4CLIENTvcsroot.<VCS root ID>.p4client と同じで、ビルドエージェントで生成された P4 ワークスペースの名前です。

これらの変数を使用して、チェックアウト後にカスタム p4 コマンドを実行できます。

詳細を見る

Perforce プロキシ設定

エージェント側のチェックアウトで Perforce プロキシを使用できるようにするには、ビルドエージェントenv.TEAMCITY_P4PORT 環境変数を指定すると、エージェントはこの値を P4PORT 値として受け取ります。

その他の設定

設定

説明

ビルドエージェント上の P4 パス

Perforce コマンドラインクライアント(p4.exe)へのパスを指定します。

これはエージェント側のチェックアウトに対してのみ機能します。エージェント側では、このパラメーターの値は、TEAMCITY_P4_PATH 環境変数が buildAgent.properties ファイルで設定されているか、ビルドパラメーターから取得されている場合、その変数によって上書きされる可能性があります。

サーバーの場合、p4 バイナリは TeamCity サーバーマシンの PATH 環境変数に存在する必要があります。または、teamcity.perforce.customP4Path 内部プロパティを介して指定できます。

同期するラベル / 変更リスト

最新のリビジョンではなく、特定の Perforce ラベル (選択的な変更を含む) でソースをチェックアウトする場合は、ラベルを指定します。たとえば、これはマイルストーン / リリースビルドを作成するときに役立ちます。このフィールドが空の場合、最新の変更リストが同期に使用されます。TeamCity がラベルを使用してソースを同期する場合、リビジョン番号が vcsRoot.{externalId}.changelist パラメーターに書き込まれます。

文字セット

クライアントマシンで使用されている文字セットを選択します。

UTF-16 エンコーディングをサポート

プロジェクトに utf16 Perforce ファイルタイプ(英語)として UTF-16 ファイルが保存されている場合は、このオプションを有効にします。

ディポでサーバー側のチェックアウトと utf16 のファイルがあります Perforce ファイルタイプ(英語)を使用する場合は、このオプションを有効にしてください。チェックアウトされたファイルで UTF-16 エンコーディングを維持するには、このオプションを有効にしてください。そうしないと、チェックアウト時にそのようなファイルが UTF-8 に変換される可能性があります。

UTF-16 ファイルを binary Perforce ファイルタイプ(英語)として保存すると、それらは常に「そのまま」チェックアウトされ、変換は実行されません。

P4 トラスト

プロジェクトの VCS ルートが SSL 経由で Perforce に接続する場合、TeamCity はそれへの信頼できる接続を自動的に確立します。p4 trust コマンドは、Perforce 接続をテストするか、ビルドエージェントが Perforce からソースをチェックアウトするたびに送信されます。

Perforce サーバーの SSL 証明書が更新された場合、特別なパラメーターを使用して、この新しい証明書を信頼するようにエージェントを構成する必要があります。セキュリティ上の理由から、すべてのエージェントがソースをチェックアウトした後、このパラメーターを削除する必要があります。teamcity.internal.perforce.forceTrust=true 構成パラメーターを関連するプロジェクトまたはビルド構成に設定します。

2025 年 11 月 05 日

関連ページ:

TeamCity と Perforce の統合

この記事では、TeamCity を Perforce P4 と統合して次のことを行う方法について説明します。P4 リポジトリに保存されているプロジェクトのソースをビルドします。Perforce ストリームを機能ブランチとして使用し、それらのソースを互いに独立して構築します。シェルブされた変更リスト内のファイルを事前テストおよび事前ビルドします。ソースに自動ラベルを適用します。Perforce HelixSwarm のコードレビューにビルドステータスを報告します。前提条件:TeamCity は P4...

ビルドパラメーターの設定

パラメーターは、TeamCity 設定およびビルドスクリプトの構文を介して参照するペアです。パラメーター部分は、生の値 () にすることも、別のパラメーターへの参照 () を含めることもできます。パラメーター型:TeamCity は次の 3 種類のパラメーターをサポートします。構成パラメーター — ビルド構成内で設定を共有することを主な目的とするパラメーター。これらのパラメーターを使用して、テンプレートから作成された構成やレシピを使用する構成をカスタマイズすることもできます。TeamCity は...

VCS チェックアウトモード

ビルド構成のバージョン管理設定ページでは、プロジェクトのソースコードを VCS から取得する方法を構成できます。VCS ルートを接続してチェックアウトオプションを構成できます。VCS チェックアウトモードは、プロジェクトソースがエージェントに到達する方法に影響する設定です。このモードは、ソースのチェックアウトのみに影響します。現在のリビジョンおよび変更データの取得ロジックは TeamCity サーバーによって実行されるため、TeamCity サーバーはどのモードでも VCS サーバーにアクセスする...

VCS チェックアウト規則

VCS チェックアウトルールを使用すると、構成された VCS ルートの一部をチェックアウトし、バージョン管理のディレクトリをビルドエージェントのビルドチェックアウトディレクトリのサブディレクトリにマップすることができます。リポジトリ全体の VCS ルートを定義し、各ビルド構成にその関連部分のみをチェックアウトするように指示することができます。チェックアウトルールは、UI に表示されるビルドの変更と、エージェント上のビルドでチェックアウトされるファイルに影響します。コミットがビルドの VCS ルー...

エージェント要件の設定

エージェントの要件は、ビルド構成を実行できるエージェントを指定する条件です。現在存在するすべての要件を表示して新しい要件を作成し、特定の構成を実行できるエージェントを確認するには、ビルド設定 | エージェント要件にアクセスしてください。エージェント要件ビデオガイド:要件構文:エージェント要件は式です。ここは、定義済みまたはカスタム (ユーザー定義) のビルドパラメーターです。例: エージェントにインストールされているオペレーティングシステムを報告するパラメーター。要件では、エージェントがこの特...

VCS ルートの設定

VCS ルートは、TeamCity ←→ VCS リポジトリ通信の基礎です。この不可欠な要素は、リポジトリのチェックアウト、コードソースのタグ付け、ビルドステータスの VCS への返信など、さまざまな操作を実行するために必要な VCS プロバイダーへの接続を定義します。VCS ルートには次の情報が保存されます。TeamCity がリモートファイルをプルおよびプッシュするために使用する URL を取得してプッシュします。ブランチ情報: TeamCity が追跡する必要があるリポジトリブランチのリスト...