ビルドスコープトークン
ビルドスコープトークン 機能を使用すると、ビルド時に有効期限の短い VCS アクセストークンを自動的に取得できます。 このトークンは既存の VCS 接続を通じて発行され、指定されたパラメーターに保存されます。 ビルドステップでは、このトークンを使用して VCS 内のリソースにアクセスし、変更できます。
現時点では、トークンは GitHub アプリ接続を介してのみ発行できます。
トークンパラメーター
- リポジトリスコープ
トークンはきめ細かく、 ビルド機能設定で明示的にリストされているリポジトリへのアクセスのみを許可します。 ユーザーまたは組織内のすべてのリポジトリへのアクセス権を持つグローバルトークンの作成はサポートされていません。
- 有効期間
トークンは最大 60 分間有効で、親ビルド(またはビルドチェーン)が完了すると自動的に期限切れになります。 ビルドの実行時間が 1 時間を超える場合、トークンは使用される前に期限切れになる可能性があります。 現在、ビルド中にトークンをリフレッシュすることはできません。
- 権限
トークンの権限は、発行元のアプリによって定義されます。 例: 自動 モードで作成された GitHub アプリ接続は、以下の権限を持つアプリを使用します。
コンテンツ: 書き込み
メタデータ: 読み取り
プルリクエスト: 読み取り
課題: 読み取り
メンバー: 読み取り
メール: 読み取り
ステータス: 書き込み
チェック: 書き込み
機能設定
ビルドスコープトークン 機能を設定するには、次のプロパティを指定します:

- タイプ
トークンの種類。 現在、GitHub アプリトークンのみがサポートされています。
- パラメーター名
発行されたトークンを格納するパラメーターの名前。 TeamCity はビルド完了後にこの値をクリアし、漏えいを防ぐためにマスクします (たとえば、ビルドログで)。
- 接続
トークンの発行に使用される TeamCity VCS 接続。 GitHub アプリのインストールトークン は、 ビルドスコープトークンを有効化 が有効になっている GitHub アプリ接続を使用してのみ作成できます。
- アクセス可能なリポジトリ
トークンがアクセスできるリポジトリを改行で区切ったリスト。
次の例は、 Kotlin DSL を使用してこの機能を設定する方法を示しています:
サンプル
この例では、 ビルドスコープトークン 機能を使用して、プルリクエストを作成する承認済みの GitHub REST API(英語) リクエストを送信する方法を示します。
バインドされていないビルド構成でプロジェクトを作成します。 VCS ルートが設定されていないと、リポジトリに直接アクセスできないため、すべての操作には手動で発行されたトークンを使用する必要があります。
プロジェクト設定を開き、 接続設定タブに移動します。
新しい GitHub アプリ接続を作成します(ビルドスコープトークンを有効化 が選択されていることを確認してください)。
デフォルトでは、手順 3 で作成したアプリには
プルリクエスト: 読み取り権限が付与されています。 トークンはアプリの権限を継承するため、プルリクエストを作成するにはトークンを拡張する必要があります。https://github.com/settings/apps に移動し、TeamCity 接続にリンクされたアプリの横にある 編集 をクリックします。
権限とイベント セクションを開き、 リポジトリの権限 を展開します。
プルリクエスト を「読み書き可能」に設定します。
変更を保存 をクリックします。
アカウントまたは組織の設定で更新された権限を確認します: https://github.com/settings/installations に移動し、 レビューリクエスト をクリックしてから、 新しい権限を受け入れる をクリックします。
構成設定を開き、 パラメーター設定タブに移動します。
発行されたトークンを格納するためのパラメーターを作成します。
設定の ビルド機能 タブを開き、 ビルドスコープトークン 機能を追加します。
パラメーター名: ステップ 6 で作成したパラメーターの名前を入力してください。
接続: 手順 3 で作成した接続を選択してください。
アクセス可能なリポジトリ: プルリクエストを作成するリポジトリを指定します。
/repos/{owner}/{repo}/pulls(英語) エンドポイントにPOSTリクエストを送信する コマンドラインビルドステップを追加します。ビルドを実行します。 正しく設定されていれば、ビルドログには作成されたプルリクエストを説明する応答が含まれます。
以下の Kotlin DSL サンプルは、完全なセットアップを示しています。