環境設定に Perforce を統合する

環境設定に Perforce を統合する

このドキュメントは、Toolkit を使用してシンプルな Perforce の統合をセットアップするテクニカル ディレクタ(TD)向けの段階的なチュートリアルです。TD がこのチュートリアルを終了すると、Maya、Shotgun、Toolkit、および Perforce 間の完全な統合ワークフローを理解し、Perforce を使用したデータの作成、パブリッシュ、および読み込みを行えるようになります。
このドキュメントは、Toolkit の設定を管理するユーザのみが使用可能な機能について説明します。詳細については、『Shotgun 統合管理者ガイド』を参照してください。

分かりやすく簡潔にするために、ここでは、Maya を使用して Perforce を起動するために必要なものとアセットに対してのみ必要なものについて説明します。ある環境ファイルであるソフトウェアのセットアップ方法を理解したら、すべてのソフトウェアと環境ファイルで設定できるようになります。

Perforce の統合サービスを理解していない場合は、最初に次のページを確認することをお勧めします。

概要

Shotgun と Perforce の統合は 3 つの主要コンポーネントで構成されます。

  1. Shotgun サーバ

  2. Perforce サーバ

  3. Perforce と Shotgun の同期デーモン

同期デーモンは、Perforce サーバ上に作成されるコミットを監視し、コミット メタデータを Shotgun サーバに返します。

Toolkit 側では、ユーザが Perforce で認証できるようにパイプライン設定を変更し、ファイルのチェックインとチェックアウトが適切に行われるようにサーバに p4 コマンドを送信する必要があります。

制限事項

この時点で、Shotgun のユーザの名前は Perforce のユーザの名前と一致する必要があります。これは面倒な制限事項ですが、これにより Shotgun サーバと Perforce から送られてくるデータを同期するデーモンが新しいバージョンをパブリッシュしたユーザを特定できます。将来的にはこの制限事項を見直します。

Perforce コミットをトラックできるように Shotgun を設定する

Shotgun の Web アプリから、ユーザ アイコンをクリックして Site Preferences を選択します。Entities セクションを展開して Revision エンティティを有効にします。これにより、Shotgun が Perforce のコミットをトラックできるようになります。

Perforce と接続できるように Toolkit を設定する

次のセクションでは、Toolkit ベースのパイプラインの展開を既に理解しているものとします。まだ理解していない場合は、最初のプロジェクトの設定方法に関するガイドを確認することをお勧めします。

このセクションを終了すると、Perforce 接続アプリを使用してワークスペースを選択し、Shotgun 同期デーモンに対して Perforce を実行できるようになります。

Perforce に共通する設定、アプリ、フック

複数の環境でいくつかの定型的な環境設定が必要になりますが、複数のファイルに設定をコピーペーストするのは避けたいところです。代わりに、すべての設定を 1 つのファイルに格納し、それを使用するさまざまな環境設定ファイルにこのファイルを追加します。パイプライン設定でファイル config/env/includes/perforce.yml を作成して、次のように貼り付けます。

perforce-framework:
  hook_get_perforce_user: '{self}/get_perforce_user.py'
  hook_get_shotgun_user: '{self}/get_shotgun_user.py'
  hook_load_publish_data: default
  hook_load_review_data: default
  hook_store_publish_data: default
  hook_store_review_data: default
  host: ''
  location: {name: tk-framework-perforce, type: app_store, version: v0.1.15}
  server: tcp:localhost:1666
  server_aliases: []
  server_version: 2015.2
perforce_login:
  connect_on_startup: true
  hook_scene_operation: default
  location: {name: tk-multi-perforce, type: app_store, version: v0.1.2}

これで 1 つのファイルにすべての共通設定をまとめられたため、この環境設定の更新を開始できます。この時点で、Perforce サーバを実行し、Perforce のコンテナにファイルを追加する方法を理解しているものとします。

使用するサーバを設定する

config/env/includes/perforce.yml を開いて、server 設定を見つけ、Perforce サーバのアドレスに設定します。既定値は tcp:localhost:1666 です。

Perforce ワークスペースをセットアップする

Perforce ワークスペースには、プロジェクト ルートのすべてのファイルを含める必要があります。たとえば、プライマリ ローカル ファイル ストレージが Y:\shotgun で、プロジェクト名が big_buck_bunny である場合、ワークスペースには少なくとも y:\shotgun\big_buck_bunny フォルダ全体を含める必要があります。Perforce ワークスペースは Y:\Y:\shotgun にも実際にルート設定できます。

ソフトウェアに Perforce による認証を追加する

1) config/env/project.ymlconfig/env/asset.yml、および config/env/asset_step.yml で、includes セクションに次のコードを追加します。これにより、共通する yaml スニペットを使用できるようになります。

- ./includes/perforce.yml

2) 手順 1 の各ファイルで、engines にある tk-maya セクションを探して、apps セクションの下に次のコードを追加します。これにより、コンテキストに関係なく、Maya の起動後に Perforce で認証できるようになります。

tk-multi-perforce: '@perforce_login'

3) frameworks セクションを探して、次のコードを追加します。これにより、Perforce アプリで Perforce フレームワークを使用できるようになります。

tk-framework-perforce_v0.x.x: '@perforce-framework'

4) ./tank cache_apps を実行して先ほど追加したすべてのツールをダウンロードします。

ここで Maya を起動すると、Perforce へのログインとワークスペースの選択を求めるプロンプトが表示されます。プロンプトが表示されない場合は、上記の手順を確認してください。

Shotgun デーモンに対して Perforce を設定する

Shotgun サーバと Perforce サーバを同期するデーモンをセットアップする必要があります。デーモンの動作方法は、Perforce に登録されるコミットを調査し、Shotgun に個別のパブリッシュを登録するというものです。このデーモンを実行するために、Shotgun サーバ、Perforce サーバ、およびパイプライン設定にアクセスできるコンピュータを探す必要があります。

1) Shotgun プロジェクトのルートで、ファイル tank/config/tank_configs.yml を作成する必要があります。上記の例では Y:\shotgun\big_buck_bunny\tank\config\tank_configs.yml になります。

2) このファイルで、このプロジェクトのパイプライン設定へのパスを指定します。たとえば、パイプライン設定が X:\shotgun\big_buck_bunny\pipeline に格納されている場合は、次のように入力します。

# Be careful to put double backslashes if using backslashes. Otherwise the yaml file reader will try to
# interpret "\s", "\b" and "\p" as single characters.
- win32: "X:\\shotgun\\big_buck_bunny\\pipeline" 
  linux2: "/mnt/shotgun/big_buck_bunny/pipeline"
  darwin: "/mnt/shotgun/big_buck_bunny/pipeline"

従来の Toolkit では、このようなディクショナリは、windowslinux、および darwin を使用しています。これはオートデスク側で対処する必要のあるバグです。

3) Perforce にこのファイルをコミットします。

4) コマンド ラインで次のように入力します。

./tank install_app project tk-shell tk-shell-perforcesync

5) デーモンの実行を指定したコンピュータで、次のコマンドを使用してデーモンを起動します。

./tank --debug sync_perforce_daemon -s 123456 -u <perforce user> -p <perforce password>

6) デーモンの実行にログイン ベースの認証を使用している場合は、デーモンが長時間待機状態になると、セッションがタイムアウトする可能性があります。このため、デーモンの実行にはコマンドラインでスクリプト ベースの認証を使用することをお勧めします。この機能の詳細を確認するには、コマンド ラインで次のコードを入力し、

./tank --help

最初の「一般的なオプションと情報」を確認してください。

--script-name--script-key では、Toolkit Core を v0.17.24 以降にアップグレードする必要があります。

デーモンの現在のステータスを確認するために、引数 --debug を追加することをお勧めします。

Perforce ユーザは、デーモンが正しく動作するように Perforce カウンタを更新できる必要があるため、デーモンよりも Perforce 管理者アカウントを使用するのが最適です。

Perforce サーバに多くのコミットが既に登録されている場合は、同期デーモンがサーバ上のコミットをすべて確認しないように -s を指定して開始することをお勧めします。

Toolkit アプリを設定する

次のセクションでは、Perforce でファイルが何も設定されていない新しいプロジェクトを開始するものとします。Perforce がバージョンをトラッキングするため、バージョン トークンを使用せずにファイルが作成されるように、テンプレートとファイル マネージャ ツール設定を最初に更新します。次に、Perforce へのファイルの送信を開始できるようにパブリッシュ アプリを更新します。最後に、Perforce で該当のファイルを取得できるように Loader アプリ設定を更新します。

Shotgun File Manager アプリを設定する

この時点で、Perforce でサポートされるのは元の Shotgun File Manager のみです。

1) config/core/templates.yml 内で、次のテンプレートを探してバージョン番号を含めないように更新します。

maya_asset_work: '@asset_work_area_maya/{name}.ma'
maya_asset_snapshot: '@asset_work_area_maya/snapshots/{name}.{timestamp}.ma'

2) config/env/project.yml 内の tk-mayaapps セクションで、tk-multi-workfiles 行を tk-multi-workfiles: '@workfiles-launch-at-startup-tk-maya' に更新します。この方法により、他のアプリの設定が影響を受けることはありません。

3) config/env/asset.yml 内で同じ処理を実行します。

4) config/env/includes/common_apps.yml 内で、workfiles-launch-at-startup ブロックをコピーしてその下に貼り付けます。貼り付けたコピーの名前を workfiles-launch-at-startup-tk-maya に変更して、次のように設定を更新します。

workfiles-launch-at-startup-tk-maya:
  hook_filter_publishes: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
  hook_filter_work_files: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/filter_work_files.py'
  hook_scene_operation: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/scene_operation_tk-maya.py'

5) config/env/asset_step.yml 内で、tk-maya セクションの下にある tk-multi-workfiles 設定を探して、次のように設定を更新します。

workfiles-launch-at-startup-tk-maya:
    hook_filter_publishes: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
    hook_filter_work_files: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/filter_work_files.py'
    hook_scene_operation: '{tk-framework-perforce_v0.x.x}/tk-multi-workfiles/scene_operation_tk-maya.py'
    template_publish: maya_asset_work
    template_publish_area: asset_work_area_maya
    template_work: maya_asset_work
    template_work_area: asset_work_area_maya

テンプレート設定をよく見ると、作業領域とパブリッシュ領域の両方が同じ場所を示しています。つまり、Perforce ワークフローに従って同じ場所でパブリッシュと作業を行います。

6) 同じファイル内の includesframeworks セクションを project.yml の場合と同じように更新します。

7) tk-multi-snapshot アプリは Perforce ワークフローと互換性がないため、このアプリの設定は削除できます。

すべての機能をテストするには、任意のタスクの新しいシーンを作成するだけです。ファイル名にバージョン番号が含まれないようにしてください。

Publish アプリを設定する

1) config/env/asset_step.yml を開いて、tk-maya エンジンの tk-multi-publish 設定を探し、次の設定を更新します。

tk-multi-publish:
  hook_post_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/post_publish.py'
  hook_primary_pre_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/primary_pre_publish.py'
  hook_primary_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/primary_publish.py'
  hook_scan_scene: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/scan_scene_tk-maya.py'
  hook_secondary_pre_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/secondary_pre_publish_tk-maya.py'
  hook_secondary_publish: '{tk-framework-perforce_v0.x.x}/tk-multi-publish/secondary_publish_tk-maya.py'
  primary_publish_template: null
  secondary_outputs:
  - description: Submit all published files to Perforce
    display_group: Perforce
    display_name: Submit To Perforce
    icon: icons/p4_publish_submit.png
    name: p4_submit
    publish_template: null
    required: false
    scene_item_type: perforce_submit
    selected: true
    tank_type: ''

tk-multi-publish 設定の secondary_outputs セクションで、Toolkit が既定でユーザの代わりにファイルを Perforce にコミットする必要がない場合は、selected 設定を false に変更します。

このテストに Maya 以外のソフトウェアを使用する場合は、以前のフック設定の tk-maya を使用するソフトウェアに置き換えるだけです。3dsmax、Photoshop、Maya 用の Perforce 対応バージョンのパブリッシュ フックについては、ここを参照してください。他のソフトウェアを使用している場合は、ここで独自のバージョンのフックを登録する必要があります。

2) config/core/templates.yml 内で、asset_publish_area_mayamaya_asset_publish は必要ないため、それぞれの行を削除することもできます。

3) このファイルをパイプライン設定の config/icons フォルダにコピーします。このアイコンはパブリッシュ ツールの UI として使用されます。

Perforce へのパブリッシュをテストする準備が完了しました。

  1. Maya を起動します。
  2. File Manager で新しいシーンを作成します。
  3. テスト用にいくつかのジオメトリを追加します。
  4. Shotgun File Manager を使用してシーンを保存します。
  5. Publish アプリを使用してシーンをパブリッシュします。

Perforce 同期ツールの出力に切り替えると、ツールの出力に次のような内容が表示されます。

DEBUG [08:54:41 73.5399723053]: Looking for the next change submitted to 
Perforce...
DEBUG [08:54:41 75.3729343414]:  > Found change {'status': 'submitted',
'fileSize': ['74214'], 'changeType': 'public', 'rev': ['2'], 'client':
'jfboismenu_Jean-Francoiss-MacBook-Pro_1287', 'user': 'jfboismenu', 'time':
'1456148646', 'action': ['edit'], 'path':
'//depot/assets/Character/test/Art/work/maya/*', 'digest':
['2741D8E09CD05C6622E1C8494CBCE14A'], 'type': ['text'], 'depotFile':
['//depot/assets/Character/test/Art/work/maya/scene.v001.ma'], 'change': '4',
'desc': 'Shotgun publish\n'}
DEBUG [08:54:41 75.6020545959]: Checking that change '4' contains files that 
are in the current project... 
Creating Shotgun Revision entity for Perforce change 4
DEBUG [08:54:41 578.094005585]: Successfully created Shotgun Revision entity
14 for Perforce change 4
DEBUG [08:54:41 578.372955322]: Updating the Perforce counter
'tk_perforcesync_project_74' to 4

特に注目すべきなのは Creating Shotgun Revision entity for Perforce change 4Successfully created Shotgun Revision entity14 for Perforce change 4 の行です。ファイルが Shotgun との同期に成功したことを示しています。

Loader アプリを設定する

1) config/env/asset_step.ymltk-multi-loader2 セクションを探して、次のように設定を更新します。

tk-multi-loader2:
    filter_publishes_hook: '{tk-framework-perforce_v0.x.x}/shared/filter_publishes.py'
    actions_hook: '{tk-framework-perforce_v0.x.x}/tk-multi-loader2/tk-maya_actions.py'

これで完了です。シーンにファイルを読み込むことができるようになりました。次のようにテストします。

  1. Maya を起動します。
  2. File Manager で新しいシーンを作成します。
  3. Loader アプリを使用してファイルを参照します。

ファイルが現在のワークスペースにない場合は、サーバからコピーされます。

 
フォローする

0 コメント

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