パブリッシュをマイグレートする

Toolkit v0.14 を使用してパブリッシュをマイグレートする

このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。 詳細については、『Shotgun 統合管理者ガイド』を参照してください。 古い Toolkit インストール(2013 年 6 月以前のセットアップ)を実行している場合は、現在では廃止された従来の方法でパブリッシュを作成および管理することができます。 このドキュメントでは、そのようなインストールを最新のベスト プラクティスに一致するようアップグレードする方法について説明します。

はじめに

コア リリース v0.14 では、パブリッシュに使用する Shotgun エンティティに対して、これまで長らく議論されてきた変更が加えられました。 議論は Shotgun におけるバージョンの複数の表示方法のサポートに関する shotgun-dev リスト スレッドから始まりましたが、レビュー コンテンツとパブリッシュ データの関係にまですぐに広がりました。 現在はコミュニティ公認の設計にまで進んでいます。最初のステップは、Screening Room での今後の開発の基礎となるよう、共通する一般的なパブリッシュ エンティティとフィールド リンクを標準とすることです。

また、v0.14 リリースは、公開ベータ版に向けた Tank の製品名変更とも一致しています。 今後、Tank は Shotgun Pipeline Toolkit (Sgtk)の作業用の名前と見なされ、エンティティに対する Tank 固有の名前付けは今後行われなくなります。

始めから v0.14 を使用する新しいクライアントは、新しいエンティティをそのように扱います。 既存のパブリッシュ データを持つ既存のクライアントの場合、コア リリース v0.14 で、クライアントが古いエンティティから新しいエンティティにデータを安全に転送できるようにするマイグレーション ユーティリティを利用できます。 このドキュメントでは、マイグレーションの詳細な内容と、切り替えの際に利用可能なすべてのオプションについて説明します。

新しいエンティティ

Tank は 3 つのエンティティを使用します。いずれもプロジェクト固有です。

  • TankPublishedFile
  • TankType
  • TankDependency

これらの 3 つのエンティティは、Sgtk で使用する、新しい 3 つの共通する一般的なエンティティに置き換わります。

  • PublishedFile
  • PublishedFileType
  • PublishedFileDependency

ただし、PublishedFileType はプロジェクト固有ではなくなります。どのプロジェクトでも使用できるグローバルな一連のタイプが用意されます(基本的にはパイプライン ステップと同じコンセプトです)。 すべての PublishedFileTypes をすべてのプロジェクトで使用する必要はありませんが、複数またはすべてのプロジェクトで同じタイプのレコードを複製する必要はなくなり、同じレコードを再利用できるようになります。

詳細については、shotgun-dev リスト スレッドの承認済み設計ドキュメントを参照してください。新しいエンティティ構造と関係すべてについて説明しています。

マイグレーションの概要

ここではマイグレーションの実行内容について説明します。

  • 各 TankType については、同じ「code」フィールドを含む PublishedFileType がまだ存在していない場合は、PublishedFileType を作成し、サムネイルを含むすべてのフィールド メタデータを保存します。
  • 各 TankPublishedFile については、PublishedFile を作成し、サムネイルを含むすべてのフィールド メタデータを保存します。
  • 各 TankDependency については、PublishedFileDependency を作成し、適切な PublishedFile レコードにリンクします。
  • 今後新しいエンティティを使用できるように設定した、既存の PipelineConfiguration を変換します。

スムーズに移行できるようにあらゆる対策を取ります。制作を新しいエンティティに切り替える前にマイグレーションをテストするために、管理者が活用できるさまざまなオプションがあります。 従来の「Tank」エンティティは当面変わりませんが、最終的には廃止されます。 制作上の制約を考慮し、クライアントはできるだけ早く新しいエンティティにマイグレートすることをお勧めします。

また、同一のデータ セットを使用してマイグレーションを安全に何回も実行できます。 マイグレーションでは、既に変換した内容が「記憶され」、新しいレコードのみが選択されます。 これはテスト目的の場合に役立ちます。 詳細については後で説明します。

新しいエンティティを有効にする

マイグレーションの実行準備が完了したら、最初に Shotgun のサイト設定項目で新しい 3 つのエンティティを有効にします。

マイグレーション ユーティリティを実行する

マイグレーションを実行するには、新しい「migrate_published_file_entities」ユーティリティを使用します。

> tank migrate_published_file_entities

全社レベルでコマンドを実行する場合は、次のようにすべてのプロジェクトがマイグレートされます。:

> /tank_demo/studio/tank migrate_published_file_entities

特定のプロジェクト コンテキスト内でコマンドを実行する場合は、次のようにこのプロジェクトのみがマイグレートされます。:

> tank_demo/ghosts/tank/tank migrate_published_file_entities

マイグレーション ユーティリティは、新しいユーティリティが有効であることを確認し、次のように処理するレコード数を計算します。:

NOTE
----
Found 371 entities to migrate

Would you like to continue with the migration? [Yes]/No:

Shotgun スキーマを検証する

マイグレーションでチェックされる初期検証の最後のステップは、各エンティティのスキーマです。メタデータを転送できるように、従来のエンティティのフィールドが新しいエンティティに存在していることを確認します。

従来のエンティティのフィールドはないがマイグレートはする場合は、新しいエンティティにフィールドを作成します。 選択を有効にするには、マイグレーション時に同じフィールド名を指定する必要があります。 また、フィールド間でエンティティやその他の制限事項も同じである必要があります。

Status フィールドの特記事項

Status フィールドの許容値を変更するのは非常に一般的であるため、新しいエンティティで正しく設定されているか、従来のエンティティの許容値と一致しているかを確認します。

エンジン/アプリケーションの更新

新しいエンティティを使用するパイプライン構成の設定を把握するために、ほとんどすべてのエンジンとアプリケーションで新しいエンティティの更新が必要になります。 そのため、まだ更新していない場合は、マイグレーションで更新するように求められます。 プロジェクトでマイグレーションを実行する場合、マイグレーションの一部として更新を直接実行できます。

クリックするとこのステップの出力例が表示されます

Update apps before migration?
-----------------------------
It is recommended that you update all of the apps in your Pipeline
Configurations before migrating entities to ensure they are ready to support
the new 'PublishedFile' entity types.

Would you like to update all apps now? [Yes]/No:

すべてのプロジェクトでマイグレーションを実行する場合、ユーティリティにマイグレーションを終了するためのオプションが表示されるため、「Tank の更新」を各プロジェクトで実行できます(このユーティリティを実行できるのはプロジェクトごとのため)。

マイグレーションを開始する

エンジンとアプリケーションを更新すると、実際のマイグレーションを実行する準備が完了します。 上記の順序を順守して、最初に TankTypes を PublishedFileTypes にマイグレートしてから、TankPublishedFiles と PublishedFiles に移ります。

このマイグレーションには、時間がかかる場合があります。 たとえば、約 400 件のレコードのマイグレーションには 2 分かかりました。1 秒あたり 3 ~ 4 レコードという計算です。 マイグレーションのパフォーマンス上最大のボトルネックはサムネイルです。これは、サムネイルを古いレコードから新しいレコードに個別に転送する必要があるためです。 帯域幅も、特にサムネイルに対しては同様に関与するため、必要に応じて時間を確保してください。

クリックするとこのステップの出力例が表示されます

----------------------------------------------------------------------------
                           STARTING THE MIGRATION
----------------------------------------------------------------------------

Step 1. Migrating entities of type 'TankType'
---------------------------------------------
  Migrating entities...
  [####################] 100% - 1-24 of 24 'TankType' entities
  Updating internal entity links...
  Updating external links from other entity types...

Step 2. Migrating entities of type 'TankPublishedFile'
------------------------------------------------------

  Migrating entities...
  [####################] 100% - 301-347 of 347 'TankPublishedFile' entities
  Updating internal entity links...
  Updating external links from other entity types...
  [####################] 100% - 201-216 of 216 'Note' entities
  [####################] 100% - 51-70 of 70 'Version' entities

All entities migrated successfully.

パイプライン構成を更新する

マイグレーションの最後のステップは、プロジェクトのパイプライン構成を更新し、使用するエンティティを指定する設定を切り替えることです。 パイプライン構成が変換されていない場合は、マイグレーションが正常に完了しても従来のエンティティが使用され続けます。

マイグレーションでは更新するパイプライン構成を選択できます。 既定ではすべてを設定していますが、テストの場合には任意のエンティティのみを更新することもできるため、新しいエンティティをテストしながら、従来のエンティティで制作を継続することができます。

クリックするとこのステップの出力例が表示されます

Step 3. Updating pipeline configurations
----------------------------------------

In order to fully switch to the new entity types, all Pipeline Configurations
for the 'The Ghosts of Pere Lachaise' project need to be updated.
If you are still testing the migration then you can choose to only update the
current Pipeline Configuration.

Which Pipeline Configurations would you like to update? [All]/Current/None:

Updating pipeline configuration 'Primary' for project 'The Ghosts of Pere
Lachaise' (1 of 1)
 - Updating published entity type in
'/tank_demo/ghosts/tank/config/core/pipeline_configuration.yml'
 - Processing environment file
'/tank_demo/ghosts/tank/config/env/shotgun_tankpublishedfile.yml'

All Pipeline Configurations were updated successfully.

概要

最後に、マイグレーションでは、エラーや省略したステップが通知されます。 たとえば、エンジンとアプリケーションの更新を実行しなかった場合は、そのことが通知されます。 パイプライン構成をすべて更新しなかった場合も、そのことが通知されます 。

クリックするとこのステップの出力例が表示されます

----------------------------------------------------------------------------
                     Migration completed successfully.
----------------------------------------------------------------------------
The next steps you should take are:
1. Run the 'tank updates' command to update your apps - you skipped this step
at the beginning!
2. Update any of your own apps or hooks that explicitly use the old
'TankPublishedFile', 'TankType' or 'TankDependency' entity types
3. Migrate entities for all other projects that have not been migrated yet
4. Ensure everything works as expected.

NOTE
----
You can safely run this migration command again if needed.  It will only
create new entities where they weren't migrated previously, otherwise it will
just update the existing ones.

Finally, if you have any problems with this migration, please contact: support@shotgunsoftware.com

新しいプロジェクト

新しいプロジェクトを開始すると、setup_project ユーティリティは、新しいエンティティが有効になっているか、有効の場合に既定で使用することになっているかどうかを検知します。

管理者がテストする

マイグレーション ユーティリティは、すべてを移行する前にテスト用コンテキストで管理者が実行できるように設計されています。 制作環境またはそれに近い環境で Tank を使用しているクライアントの場合は、テスト マイグレーションを実行することを強くお勧めします。 必ずしも一度にすべてのプロジェクトをマイグレートする必要はありません。 このセクションでは、使用可能ないくつかのオプションについて説明します。

マイグレーションを再実行する

上記の処理は繰り返せます。マイグレーションは複数回実行することができます。 これを念頭に置いて、次のことに注意してください。

  • エラーが発生すると、マイグレーションは進捗と失敗の状況を把握します。このため、既に正常に処理された部分を再び処理する必要はありません。
  • カスタム フィールドが見つからない場合、たとえば、TankPublishedFile にフィールドを追加しているが PublishedFile ではそのフィールドが作成されておらず、さらにマイグレーションでそのステップが省略された場合、一致するフィールドを作成してからマイグレーションを再実行すると、このフィールドのメタデータが転送されます。
  • 進行中のプロジェクトでマイグレーションを実行して、独自(クローン)のパイプライン構成のみを変換すると、テスト時点のすべてのパブリッシュが転送されます。 テスト フェーズ中に従来のエンティティで多くのパブリッシュが作成された場合は、マイグレーションを再実行して、この一時的なレコードを取得し、残りのパイプライン構成を変換します。

パイプライン構成変換を破棄する

マイグレーションを実行した後に問題が発生した場合は、パイプライン構成の設定を取り消して、従来のエンティティに戻すこともできます。 --backout フラグを渡して、処理を戻すことが可能です。

> tank migrate_published_file_entities --backout

このフラグを使用する上で注意すべき 2 つの重要なことがあります。

  • エンティティのマイグレーションは取り消されません。マイグレートしたエンティティは削除されません
  • 新しい PublishedFile エンティティを従来の TankPublishedFile エンティティ タイプに戻すことはできません

このフラグは、他のシェル エンジン コマンドおよびフラグと同じ階層に準拠します。 そのため、独自のパイプライン構成やプロジェクトのすべてのパイプライン構成などを破棄することができます。

仕上げ

マイグレーションに問題がない場合は、最後に従来の Tank エンティティを無効にします。 このエンティティは、Shotgun のサイト設定項目の通常の「Entities」セクションには表示されません。 これは主に、他の目的でこのエンティティを再利用しないようにし、廃止できるようにするためです。 従来の Tank エンティティを無効にするには、「Advanced」セクションに移動し、切り替え設定を探して No に設定します。

最後に、Shotgun のサイト設定項目でエンティティを無効にしてもレイアウトからは削除されないため、従来の TankPublishedFile が表示される詳細ページ タブがある場合は忘れずに削除してください。 詳細ページの Design Mode に移動し、従来のタブを削除して、新しいエンティティ用の新しいタブを作成します。 また、Global Default Layout にも新しいエンティティを設定する必要があります。

フォローする

0 コメント

ログインしてコメントを残してください。