コミットステータスパブリッシャー
コミットステータスパブリッシャーは、ビルドステータスを VCS プロバイダーに送信する ビルド機能です。 これにより、リポジトリページからコードの健全性を追跡し、関連する TeamCity ビルドにすばやく移動して詳細なビルドログを確認できます。

サポートされている VCS プロバイダー:
GitHub(英語) (プルリクエストのビルドステータスもサポートされています)
Azure DevOps (サポートされるステータス: 保留中、成功、失敗、エラー)
Gerrit コードレビューツール 2.6+
Perforce ヘリックススウォーム
GitHub、GitLab、Space、Bitbucket サーバー、Bitbucket Cloud、Perforce Helix Swarm、および Azure DevOps の場合、コミットステータスパブリッシャーは、ビルドがキューに追加されるとすぐにバージョン管理システムのコミットステータスを更新し、最新の情報を提供します。
共通設定
- VCS ルート
TeamCity と VCS 間のすべての通信操作を実行する VCS ルート。 これは、別の VCS ルートでも、ビルド構成 / パイプラインがリポジトリファイルのチェックアウトにすでに使用している VCS ルートでも構いません。
- パブリッシャー
VCS の種類。 その他のコミットステータス発行者設定は、この設定によって異なります。
- サーバー URL
VCS サーバーの URL。 パブリックサービスの場合はデフォルト値を使用し、オンプレミスソリューションの場合はカスタム URL を入力してください。 例: GitHub.com の場合は
https://api.github.com、GitHub Enterprise の場合はhttp[s]://<ホスト>[:<ポート>]/api/v3- 認証設定
これらの設定は、コミットステータスパブリッシャーがビルドステータスを投稿する前に、VCS に対してどのように認証を行うかを指定します。 ダイアログの下部にある 接続をテスト ボタンをクリックすると、現在の設定が有効かどうかを確認できます。
ほとんどの VCS プロバイダーでは、以下のオプションが利用可能です。
パスワード — 従来型のユーザー名とパスワードの組み合わせによる認証方法です。 ただし、ほとんどのプロバイダーは、この認証方式を最も安全性の低いものとして徐々に廃止していることに注意してください。
アクセストークン — VCS 側で手動で発行する個人アクセストークンを使用して認証します。 特定のプロバイダー (例: GitHub) では、魔法の杖ボタンをクリックして、TeamCity に事前構成済みの OAuth 接続を使用してアクセストークンを自動的に取得させることができます:

それ以外の場合は、正しい権限を手動で設定してください。 例: GitHub の場合:
クラシック GitHub トークン:
public_repoとrepo:ステータスは公開リポジトリ用、リポジトリは非公開リポジトリ用です。 関連項目: OAuth アプリのスコープ。きめ細かいトークン: 「読み取りと書き込み」アクセスタイプで
Commit Statuses権限を追加します。 この権限は、「すべてのリポジトリ」または「選択したリポジトリのみ」のアクセスタイプを持つトークンにのみ追加できます。 参照: きめ細かな個人アクセストークンに必要な権限(英語)。
更新可能なアクセストークン - 既存の OAuth/アプリ接続を介して、TeamCity が必要な VCS プロバイダーから取得した短期トークンを使用します (VCS ホスティング側でユーザーが手動発行した静的 PAT トークンではありません)。 リフレッシュ可能なトークンの生成と使用の詳細については、次の記事を参照してください: 更新可能なアクセストークンを管理する。
VCS ルート認証情報を使用する — TeamCity は VCS ルート設定から資格情報を抽出しようとします。 このオプションは、トークン (静的 / 個人またはリフレッシュ可能 /OAuth) を使用して認証を通過し、HTTP(S) フェッチ URL を使用してリポジトリを取得する VCS ルート向けに設計されています。 関連する VCS ルートが匿名または標準のユーザー名とパスワードによる認証を採用している場合、または SSH フェッチ URL を使用している場合は、他のオプションを選択してください。
- ビルドのお名前:訳語が不自然な場合は空にすべき?いや。
ステータスメッセージに表示されるカスタムビルド名。
%parameter_name%パラメーター参照を含めることができます。 例: 概要セクションのイメージには、次のカスタムビルド名で生成されたステータスが表示されます。Integration tests (build #%build.number%, %teamcity.agent.jvm.os.name%)この設定は、Git ベースのすべてのプロバイダーで使用できます: Azure DevOps、Bitbucket Cloud、Bitbucket Server and Data Center、GitHub ("ステータスチェック名" 設定)、GitLab ("外部ジョブ名")、JetBrains Space ("表示名")。
プロバイダー固有の構成
GitHub
手動で発行したアクセストークンを使用する場合は、十分な権限を付与するようにしてください。
クラシック GitHub トークン:
public_repoとrepo:ステータスは公開リポジトリ用、リポジトリは非公開リポジトリ用です。 関連項目: OAuth アプリのスコープ。きめ細かいトークン: 「読み取りと書き込み」アクセスタイプで
Commit Statuses権限を追加します。 この権限は、「すべてのリポジトリ」または「選択したリポジトリのみ」のアクセスタイプを持つトークンにのみ追加できます。 参照: きめ細かな個人アクセストークンに必要な権限(英語)。
ブランチを保護し、検証済みのプルリクエストのみがマージされるようにするには、GitHub リポジトリ設定で ブランチ保護ルール(英語)を作成します。 TeamCity ビルドを必須ステータスチェックとして設定すると、要求された変更に対するビルドが正常に完了するまで、GitHub はプルリクエストのマージを許可しません。
VCS ルートが App Token を使用して GitHub に接続する場合、コミットステータスパブリッシャー機能を設定しなくても、 GitHub チェック API(英語) を利用して Markdown 形式のビルドステータスを自動的に投稿できます。 詳細については、この記事を参照してください: GitHub Checks ウェブフックトリガー。
GitLab
GitLab 認証情報と GitLab プロジェクトは次のように設定する必要があります。
資格情報は、プロジェクトの開発者、保守者、所有者のロールを持つユーザーに属している必要があります。
保護されたブランチのコミットステータスを変更できるようにするには、GitLab ユーザーが プッシュを許可 リストに含まれている必要があります。
プロジェクトの GitLab プロジェクト可視性(英語)設定で、 CI/CD オプション (または古い GitLab バージョンでは パイプラインオプション) が有効になっていることを確認します。
GitLab API URL フィールドでは、 http[s]://<ホスト名>[:<ポート>]/api/v4 形式の URL を使用できます。 このフィールドは任意です。空白のままにすると、TeamCity は VCS ルート設定で指定されたフェッチ URL に対応する値を使用します。
Bitbucket Cloud
Bitbucket Cloud に接続できるようにするには、 TeamCity サーバー URL が完全修飾ドメイン名 (FQDN) であることを確認してください。例: http://myteamcity.domain.com:8111。 http://myteamcity:8111 (英語) などの短い名前は、Bitbucket API によって拒否されます。
Bitbucket サーバー
ブランチを保護し、検証済みのプルリクエストのみがマージされるようにするには、Bitbucket リポジトリ設定で 必須ビルド(英語)を指定します。 TeamCity ビルドを 必須ビルドとして設定するには、Bitbucket で 必須ビルドを追加 ページを開き、 ビルドを追加 フィールドにビルド構成 ID をビルド鍵として指定します。 この場合、Bitbucket では、要求された変更のビルドが正常に完了するまで、プルリクエストのマージは許可されません。
JetBrains Space
バージョン 2023.11 以降、事前定義された Space 接続 経由で設定された TeamCity ビルド構成では、ビルドステータスを投稿するために設定済みのコミットステータスパブリッシャーは必要ありません。
Space 接続を使用してプロジェクトを設定すると、TeamCity は Space コミット タブおよび ブランチ タブの 自動化 セクションにビルド関連のコメントを自動的に投稿します。

Commit Status Publisher 機能を手動で設定することもできます。 次の場合は手動セットアップを選択できます。
カスタムの発行者名やスペースプロジェクトキーを設定したい場合。
TeamCity はビルドステータスを自動的に公開できません (たとえば、カスタム構成の JetBrains Space オンプレミスインスタンスを利用している場合に発生することがあります)。
コミットステータスパブリッシャーを手動で設定するには、定義済みの Space のつながりが必要です。 適切な接続がなく、プロジェクトが手動で作成されたか、リポジトリ URL から作成された場合は、 プロジェクト設定 | 接続 に移動して新しい接続を作成してください。
次に、ビルド構成の設定で:
ビルド機能 を開き、 ステータス発行者のコミットビルド機能を追加します。
JetBrains Space パブリッシャーと作成された接続を選択します。
Space でこのサービスに表示される名前を指定します。
設定を保存します。
Perforce ヘリックススウォーム
Perforce の シェルブされたファイルに対する変更でビルドが実行された場合、TeamCity は Perforce Helix Swarm の対応するコードレビューに、そのステータスをコメントとして報告できます。

詳細については、ヘルプ記事 Perforce Helix Swarm との統合 を参照してください。
Gerrit
コミットステータスパブリッシャーは、Gerrit バージョン 2.6+ をサポートしています。 以前の Gerrit バージョンとの統合を構成するには、 サポートにお問い合わせください。
パイプライン実行ステータスを公開
Commit Status Publisher は、設定が簡単で全体的な可観測性の向上という明確なメリットがあるため、最もよく使用されるビルド構成機能の 1 つです。 そのため、この機能は パイプラインにネイティブに統合されています: リポジトリ設定で ステータスをリポジトリに公開 トグルを有効にすると、残りは TeamCity が処理します。

VCS チェックアウトルールでのコミットステータスパブリッシャーの使用
ビルドの VCS ルートに チェックアウトルールが設定されている場合、コミットステータスパブリッシャーはこれらのルールに準拠するコミットのみを考慮します。 つまり、ビルド開始前に作成された最後のコミットがチェックアウトルールを満たさない場合、そのコミットにはビルドステータスのラベルは付けられません。代わりに、ステータスは条件を満たす最後のコミットの横に表示されます。
ビルドの最後のコミットの横にビルドステータスを表示する必要がある場合(プルリクエストなど)、このコミットが VCS ルートのスコープに含まれるようにチェックアウトルールを調整できます。 または、これが繰り返し発生する問題である場合は、ビルドチェーンを次のように再配置することを検討してください。
チェックアウトルールを使用してメインビルドを構成します。
ビルド手順とチェックアウトルールを使用せずに、ステータスパブリッシャーのコミット機能を使用してユーティリティ複合ビルドを構成します。
複合ビルドで、メインビルド へのスナップショットの依存関係を構成します。
このようなチェーンの範囲では、コミットステータスパブリッシャーはチェックアウトルールに拘束されず、ビルドステータスは最後のコミットの横に表示されます。
Kotlin DSL
Kotlin DSL で、コミットステータスパブリッシャーを設定するには、 buildType インスタンスの 機能 ブロック内にある jetbrains.buildServer.configs.kotlin.buildFeatures.CommitStatusPublisher オブジェクトを構成します。
詳細については、こちらのリンクを参照してください: CommitStatusPublisher | Kotlin DSL ドキュメント(英語)。
トラブルシューティング
TeamCity は、コミットステータスパブリッシャービルド機能に関連する イベントを teamcity-コミット-ステータス.ログ ファイルに書き込みます。 「debug-commit-status」プリセットを適用して、DEBUG レベルのイベントをこのログに含めます。
サンプル
以下の例では、プルリクエストに含まれる変更を含むビルドのステータスを TeamCity から GitHub に送信するように構成する方法を示します。
プルリクエストビルド機能を使用して、プルリクエストブランチを構成します。 または、VCS ルートで ブランチ仕様を構成し、プルリクエストブランチが含まれていることを確認することで、ブランチを利用できるようにすることもできます (関連する ブログ投稿(英語)も参照してください)。
Commit StatusPublisher ビルド機能を 追加します。
デフォルトの 接続されているすべての VCS ルート オプションを使用して、接続されているすべての VCS ルートのコミットのステータスを公開します
パブリッシャーとして GitHub を選択し、接続の詳細と資格情報を指定して、接続をテストします。

設定を保存してください。
ソースコードへの変更をコミットして GitHub でプルリクエストを作成し、その変更を含むビルドを TeamCity で実行します。 コミットステータスパブリッシャーは、プルリクエストの変更を加えたビルドのステータスを通知します。
チェックが以下であるかどうかが表示されます。
進行中

失敗した

成功した

コミットステータスにカーソルを合わせると、ビルドの概要が表示されます
ビルドステータスアイコンまたは 詳細リンクをクリックすると、TeamCity の ビルド結果ページが開きます。 この情報は、プルリクエスト詳細の コミット タブでも利用できます。
前のページと同様に、ビルドステータスアイコンをクリックすると、TeamCity UI の ビルド結果ページが開きます: