プロジェクトのインポート
Projects Import では、バックアップファイルからすべてのデータとユーザーアカウントを含むプロジェクトを既存の TeamCity サーバーに追加し、実質的に二つのサーバーを一つに統合します。
プロジェクトのインポートまたはサーバー移動
インポートはシステムに影響する操作であり、 すべてのデータがインポートされるわけではありません 。そのため、すでに他のプロジェクトをホストしているサーバーにプロジェクトを追加する必要がある場合にのみ使用してください。 サーバーのすべてのデータを別のマシンに移動するには、代わりに サーバーの移動を使用してください。
プロジェクトのインポート
ソースサーバーで、インポートするプロジェクトを含む 通常のバックアップを作成ファイルを作成します。 ソースサーバーとターゲットサーバーの メジャーバージョンは同じである必要があります。
ターゲットサーバーで サーバー管理 | プロジェクトのインポート に移動し、バックアップファイルをアップロードして、ウィザードに従います。 インポートが完了すると、TeamCity に結果が表示されます。
インポートするプロジェクトの選択
バックアップファイルを選択したら、インポートするプロジェクトを選択します。 TeamCity はそれらを分析し、各プロジェクトがインポート、マージ、スキップのどれになるかを報告します。
プロジェクトがターゲットサーバーにとって新しい場合、 インポート済み されます。 そのすべてのエンティティ (ビルド構成、テンプレート、ビルドなど) とそのデータは、ターゲットサーバー上に作成されます。
プロジェクトは マージ済み です。ターゲットサーバーにすでに存在する場合、つまりソースプロジェクトとターゲットプロジェクトが同じ UUID と 外部 ID を共有している場合です。 既存のエンティティはそのまま残り、ターゲットにとって新しいエンティティのみがデータとともにインポートされます。
既存のエンティティのデータはインポートもマージもされません。新しい変更は既存の VCS ルートに追加されず、両方のサーバーに存在するテンプレートはターゲットの設定を保持します。 これは、既存のビルド構成に不足しているビルドをインポートできないことも意味します - これを行うには、UI でこのビルド構成を削除し、そのプロジェクトを再インポートしてください。プロジェクトは スキップ済み です。 競合する状態 が発生した場合です。つまり、その UUID は新しいものの、 外部 ID がターゲットにすでに存在する場合、またはソースプロジェクトとターゲットプロジェクトの UUID が同じで外部 ID が異なる場合です。
インポートスコープの定義
プロジェクト設定、ビルドと変更履歴、ユーザーアカウントを任意の組み合わせでインポートできます。 インポートされたプロジェクトは親の設定を使用できるため、TeamCity は親プロジェクトの VCS ルート、テンプレート、メタランナー、その他のプロジェクト関連設定もインポートします。 ターゲットサーバー上の既存のオブジェクトは上書きされません。
構成ファイルのインポート
インポートまたはマージされた各プロジェクトについて、TeamCity はターゲットサーバーにとって新しい構成ファイルをその データディレクトリにコピーします。 既存のファイルは変更されません。
以下のファイルがインポートされます。
ビルド構成、テンプレート、VCS ルート、およびサブプロジェクトを含むプロジェクトの構成 XML ファイル。
<TeamCity データディレクトリ>/プラグインディレクトリのすべてのファイル。新しく追加されたビルド構成のビルド番号ファイル。
ユーザー、グループ、トークンのインポート
ユーザーアカウント
TeamCity ユーザーには一意のユーザー名が必要です。そのため、ユーザーがインポートスコープ内にある場合、TeamCity はユーザー名を比較して各ユーザーがインポートされるかマージされるかを確認します。 どちらの場合も、ユーザー関連データ (個人ビルド、変更、テストミュート、調査) と ユーザーアカウント設定 - ロール、権限、VCS 名、通知設定など - を、システム全体およびインポートされたプロジェクトに関連するものの両方で転送します。
ユーザー名がターゲットサーバーにとって新しいユーザーは、 インポート済み されます。 このようなユーザーは、ターゲットサーバー上で インポート済み <インポート日時>とマークされた別のグループに表示されます。
ユーザー名が両方のサーバーに存在するユーザーは、 マージ済み できます。 既存のデータはそのまま残り、ターゲットにとって新しいデータのみが追加されます。
マージはユーザー名に基づくため、同じユーザー名が両方のサーバーで別々の人に属している場合でも、その情報はマージされます。 マージによって、ターゲットサーバー上のユーザー権限が拡張されることもあります。ソースサーバーで付与されたシステム管理者ロールはターゲットユーザーに追加されますが、プロジェクトロールはインポートスコープ内のプロジェクトに対してのみ追加されます。
プロジェクトのインポート | インポートスコープ | ユーザー セクションには、見つかった競合する項目の数が表示されるため、それらを確認してマージするかどうかを判断できます。 TeamCity は、両方のサーバーで同じユーザー名だがメールアドレスが異なるユーザーを一覧表示し、ユーザー名とメールアドレスの両方を共有するユーザーを数えます。 メール確認 が有効化されている場合、そのようなユーザーは確認済みメールアドレスに基づいて比較されます。 これらのオプションは、確認済みメールアドレスを持つユーザーがソースサーバー、ターゲットサーバー、またはその両方に存在する場合にのみ有効です。
ユーザーグループ
グループも同じように動作します。新しいグループはインポートされ、既存のグループはマージできます。 競合する状態 が発生した場合 - グループが両方のサーバーに存在するがロールが異なる場合 - インポート後にターゲットグループに追加のロールが付与されることがあり、そのすべてのメンバーにも同様に付与されます。
プロジェクトのインポート | インポートスコープ | グループ セクションには、見つかった競合グループの数が表示されます。 グループキーを共有するすべてのグループを表示し、マージするかどうかを決定できます。 「全ユーザー」グループは、デフォルトで各 TeamCity サーバーに存在するため、常に競合として一覧表示されます。
アクセストークン
ユーザーがインポートスコープに含まれる場合、TeamCity がユーザーの アクセストークン を転送するかどうかは、 トークンスコープ によって決まります:
インポート対象に選択されたプロジェクトに限定されたトークン (プロジェクトごとの制限スコープ) は、デフォルトでインポートされます。 ターゲットサーバーでは、これらのトークンはインポートされたプロジェクトに対してのみ権限を保持します。
その他のプロジェクトに限定されたトークンはインポートされません。 これには次の影響があります:
トークンのスコープがプロジェクト A (インポート済み) とプロジェクト B (インポートされない) に設定されている場合、その権限スコープは A に絞る形になります。
トークンのスコープが複数のプロジェクトに設定されていて、そのいずれもインポートされていない場合、そのトークンはまったくインポートされません。
インポートされたプロジェクトの親プロジェクトにスコープ設定されたトークンは、TeamCity がこの親プロジェクトが子と共有する設定をインポートする場合でもスキップされます。
所有者と同じ権限を付与するトークン (現在のユーザーと同じスコープ) は、明示的な同意がある場合にのみインポートされます。 プロジェクトのインポート | インポートスコープ | ユーザー セクションで対応するチェックボックスを選択してください。 このようなトークンはいずれのプロジェクトにも限定されないため、ターゲットサーバー上では所有者がそこに持つすべての権限を付与します。そのため、デフォルトでは除外されます。
マージされたユーザーの場合、インポートされたトークンは、そのユーザーがターゲットサーバー上ですでに持っているトークンに追加されます。 ユーザーが同じ名前のトークンをすでに持っている場合、一致するインポートされたトークンはスキップされます。
競合する項目
バックアップファイル内のエンティティがターゲットサーバー上のエンティティと競合する場合、TeamCity はそれらをインポートしません。 インポートの前に、TeamCity はバックアップファイルを分析し、検出されたすべての競合する項目を インポートスコープ 構成ページに表示します。
未解決の競合する項目があるとインポート後に予期しない動作につながる可能性があるため、続行する前に 競合する項目をすべて解決することを強くおすすめします ことをおすすめします。 たとえば、依存している VCS ルートがスキップされた場合、ビルド構成で重大なエラーが報告されることがあります。また、ソースサーバーとターゲットサーバーのテンプレートに競合する 外部 IDがあった場合、誤ったテンプレートを参照することがあります。
競合する項目を解決せずにインポートした場合、インポート結果ログの下にある 競合ファイル ディレクトリで競合するファイルを見つけることができます。
インポートに含まれないデータ
インポートには次の制限があります:
エージェントとエージェントプールはインポートされません(TW-39797(英語))。
設定はファイル単位でマージされます。新しいファイルは追加されますが、設定ファイルはマージされません。 たとえば、インポート対象のプロジェクトがターゲットサーバー上にすでに存在する場合、そのパラメーター、プロジェクト機能、プラグイン設定はマージされません。
バージョン付き設定で「セキュアな値 (パスワードや API トークンなど) を VCS の外部に保存する」オプションを使用している場合、サーバー上にすでに存在するプロジェクトの資格情報はインポートされません。
監査レコードは、ユーザーがインポートスコープ内にある場合にのみインポートされます。
実行中のビルドとビルドキューはバックアップに含まれないため、インポートされません。
ビルド ID などの内部 ID は保持されません。 つまり、新しいサーバーにリダイレクトされても、古いサーバーからのビルド結果ページへの URL は壊れているように見えます。
バックアップファイルにはアーティファクトとログは含まれません (ビルドログはビルドアーティファクト配下に保存されます)。そのため、これらは自動的にはインポートされません。 TeamCity は、それらを 手動で移動するためのスクリプトを提供します。
グローバルサーバー設定(認証スキーム、カスタムロールなど)はインポートされません。
ビルドアーティファクトとログは TeamCity Cloud にインポートできません。
アーティファクトとログの移動
アーティファクトとログはバックアップファイルからインポートされませんが、TeamCity ログ配下の プロジェクトインポート-<日付> ディレクトリにある .bat および .sh スクリプトを使用して、ソースからターゲットサーバーへコピーまたは移動できます。 これらのスクリプトは、ソースとターゲットの アーティファクトディレクトリをコマンドライン経由で受け取り、残りは自動的に実行されます。 サーバーの実行中にスクリプトを実行できます。
TeamCity がインポートされたビルドアーティファクトを表示するまでに少し時間がかかる場合があります。
インポート結果の表示
各インポートプロセスは、インポート結果を表示できるように、TeamCity ログ配下に プロジェクトインポート-<日付> ディレクトリを作成します。 このディレクトリには次のものが含まれます:
マージされたすべてのデータを含む
競合ファイルディレクトリソースデータベースとターゲットデータベースのフィールドのマッピング
アーティファクトおよびログをコピーするためのスクリプト (上記のセクションを参照)
インポート結果を一覧表示するインポートレポート。インポートされなかったデータに関する情報 (ある場合) を含みます