TeamCity 2019.1ヘルプ

バージョン管理でのプロジェクト設定の保存

このページで:

概要

TeamCityを使用すると、プロジェクト設定とバージョン管理リポジトリを双方向で同期できます。サポートされているVCSは、Git、Mercurial、Perforce、Subversion、およびAzure DevOps Server(以前のTFS)です。

XML形式およびKotlin言語(英語)で設定を保存し、kotlinベースのDSLを使用してプログラムで設定を定義できます。

双方向の設定の同期を有効にする場合:

  • Each administrative change made to the project settings in the TeamCity web UI is committed to the version control; the changes are made noting the TeamCity user as the committer.

  • 設定の変更がバージョン管理にコミットされると、TeamCityサーバーはその変更を検出し、その場でプロジェクトに適用します。
    新しくチェックインした設定を適用する前に、特定の制約が適用されます。制約が満たされない場合(つまり、設定が無効な場合)、現在の設定はそのまま残り、エラーがUIに表示されます。無効な設定とは、たとえば、存在しないVCSルートを参照するビルド構成、重複するIDまたは重複する名前などの制約のためにロードできない設定です。

VCSの設定は、リポジトリのルートの .teamcity フォルダーにTeamCityデータディレクトリーと同じ形式で保存されます。

VCSとの設定の同期

デフォルトでは、プロジェクト設定とバージョン管理の同期は無効になっています。

有効にするには、プロジェクト設定 | バージョン対応設定にアクセスしてください。

バージョン設定の有効化/無効化」許可が必要です(システム管理者ロールのデフォルト)。

構成タブを使用して定義する

  • 同期設定が親プロジェクトと同じかどうか。

  • 同期が有効かどうか。
    • 同期が有効になっている場合、ビルドの開始時に使用する設定を定義できます。以下の詳細を参照してください。

  • プロジェクト設定の保存に使用されるVCSルート:ソースコードと同じリポジトリ、または専用のVCSルートのいずれかに設定を保存できます。

プロジェクトの同期を有効にすると、すべてのサブプロジェクトでも有効になります。TeamCityは、SSHキーを除いて、プロジェクト設定に対するすべての変更( ビルド構成テンプレートVCSルートなどの変更を含む)を同期します。

サブプロジェクトのプロジェクトから継承した同期設定をオーバーライドできます。

プロジェクトで同期が有効になるとすぐに、TeamCityはプロジェクトツリー全体(すべてのサブプロジェクトを含むプロジェクト)の選択されたリポジトリで初期コミットを行い、サーバーからの現在の設定を保存します: 特定のプロジェクトの設定が指定されたVCSルート(親プロジェクト設定のVCSルートまたはユーザーが選択したVCSルート)で見つかった場合、TeamCityが必要かどうかを確認する警告が表示されます

  • VCSの設定をTeamCityサーバーの現在のプロジェクト設定で上書きします: または

  • VCSから設定をインポートして、TeamCityサーバーの現在のプロジェクト設定をバージョン管理からの設定に置き換えます。

ビルドに適用する設定の定義

ビルド設定には2つのソースがあります。(1)TeamCityサーバーの現在の設定、つまりサーバーに適用される最新の設定変更(UIまたはVCSルートの .teamcity ディレクトリーへのコミット) (2)ビルド用に選択されたリビジョンのVCSの設定。
したがって、ビルド構成で現在定義されている設定とは異なる設定でビルドを開始することができます。バージョン設定が有効になっているプロジェクトでは、TeamCity にビルドの開始時にどの設定を使用するかを指示できます。
これにより、いくつかの可能性が得られます。

  • TeamCity フィーチャーブランチを使用している場合、バージョン設定に使用されるVCSルートでブランチ仕様を定義できます。TeamCityは、このブランチの設定を使用してブランチでビルドを実行します。

  • .teamcity ディレクトリーで行われた変更を使用して個人用ビルドを開始できます。これらの変更はビルドの動作に影響します。

  • 履歴ビルドを実行すると、TeamCityは選択された変更の瞬間に対応する設定を使用しようとします。それ以外の場合、現在のプロジェクト設定が使用されます。

ビルドを開始する前に、TeamCityは、このビルドの構成を .teamcity/settings ディレクトリーのビルド内部成果物に保管します。これらの構成ファイルを後で調べて、ビルドで実際に使用された設定を理解できます。

ビルド開始時にどの設定を行うかを定義するには、プロジェクト設定 | バージョン対応設定ページを開き、高度なオプションを表示をクリックして、次のオプションのいずれかを選択します。

  • 常に現在の設定を使用する:すべてのビルドは、TeamCityサーバーからの現在のプロジェクト設定を使用します。ブランチ、履歴、および個人ビルドの設定変更は無視されます。ユーザーは、カスタムプロジェクト設定でビルドを実行できません。

  • デフォルトで現在の設定を使用する :ビルドでは、TeamCityサーバーからの最新のプロジェクト設定を使用します。ユーザーは、カスタムビルドダイアログを使用して、古いプロジェクト設定でビルドを実行できます。

  • VCSの設定を使用 :ブランチのビルドおよびVCSの設定を使用する履歴ビルド、ビルド用に計算されたバージョン設定のリビジョンから設定を読み込みます。ユーザーは、IDEから個人用ビルドの構成設定を変更したり、カスタムビルドダイアログを介してTeamCityサーバーで現在のプロジェクト設定でビルドを実行したりできます。
    • 次の設定を変更すると、ビルドに影響します。
      • ビルド番号パターン

      • ビルド・ステップ (ビルドステップのパラメーターとその順序)

      • 構成パラメーターの作成

      • システムプロパティーと環境変数

      • エージェントの要件

      • ビルド機能 (自動マージおよびVCSラベル付けを除く)

      • 故障状態

      • 成果物公開ルール

      • アーティファクトの依存関係

    • 次の設定の変更は無視され、ビルドは影響しないことになります。
      • VCSルートとチェックアウトルール

      • スナップショットの依存関係

      • ビルド・トリガー

      • ビルド構成検出オプション、パーソナルビルドのトリガーの有効化/無効化、ビルド構成タイプなどのビルド構成レベルオプション

安全な設定の保存

VCSの外部にセキュリティデータを保存することをお勧めします。プロジェクト設定 | バージョン対応設定 | 構成ページにはパスワード、APIトークン、その他の安全な設定をVCSの外部に保存するオプションがあります。バージョン管理された設定がプロジェクトで初めて有効になった場合、このオプションはデフォルトで有効になり、すでにVCSに設定を保存しているプロジェクトでは有効になりません。

If this option is enabled, TeamCity stores a random generated IDs in XML configuration files instead of the scrambled passwords. Actual passwords are stored on the disk under the TeamCity Data Directory and are not checked into the version control system.

トークンの生成

TeamCity UIを使用せずにバージョン設定にパスワードを追加する必要がある場合(たとえば、Kotlinベースの DSLを使用して設定を追加する場合)、TeamCityのプロジェクトにパスワードを追加し、設定で使用する対応するトークンを取得します(安全な値のトークンを生成するを選択します) アクションドロップダウンメニュー)。

現時点では、パスワードはプロジェクト階層に継承できません。プロジェクトの設定(VCSルート、OAuth接続、クラウドプロファイル)にパスワードが必要な場合、このパスワード用に生成されたトークンはこのプロジェクトでのみ使用できます。たとえば、生成されたトークンを取得して、サブプロジェクトの同様の設定で使用することはできません。この場合、新しいトークンを生成する必要があります。
ネストされたプロジェクトでセキュアな値を使用する必要がある場合、セキュアな値でパスワードパラメータを追加し、ネストされたプロジェクトでパラメータへの参照を使用することを検討してください。

VCSにセキュリティデータを保存することの意味

バージョンTeamCity 2017.1より前を使用している場合、VCSにセキュリティ設定を保存することの影響を慎重に検討することをお勧めします。

  • VCSの設定を持つプロジェクトまたはビルド構成にパスワードフィールドが定義されている場合、値はVCSにコミットされた設定に表示されます(ただし、スクランブル形式)。
    • プロジェクト設定がソースコードと同じリポジトリに保存されている場合、リポジトリにアクセスできる人は誰でもこれらのスクランブルされたパスワードを見ることができます。

    • プロジェクト設定がソースコードとは別に専用リポジトリに保存され、 ビルドの設定変更を表示するオプションが有効になっている場合、「VCSファイルコンテンツの表示」権限を持つユーザーは、変更差分ビューアーを使用してTeamCity UIのすべての変更を表示できます。

  • VCSを介して任意の方法で設定を変更できるため、TeamCityで構成されたビルド構成のアクセス許可に関係なく、ビルド構成のビルドをトリガーし、ビルド構成の設定を取得できます。

  • 間違った設定や悪意のある設定をコミットすることにより、ユーザーはサーバー全体のパフォーマンスや他のユーザーへのサーバー表示に影響を与える可能性があります。

上記の対応するオプションを使用して、パスワード、APIトークン、およびその他の安全な設定をVCSの外部に保存することをお勧めします。

SSHキーはVCSリポジトリに保存されないことに注意してください。

設定形式

設定形式を選択できます。プロジェクトのバージョン対応設定 | 構成ページで、高度なオプションを表示をクリックします。

TeamCityはプロジェクト設定を保存します:

現在のプロジェクト設定をVCSにコミットする

現在の構成をVCSにコミットする場合(たとえば、以前に誤った構成設定をリポジトリにコミットし、TeamCityがエラーと警告を表示してロードできなかった場合)、バージョン対応設定 | 構成ページでCommit current project settingsオプションを使用できます。

TeamCityがVCSに設定をコミットする場合、TeamCityユーザーをコミッターおよび設定が変更されたプロジェクトとして通知する標準のコミットメッセージを使用します。 teamcity.versionedSettings.commitMessagePrefix=TC Change\n\nなどの teamcity.versionedSettings.commitMessagePrefix 内部プロパティーを介して、TeamCityによってコミットされた各設定変更に固定のカスタムプレフィックスを追加することができます。

変更の表示

TeamCityは設定を同期するだけでなく、バージョン管理の通常の変更と同じ方法でプロジェクト設定の変更を自動的に表示します。影響を受けるビルド構成に対して表示される変更を構成できます。「プロジェクト設定 | バージョン対応設定」ページの「構成」タブで、「高度なオプションを表示」をクリックし、「ビルドの設定変更を表示する」ボックスをオンにします。

デフォルトでは、VCSトリガーはそのような変更を無視します。設定のコミットでビルドトリガーを有効にするには、トリガールールを次の形式で追加します: +:root=Settings_root_id;:*

プロジェクト設定が保存されているVCSルートのすべての変更は、バージョン対応設定ページのバージョン対応設定 | 変更ログタブにリストされます。

TeamCityアップグレード後のバージョン設定の有効化

XML設定ファイルの形式は、TeamCityのバージョンごとに変更され、新しい機能と改善に対応しています。一般的に、形式はバグ修正リリース内で変更されず、マイナー/メジャーリリースで変更されます。TeamCityサーバーをアップグレードすると、TeamCityサーバーの現在の設定が以前の形式から現在の形式に変更されます。

実稼働サーバーをアップグレードする前に、実稼働データを使用してTeamCityテストサーバーをアップグレードするのが一般的な方法です。古いバージョンの本番サーバーで使用される設定のフォーマットを誤って変更することを避けるため、TeamCityのアップグレード後、バージョン設定は無効になり、対応するヘルスアイテムが表示されます。システム管理者には、バージョン設定を有効にする権限があります。有効にすると、現在のTeamCityバージョンの形式で変換された設定がバージョン管理でチェックされます。新しい設定は、VCSルートのデフォルトブランチにコミットされることに注意してください。他のブランチに保存されている設定は手動で更新する必要があります。

よくある質問 (FAQ)

Q.異なるバージョンのTeamCityサーバーから設定を適用できますか?
A.いいえ。TeamCityデータディレクトリーと同様に、設定の形式はTeamCityのバージョンによって異なるためです。

Q.設定はどこに保存されますか?
A.設定は、VCSルート設定リポジトリパスのルートにある .teamcity フォルダーに保存されます。GitおよびMercurialの場合、これは常にリポジトリのルートです。VCSルートで設定されたデフォルトのブランチは、GitMercurialで使用されます。専用のVCSルートを作成して、ブランチ(またはPerforce、Subversion、またはAzure DevOps –以前はTFSの場合はリポジトリパス)を変更できます。

Q. UIの設定に変更した後、ビルドが実行されるまでに遅延があるのはなぜですか?
A. UIを介して設定が変更されると、TeamCityは、VCSへのコミットで変更が完了するのを待ってから、最新の変更でビルドを実行します。

Q.変更の作成者は誰ですか?
A.ユーザーインターフェースを介して設定が変更された場合、GitおよびMercurialでは、UIを介して実際に変更を行ったユーザーに代わってVCSのコミットが実行されます。PerforceおよびAzure DevOps Server(以前のTFS)では、VCSルートで指定されたユーザーの名前が使用されます。Subversionでは、コミットメッセージには、UIを介して実際に変更を行ったTeamCityユーザーのユーザー名も含まれます。


関連事項:

管理者ガイド : Kotlin DSL


関連ページ:

Kotlin DSL

XML形式のバージョン管理で設定を保存することに加えて、TeamCityでは(Kotlin言語に基づいて)DSLに設定を保存できます。バージョン管理に保存されたDSLを使用すると、プログラムで設定を定義できます。Kotlinは静的に型指定されるため、IDEで自動補完機能を自動的に受け取り、利用可能な...

TeamCityデータディレクトリー

TeamCityデータディレクトリーは、TeamCityサーバーが構成設定、ビルド結果、および現在の操作ファイルを保存するために使用するファイルシステム上のディレクトリーです。ディレクトリーはすべての構成設定の主記憶域であり、TeamCityのインストールに不可欠なデータを保持しています。ビルド履歴...

ビルド構成テンプレート

概要、ビルド構成テンプレートを作成する、プロジェクト用のデフォルトテンプレートの定義関連設定の変更、ビルド構成をテンプレートに関連付けるビルド構成を複数のテンプレートに関連付ける関連設定の変更、、テンプレートからビルド構成をデタッチする、テンプレートから継承した設定の再定義パラメータ参照を使用する設...

機能ブランチを使用した作業

分散バージョン管理システム(DVCS)のフィーチャーブランチを使用すると、メインの開発とは独立してフィーチャーを操作し、フィーチャーのすべての変更をブランチにコミットして、フィーチャーが完了したときにメインブランチに変更をマージできます。このアプローチは、ソフトウェア開発チームに多くの利点をもたらし...

差分ビューアー

TeamCity差分ビューアーを使用すると、ソース管理で変更されたファイルの2つのバージョン間の違いを確認し、これらの違いをナビゲートできます。ビューアーには、TeamCity UIの変更リストが表示されるほぼすべての場所(プロジェクトページ、ビルド構成ホームページ、ビルド結果ページの変更タブなど)...