TeamCity 2019.2ヘルプ

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

このページで:

概要

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

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

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

  • TeamCity Web UIでプロジェクト設定に加えられた各管理上の変更は、バージョン管理にコミットされます。変更は、TeamCityユーザーをコミッターとして注意して行われます。

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

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

VCSとの設定の同期

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

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

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

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

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

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

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

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

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

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

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

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

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

There are two possible sources of build settings: (1) the current settings on the TeamCity server, that is the latest settings changes applied to the server (either made via the UI, or via a commit into the .teamcity directory in the VCS root), and (2) the settings in the VCS on the revision selected for a build.
Therefore, it is possible to start builds with settings different from those currently defined in the build configuration. For projects where versioned settings are enabled, you can tell TeamCity which settings to take when build starts.
This gives you several possibilities:

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

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

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

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

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

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

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

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

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

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

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

      • エージェントの要件

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

      • 故障状態

      • 成果物公開ルール

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

    • ブランチからの次の設定の変更は無視され、ビルドには影響しません。
      • VCSルートとチェックアウトルール

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

      • ビルド・トリガー

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

      • クリーンアップ規則

安全な設定の保存

It is recommended to store security data outside the VCS. The プロジェクト設定 | バージョン対応設定 | 構成 page has an option to パスワード、APIトークン、その他の安全な設定をVCSの外部に保存します。 By default, this option is enabled if versioned settings are enabled for a project for the first time, and disabled for projects already storing their settings in the VCS.

If this option is enabled, TeamCity stores a randomly generated IDs in XML configuration files instead of the scrambled passwords. Actual passwords are stored on the disk under the TeamCityデータディレクトリー and are not checked into the version control system.

Managing Tokens

If you need to add a password (or other secure value) to the versioned settings not via the TeamCity UI (for example, via Kotlin DSL), you can generate a token to be used in the settings instead of this password.
In the プロジェクト設定 , select 安全な値のトークンを生成する in the アクション drop-down menu. Enter the password and click トークンの生成 . The generated token will be stored on the server. You can copy and use it in the project configuration files instead of the password.

You can also generate new secure tokens on the トークン tab of the project バージョン対応設定 section. The tab is available for projects with the enabled " VCSの外部に安全な値を保存する " option.

The トークン tab allows viewing all the project tokens, including unused tokens.
When secure data of a project is stored outside of the Version Control System, it could potentially be detached from the project: for example, if a project with tokens is moved to another place in the hierarchy or is created from DSL on the new TeamCity server. In such case, you can specify the values for the project tokens on this tab, so the project can continue using them.

Versioned Settings| Tokens

Secure values can be inherited by projects hierarchy. If a setting in a project (VCS root, OAuth connection, cloud profile) requires a password, the token generated for this password can be used in this project and in any of its subprojects. To be able to use the inherited password, the subproject must have versioned settings enabled and store settings in the same VCS, as its parent project.
Alternatively, you can add a password parameter with the secure value and use a reference to the parameter in the nested projects.

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

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

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

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

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

  • By committing wrong or malicious settings, a user can affect the entire server performance or server presentation to other users.

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

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

設定形式

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

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

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

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

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の変更リストが表示されるほぼすべての場所(プロジェクトページ、ビルド構成ホームページ、ビルド結果ページの変更タブなど)...