移植发布

使用 Toolkit v0.14 移植发布

本文档介绍仅当控制 Toolkit 配置时可用的功能。有关详细信息,请参见 Shotgun 集成管理员手册。如果您运行的是旧版 Toolkit 安装(2013 年 6 月之前设置),可能您正在以现已弃用的旧方式创建和管理发布。本文档说明如何升级此类安装以符合当前最佳实践。

简介

核心版本 v0.14 推进了一项经过长期讨论并用于发布的 Shotgun 实体变更。起初,这是一个关于在 Shotgun 中支持多种版本表现形式的 Shotgun 开发列表主题,但随后迅速延伸到审核内容和发布数据之间的关系。我们正在推进社区批准的设计,第一步是要实现常见/通用发布实体和字段链接的标准化,为后续审片室开发奠定基础。

此外,v0.14 版本与融入公共 Beta 版的 Tank 产品名称变更同时发生。今后,Tank 将被视为 Shotgun Pipeline Toolkit (Sgtk) 的暂定名称,并且任何实体上的 Tank 特定命名将不会长期保留。

从 v0.14 开始,相关新客户将使用新实体执行此操作。对于拥有现有发布数据的现有客户,核心版本 v0.14 提供的移植实用程序将帮助客户安全地将其数据从旧实体转移到新实体。本文档概述了完成移植所需的确切条件和协调这一转换时可用的所有选项。

新实体

Tank 利用三个实体,这三个实体全部都是项目特定的:

  • TankPublishedFile
  • TankType
  • TankDependency

这三个实体将被替换为三个新的常见/通用等效对象并将由 Sgtk 使用:

  • PublishedFile
  • PublishedFileType
  • PublishedFileDependency

但是,PublishedFileType 不再是项目特定的,并将存在任何项目均可使用的一组全局类型(本质上与工作流步骤是相同的概念)。并非所有 PublishedFileType 需要用于所有项目,但现在不再需要在多个/所有项目中复制同一类型记录,同一记录可重复使用。

有关更多详细信息,请参见此处来自 Shotgun 开发列表主题的批准设计文档,该文档涵盖所有新实体结构和关系:

移植概述

下面概述了移植实际会执行的操作:

  • 对于每个 TankType,如果尚不存在具有相同“code”字段的 PublishedFileType,则创建 PublishedFileType,并保留包括缩略图在内的所有字段元数据。
  • 对于每个 TankPublishedFile,创建 PublishedFile 并保留包括缩略图在内的所有字段元数据。
  • 对于每个 TankDependency,创建 PublishedFileDependency 并将其链接到相应的 PublishedFile 记录。
  • 转换现有带有设置的 PipelineConfiguration 以便今后使用新实体。

我们采取每一个可能的措施以确保顺利转移,还有一些选项可供管理员用来在将生产转换到新实体之前对移植进行测试。原有“Tank”实体将保留在原位,但最终会被弃用。在充分考虑生产约束的情况下,我们鼓励客户尽快移植到新实体。

此外,移植可以在相同的数据集上安全地运行多次。移植会“记住”其已转换内容并仅拾取新记录。在测试上下文中这会很有用。以下介绍了有关这方面的更多详细信息。

启用新实体

当您已准备好运行移植时,请首先通过 Shogun 的站点首选项启用三个新实体:

运行移植实用程序

要运行移植,请使用新的“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 更新”即可在每个项目上运行(因为该实用程序仅能以单一项目为基础运行)。

开始移植

更新插件和应用之后,即可准备运行实际移植!移植过程将按照上面的顺序进行,先将 TankType 移植到 PublishedFileType,然后再移动到 TankPublishedFile/PublishedFile。

请注意,此移植可能需要花费很长的时间。在示例中,移植约 400 份记录需要耗时 2 分钟,即每秒约移植 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

使用此标志要注意两个重要事项:

  • 不会取消实体移植,任何已移植的实体也不会停用。
  • 不会将新的 PublishedFile 实体移植回原有 TankPublishedFile 实体类型。

该标志遵循与其他任何 Shell 插件命令和标志相同的层次结构。因此,您可以选择退出自己的工作流配置、某一项目的所有工作流配置等。

完成

实现满意的移植后,最后一步是禁用原有 Tank 实体。这些实体不出现在 Shotgun 站点首选项的常规“Entities”部分。这主要是为了防止可能将这些实体重用于其他用途,因此我们可以弃用它们!要禁用原有 Tank 实体,请转至“Advanced”部分,找到切换选项并将其设置为否:

最后,请务必删除任何显示原有 TankPublishedFile 的详细信息页面选项卡,因为在 Shotgun 站点首选项中禁用它们不会将其从布局中删除。在详细信息页面上转到设计模式,删除原有选项卡,并为新实体创建新的选项卡。此外,您还希望确保全局默认布局也具有新实体。

关注

0 评论

登录写评论。