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

共通情報
TeamCity は、 VCS ルートの構成 が外部ユーザーによるプルリクエスト経由での変更のコミットを許可する設定の公開リポジトリをターゲットとしており、 VCS トリガー が新しい変更の検出時に新しいビルドを自動的に開始し、かつ次のいずれかに該当する場合、悪意のあるコードを実行する可能性があります:
プルリクエスト 機能が有効になっており、その設定によりすべてのユーザーからの変更のビルドが許可されます (プルリクエストのフィルタリングは「全員」に設定されています)。
プロジェクトの VCS ルートの構成 のブランチ仕様には、プルリクエストブランチ (たとえば、GitHub の場合は
refs/pull/*) が含まれます。
この場合、外部ユーザーはパブリックリポジトリをフォークし、悪意のある変更を導入して、プル (マージ) リクエストを送信する可能性があります。 TeamCity はこのリクエストを検出し、これらの変更を含む新しいビルドをトリガーします。
正確なビルド構成の設定と望ましい動作に応じて、次の調整を行う必要があります。
TeamCity がプルリクエストブランチを自動的にビルドしないようにするには、 VCS トリガー のブランチ仕様を変更します。 ビルドをトリガーする権限を持つ TeamCity ユーザーは、適切なコードレビューなしに手動でビルドを開始できるため、このソリューションではセキュリティリスクを完全には軽減できません。
外部ユーザーから送信されたリクエストを無視するには、 プルリクエスト 機能の設定で作成者によるフィルタリングを設定します。 このオプションにより、外部ユーザーのリクエストが完全に遮断され、そのユーザーのブランチに TeamCity からアクセスできなくなります。
外部ユーザーのビルド要求を、信頼できるレビュー担当者による必須の検証に合格するまで延期するには、 信頼されていないビルド 設定を構成します。 この構成はトリガー設定に依存せず、自動的に (トリガーによって) 開始されたビルドと、手動で (TeamCity ユーザーによって) 開始されたビルドの両方に検証を要求します。
信頼できないビルド設定の構成
信頼できないビルドに対応する設定はプロジェクトレベルで構成されるため、このプロジェクトとそのサブプロジェクトが所有するすべてのビルド構成に影響します。
プロジェクト設定 (管理 | <Your_Project>) に移動し、サイドバーの 信頼できないビルド セクションに切り替えます。

デフォルトのアクション を選択してください。
何もしない — 外部ユーザーが作成した変更を処理するビルドでは、開始するために追加の承認は必要ありません。
ビルドをキャンセル — TeamCity は、外部ユーザーが作成した変更を処理するビルドをキャンセルします。 これには、 プルリクエスト 機能によって開始されたビルドと手動で開始されたビルドの両方が含まれます。
承認が必要 — 外部ユーザーが作成した変更を処理するビルドはキューに入れられますが、必要な数のレビュー担当者が承認するまで開始されません。
信頼できないビルドをログに記録するかどうかを選択します。 TeamCity は、そのビルドが信頼できないことを ビルドログ で警告します…

... また、対応するメッセージを 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承認規則 フィールドを使用して、受信した変更を確認し、対応するビルドを承認またはブロックするユーザーを任命します。
ユーザー:<ユーザー名>構文を使用して個々のユーザーを任命するか、信頼できるすべてのレビュー担当者を専用の ユーザーグループに追加して、group:<グループ鍵>:<カウント>構文を使用します。カウントは、ビルドを許可するために必要な投票数です。複数のユーザーグループと個々のユーザーを、投票数を共有する単一の権限に統合することもできます。 例:
(groups:QA,DEVS,ADMINS,users:john.doe,jane.doe):3タイムアウト (分単位) を設定すると、このしきい値よりも長く検証されていないキュー内のビルドが自動的にキャンセルされます。
手動で開始されたビルドを承認 設定がオンの場合、レビュー担当者 (承認規則 に追加された人物) によって開始されたビルドは、自動的にその人からの承認投票を取得します。 新しいビルドをユーザーグループによって検証する必要がある場合は、他の人が残りの投票を行ってこのビルドを開始する必要があることに注意してください。
Kotlin DSL
次の Kotlin DSL スニペットは、コード内で信頼できないビルドを構成する方法を示しています。