TeamCity 2020.2 ヘルプ

プロジェクトインポート

すべてのデータとユーザーアカウントを含むプロジェクトをバックアップファイルから既存の TeamCity サーバーにインポートできます。つまり、1 つのサーバーから通常使用されるターゲットサーバーにプロジェクトを追加できます。

プロジェクトのインポートまたはサーバーの移動

プロジェクトのインポートは、他のプロジェクトを含む既存のサーバーにいくつかのプロジェクトを追加する必要がある場合、つまり 2 つのサーバーを 1 つにマージする必要がある場合にのみ使用する必要があります。インポートは中断を伴う操作であり、すべてのデータがインポートされるわけではありません。
別のマシン、使用するすべてのサーバーのデータを移動する必要がある場合サーバー移動

プロジェクトのインポート

ソース TeamCity サーバー上で:

ターゲット TeamCity サーバー上で:

  • サーバー管理エリアにジャンプし、左側のプロジェクトインポートを選択してください。プロジェクト設定をアップロードしてウィザードに従います。インポートが完了すると、TeamCity は結果を表示します。

インポートするプロジェクトを選択する

バックアップファイルを選択したら、どのプロジェクトをインポートするかを指定する必要があります。

TeamCity は選択されたプロジェクトを分析し、それらがインポート、マージ、またはスキップされるかどうかを確認します。

  • プロジェクトがターゲットサーバーにとって新しい場合、プロジェクトはインポートされます。そのすべてのエンティティ(ビルド構成、テンプレート、ビルドなど)とそれらのデータは、ターゲットサーバー上に作成されます。

  • (ソースとターゲットのプロジェクトが同じ UUID としている場合、同じプロジェクトがすでにターゲットサーバー上に存在する場合、プロジェクトがマージされる外部 ID を)。
    マージ中、既存のエンティティはそのまま残り、ターゲットに対して新しいエンティティのみが関連データとともにインポートされます。
    既存のエンティティのデータはインポートまたはマージされません。新しいデータは既存のエンティティに追加されません(たとえば、変更は既存の VCS ルートに追加されません)、既存のファイルは変更されません(たとえば、設定が異なる両方のサーバーに同じテンプレートが存在する場合、ターゲットファイルは保持されます)。
    これは、たとえば、欠落しているビルドを既存のビルド構成にインポートできないことを意味します。不足しているデータを既存のエンティティに追加する必要がある場合、たとえば、インポート済みのビルド構成に新しいビルドをインポートする場合は、UI を使用してこのビルド構成を削除し、プロジェクトを再インポートする必要があります。

  • 競合が発生した場合、プロジェクトはスキップされます。プロジェクトの UUID は新しいが、その外部 ID はターゲットにすでに存在します。または、ソースプロジェクトとターゲットプロジェクトの UUID が同じで、外部 ID が異なる場合。

インポート範囲の定義

インポート範囲を選択できます。プロジェクト設定、ビルドおよび変更履歴、ユーザーアカウントから選択するか、それらすべてをインポートします。インポートされたプロジェクトはその親からの設定も使用できるため、TeamCity はすべての vcs のルート、テンプレート、メタランナーおよび親プロジェクトのための他のプロジェクト関連の設定もインポートします。同じプロジェクトがターゲットサーバーに既に存在する場合、既存のオブジェクトは上書きされません。

設定ファイルのインポート

インポートまたはマージされたプロジェクトごとに、構成ファイルはターゲットサーバーのデータディレクトリにインポートされます(ターゲット用に新しい場合)。既存のファイルは変更されません。

以下のファイルがインポートされます。

  • プロジェクトのビルド設定、テンプレート、VCS ルート、サブプロジェクトを含む設定 xml ファイル。

  • <TeamCity データディレクトリ > / plugins ディレクトリからのすべてのファイル。

  • 新しく追加されたビルド構成用のビルド番号ファイル。

ユーザーとグループのインポート

インポートするユーザーが選択されると、TeamCity はユーザー名を分析して、ユーザーがインポートまたはマージされるかどうかを確認します。

TeamCity ユーザーは固有のユーザー名を持っていなければなりません。

  • ターゲットサーバーのユーザー名が新しいユーザーアカウントがインポートされます。このようなユーザーは、ターゲットサーバーの Imported <Import DateTime> とマークれた別のグループに表示さます。すべての関連データ(個人用ビルド、変更、テストミュート、調査)は、ターゲットサーバー上に作成されます。ユーザーアカウント設定(ロール、権限、VCS 名、通知設定など:システム全体の設定およびインポートされたプロジェクトに関連する設定)は、インポート中に保持されます。

  • ソースサーバーとターゲットサーバーで同じユーザー名を持つユーザーアカウントをマージできます。マージ中、既存のデータはそのまま残り、ターゲットの新しいデータのみが追加されます:すべての新しいユーザー関連データ(個人用ビルド、変更、テストミュート、調査)とユーザーアカウント設定(ロール、権限、VCS 名)、通知設定など:システム全体の設定およびインポートされたプロジェクトに関連する設定)がターゲットサーバーのユーザーに追加されます。
    (!)同じユーザー名がソースサーバーとターゲットサーバーの異なるユーザーに属している場合、マージによって問題が発生する可能性があります。インポート中に、ユーザー情報はマージされます。
    ターゲットに対するユーザー権限の範囲は、インポート後に変更される可能性があることに注意してください。例:

    • ユーザーがソースに対してシステム管理者のロールを持っている場合、このロールはインポート後にターゲットのユーザーに追加されます。

    • ユーザーがソース上の複数のプロジェクトで複数のロールを持っている場合は、インポート範囲内のプロジェクトの新しいロールのみがターゲットに追加されます。

    プロジェクトのインポートページ | import スコープセクション | ユーザーは競合の数を表示し、それらを見ることができ、マージしたいかどうか決定します。

    TeamCity は、両方のサーバーで同じユーザー名と異なるメールを持つユーザー、および同じユーザー名と同じメールを持つユーザーの数を表示します。サーバーに対してメール検証を有効にすることができ、同じユーザー名とメールを持つユーザーが、自分のメール検証に基づいて比較されます。競合情報を表示して、見つかったユーザーを結合するかどうかを選択できます。確認済みのメールを持つユーザーが、ソースまたはターゲットの TeamCity サーバー、あるいはその両方に存在する場合、このオプションはアクティブです。

ユーザーグループのインポートも同じように機能します。新しいグループはインポートされ、既存のグループはマージできます。

競合が発生した場合(グループはソースとターゲットの両方に存在しますが、グループのロールは異なります)、インポート後にターゲットサーバーのグループに追加のロールが割り当てられることがあります。その結果、ターゲット上のこのグループのメンバーは、追加のロールと権限も取得します。

プロジェクトインポートページ | import スコープセクション | グループは、いくつの競合グループが見つかったかを表示します。同じグループキーを持つすべてのグループを表示して、結合するかどうかを決定できます。「全ユーザー」グループはすべての TeamCity サーバー上のデフォルトグループであるため、常に競合するものとしてリストされていることに注意してください。

競合

TeamCity は、ターゲットサーバー上のエンティティと競合する場合、バックアップファイルからエンティティをインポートしません。インポートの前に、TeamCity はバックアップファイルを分析し、import スコープ設定ページに検出されたすべての競合を表示します。

インポートを続行する前に、すべての競合を解決することを強くお勧めします。未解決の競合は、インポート後に予期しない動作を引き起こす可能性があるためです。例:

  • たとえば、一部の VCS ルートがスキップされたが、それに応じたビルド設定がインポートされた場合、重大なエラーが表示されることがあります。

  • ソースサーバーとターゲットサーバーのテンプレート間で未解決の外部 ID の競合がある場合、インポートされたビルド構成は間違ったテンプレートを参照することがあります。

インポートする前に競合が解決されていない場合は、インポート結果ログの conflictingFiles ディレクトリに競合ファイルが見つかります。

インポートに含まれていないデータ

インポートに関していくつかの制限があります。

  • エージェントとエージェントプールはインポートされません(TW-39797(英語))。

  • 設定は「ファイルごと」にマージされます。基礎。これは、新しいファイルが追加されても、設定ファイルはマージされないことを意味します。例:インポートされるプロジェクトがターゲットサーバーにすでに存在する場合、そのパラメーター、プロジェクト機能、プラグイン設定はマージされません。

  • バージョン設定に安全な値(パスワードや API トークンなど)を VCS の外部に保存するオプションを使用した場合、サーバーにすでに存在するプロジェクトの認証情報はインポートされません。

  • 範囲内でユーザーが選択されている場合にのみ監査レコードがインポートされます。

  • 実行中のビルドとビルドキューはバックアップに含まれずインポートされません。

  • (ビルドの ID のような)内部 ID はインポート中に保存されません。つまり、インポート時にビルド ID が変更されたために新しいサーバーにリダイレクトされても、古いサーバーからのビルド結果ページへの URL は壊れているように見えます。

  • バックアップファイルにはアーティファクトとログが含まれていないため(ビルドログはビルドアーティファクトに格納されます)、これらは自動的にはインポートされませんが、TeamCity はそれらを手動で移動するためのスクリプトを提供します。

  • グローバルサーバー設定(認証スキーム、カスタムロールなど)はインポートされません。

アーティファクトとログの移動

アーティファクトとログはバックアップファイルから直接インポートされませんが、TeamCity ログの projectsImport-<date> ディレクトリから .bat.sh スクリプトを使用して、ソースからターゲットサーバーにコピー / 移動できます。これらのスクリプトは、コマンドラインを介してソースおよびターゲットデータディレクトリを受け入れます。スクリプトは、ソースおよびターゲットアーティファクトディレクトリを受け入れます。残りは自動的に行われます。スクリプトはサーバーの稼働中に実行できます。

TeamCity がインポートされたビルドアーティファクトを表示するのにはしばらく時間がかかるかもしれません。

インポート結果の表示

各インポートプロセスで TeamCity ログに projectsImport-<date> ディレクトリが作成され、インポート結果を表示できます。

このディレクトリには以下が含まれています。

  • マージされたすべてのデータを含む競合するファイルのフォルダー

  • ソースデータベースとターゲットデータベースのフィールドのマッピングを含むマッピング

  • アーティファクトおよびログをコピーするためのスクリプト (のセクションを見てください)

  • インポートレポート、インポートされていないデータに関する情報を含むインポート結果の一覧表示 (もしあれば)