TeamCity オンプレミス 2026.1 ヘルプ

信頼できないビルド

信頼できないビルドセクションでは、外部ユーザーが作成した悪意のあるコードが TeamCity で実行されるのを防ぐことを目的とした変更検証プロセスを設定できます。

Pending approval

共通情報

VCS ルートの設定が、外部ユーザーがプルリクエストを介して変更をコミットできる設定になっているパブリックリポジトリをターゲットにしている場合、新しい変更が検出されると VCS トリガーが自動的に新しいビルドを開始し、次のいずれかが当てはまる場合、TeamCity は悪意のあるコードを実行できます。

  • プルリクエスト機能が有効になっており、その設定によりすべてのユーザーからの変更のビルドが許可されます (プルリクエストのフィルタリングは「全員」に設定されています)。

  • プロジェクトの VCS ルートの設定のブランチ仕様には、プルリクエストブランチ (たとえば、GitHub の場合は refs/pull/*) が含まれます。

この場合、外部ユーザーはパブリックリポジトリをフォークし、悪意のある変更を導入して、プル (マージ) リクエストを送信する可能性があります。TeamCity はこのリクエストを検出し、これらの変更を含む新しいビルドをトリガーします。

正確なビルド構成の設定と望ましい動作に応じて、次の調整を行う必要があります。

  • TeamCity がプルリクエストブランチを自動的にビルドしないようにするには、VCS トリガーのブランチ仕様を変更します。ビルドをトリガーする権限を持つ TeamCity ユーザーは、適切なコードレビューなしにビルドを手動で開始できるため、このソリューションではセキュリティリスクが完全に軽減されるわけではありません。

  • 外部ユーザーから送信されたリクエストを無視するには、プルリクエスト機能の設定で作成者によるフィルタリングを設定します。このオプションにより、外部ユーザーのリクエストが完全に遮断され、TeamCity からそのユーザーのブランチにアクセスできなくなります。

  • 外部ユーザーのビルド要求を、信頼できるレビュー担当者による必須の検証に合格するまで延期するには、信頼できないビルド設定を構成します。この構成はトリガー設定に依存せず、自動的に (トリガーによって) 開始されたビルドと手動で (TeamCity ユーザーによって) 開始されたビルドの両方に対して検証が必要です。

信頼できないビルド設定を構成する

信頼できないビルドに対応する設定はプロジェクトレベルで構成されます。つまり、このプロジェクトとそのサブプロジェクトが所有するすべてのビルド構成に影響します。

  1. プロジェクト設定 ( 管理 | <あなたのプロジェクト>) に移動し、サイドバーの信頼できないビルドセクションに切り替えます。

    Untrusted build settings
  2. デフォルトのアクションを選択してください。

    • 何もしない — 外部ユーザーが作成した変更を処理するビルドでは、開始するために追加の承認は必要ありません。

    • ビルドをキャンセル — TeamCity は、外部ユーザーが作成した変更を処理するビルドをキャンセルします。これには、プルリクエスト機能によって開始されたビルドと手動で開始されたビルドの両方が含まれます。

    • 承認が必要 — 外部ユーザーが作成した変更を処理するビルドはキューに入れられますが、必要な数のレビュー担当者が承認するまで開始されません。

  3. 信頼できないビルドをログに記録するかどうかを選択します。TeamCity はビルドログでビルドが信頼できないことを警告します ...

    Warning in build log

    ... また、対応するメッセージを teamcity-server.log に書き込みます (選択されたデフォルトのアクションに関係なく)。

    [2024-02-21 11:31:05,337] WARN — jetbrains.buildServer.SERVER — Build(promotion id: 7004, configuration id: MyProject_Build) detected as untrusted. Reasons: {Pull request from a fork in a public repository (target repository url: https://github.com/...)} Build URL: http://localhost:8111/buildConfiguration/MyProject_Build/-1
  4. 承認規則フィールドを使用して、受信した変更を確認し、対応するビルドを承認またはブロックするユーザーを任命します。user:<username> 構文を使用して個々のユーザーを任命するか、信頼できるすべてのレビュー担当者を専用のユーザーグループに追加して、group:<group key>:<count> 構文を使用します。count は、ビルドを許可するために必要な投票数です。

    複数のユーザーグループと個々のユーザーを、投票数を共有する単一の権限に統合することもできます。例: (groups:QA,DEVS,ADMINS,users:john.doe,jane.doe):3

  5. タイムアウト (分単位) を設定すると、このしきい値よりも長く検証されていないキュー内のビルドが自動的にキャンセルされます。

  6. 手動で開始されたビルドを承認する設定がオンの場合、レビュー担当者 ( 承認規則に追加された人物) によって開始されたビルドは、自動的にその人からの承認投票を取得します。新しいビルドをユーザーグループによって検証する必要がある場合は、他の人が残りの投票を行ってこのビルドを開始する必要があることに注意してください。

Kotlin DSL

次の Kotlin DSL スニペットは、コード内で信頼できないビルドを構成する方法を示しています。

project { features { untrustedBuildsSettings { id = "PROJECT_EXT_42" defaultAction = UntrustedBuildsSettings.DefaultAction.APPROVE enableLog = true approvalRules = "group:CODE_REVIEWERS:2" timeoutMinutes = 120 } } }
2025 年 6 月 24 日

関連ページ:

ビルド承認

ビルド承認ビルド機能を使用すると、ユーザーは承認を使用してビルドの開始を手動で制御できます。このビルド機能により、承認ルールで定義された個々のユーザーまたはグループによって承認されない限り、ビルドが開始されないことが保証されます。この機能は、デプロイ、リソースを消費するビルド、リソースの削除操作など、複数の人の承認が必要なプロセスに役立ちます。承認により、ユーザーが誤ってビルドをトリガーすることも防止されます。指定された期間内にビルドが承認されない場合、ビルドはキャンセルされます。承認設定を作成...

VCS ルートの設定

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

VCS トリガーの設定

VCS トリガーは、TeamCity が構成済みの VCS ルートの新しい変更を検出するたびに新しいビルドを自動的に開始し、保留中の変更の変更を表示します。複数の VCS トリガーをビルド構成に追加できます。デフォルト設定の新しい VCS トリガーは、ビルド構成に保留中の変更があるとビルドをトリガーします。バージョン管理は、VCS コミットフック(設定されている場合)を尊重する VCS ルートの変更チェック間隔に従ってポーリングされます。チェックアウトルールに一致する変更のみが保留中として表示され...

プルリクエスト

プルリクエストビルド機能は、GitHub、Bitbucket サーバー、Bitbucket クラウド、GitLab、Azure DevOps、JetBrains Space リポジトリのプル (マージ) リクエストとの TeamCity 統合を強化します。共通情報:ビルド構成にプルリクエスト機能を追加すると、次のことが可能になります。ビルド構成の概要ページで、プルリクエストブランチと保留中の変更を表示します。

ビルドログ

ビルドログは、ビルドの拡張コンソール出力です。ビルド中に発生したイベントの構造化されたリストで表されます。通常、ビルドログには、TeamCity が実行したアクションのエントリと、ビルド中に起動されたプロセスの出力が含まれます。TeamCity はプロセスの出力をキャプチャーし、階層表示を可能にする内部形式で保存します。ビルドログを表示する:完全なログの詳細を表示するには、ビルド結果ページに移動し、ビルドログタブに切り替えます。このタブには次の UI 要素が表示されます。すべて展開 / すべて折り...

Kotlin DSL

TeamCity では、バージョン管理で設定を XML 形式で保存するだけでなく、DSL (Kotlin 言語に基づく) で設定を保存することもできます。バージョン管理に保存された DSL を使用すると、プログラムで設定を定義できます。Kotlin は静的に型指定されるため、IDE で自動補完機能を自動的に受け取ります。これにより、利用可能な API オプションの発見がはるかに簡単になります。TeamCity での Kotlin DSL の使用に関するブログ投稿シリーズと推奨リファクタリングの記...