View a markdown version of this page

任务包的作业模板元素 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

任务包的作业模板元素

作业模板定义了运行时环境和作为 Deadline Cloud 作业的一部分运行的进程。你可以在模板中创建参数,这样它就可以用来创建只在输入值上不同的作业,就像编程语言中的函数一样。

当您向 Deadline Cloud 提交任务时,它将在应用于该队列的任何队列环境中运行。队列环境是使用开放作业描述 (OpenJD) 外部环境规范构建的。有关详细信息,请参阅 OpenJD GitHub 存储库中的环境模板。

有关使用 OpenJD 作业模板创建任务的简介,请参阅在 OpenJD GitHub 存储库中创建任务简介。更多信息可以在作业运行方式中找到。在 OpenJD GitHub 存储库的samples目录中有作业模板示例。

您可以使用 YAML 格式 (template.yaml) 或 JSON 格式 (template.json) 定义作业模板。本节中的示例以 YAML 格式显示。

例如,该blender_render示例的作业模板将输入参数定义BlenderSceneFile为文件路径:

- name: BlenderSceneFile type: PATH objectType: FILE dataFlow: IN userInterface: control: CHOOSE_INPUT_FILE label: Blender Scene File groupLabel: Render Parameters fileFilters: - label: Blender Scene Files patterns: ["*.blend"] - label: All Files patterns: ["*"] description: > Choose the Blender scene file to render. Use the 'Job Attachments' tab to add textures and other files that the job needs.

userInterface属性定义了使用命令的命令行和 Autodesk Maya 等应用程序的作业提交插件中自动生成的用户界面的行为。deadline bundle gui-submit

gui-submit命令会打开一个提交对话框,其中包含作业名称、优先级和目标队列的共享作业Job-specific 设置选项卡,以及根据作业模板中的参数定义生成的设置选项卡。

作业提交对话框显示共享作业设置选项卡,其中包含作业名称、优先级以及农场和队列字段。

在此示例中,用于输入BlenderSceneFile参数值的 UI 控件是一个仅显示文件的文件选择对话框。.blend

一个用户界面控件,用于输入 OpenJD 作业模板的场景文件参数。

有关使用该userInteface元素的更多示例,请参阅截止日期云样本存储库中的 gui_control_showcase 示例。https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline GitHub

objectTypedataFlow属性控制您从作业包提交作业时作业附件的行为。在这种情况下,objectType: FILEdataFlow:IN表示的值BlenderSceneFile是工作附件的输入文件。

相比之下,OutputDir参数的定义有 objectType: DIRECTORYdataFlow: OUT

- name: OutputDir type: PATH objectType: DIRECTORY dataFlow: OUT userInterface: control: CHOOSE_DIRECTORY label: Output Directory groupLabel: Render Parameters default: "./output" description: Choose the render output directory.

作业附件使用该OutputDir参数的值作为作业写入输出文件的目录。

当您提交捆绑包时,提交对话框的 “作业附件” 选项卡会列出它从这些属性中检测到的输入文件和目录,以及作业写入的输出目录。以斜体显示的路径是自动检测到的;您可以添加提交者未找到的其他路径。

提交对话框的 “作业附件” 选项卡,列出检测到的输入文件、输入目录和输出目录。

有关objectTypedataFlow属性的更多信息,请参阅 Open Job 描述规范JobPathParameterDefinition中的

blender_render作业模板示例的其余部分将作业的工作流程定义为单个步骤,动画中的每一帧都作为单独的任务进行渲染:

steps: - name: RenderBlender parameterSpace: taskParameterDefinitions: - name: Frame type: INT range: "{{Param.Frames}}" script: actions: onRun: command: bash # Note: {{Task.File.Run}} is a variable that expands to the filename on the worker host's # disk where the contents of the 'Run' embedded file, below, is written. args: ['{{Task.File.Run}}'] embeddedFiles: - name: Run type: TEXT data: | # Configure the task to fail if any individual command fails. set -xeuo pipefail mkdir -p '{{Param.OutputDir}}' blender --background '{{Param.BlenderSceneFile}}' \ --render-output '{{Param.OutputDir}}/{{Param.OutputPattern}}' \ --render-format {{Param.Format}} \ --use-extension 1 \ --render-frame {{Task.Param.Frame}}

例如,如果Frames参数的值为1-10,则它定义了 10 个任务。每个任务都有不同的Frame参数值。要运行任务,请执行以下操作:

  1. 例如,嵌入式文件data属性中的所有变量引用均已扩展--render-frame 1

  2. data属性的内容将写入磁盘上会话工作目录中的文件中。

  3. 任务的onRun命令解析为,bash location of embedded file然后运行。

有关嵌入式文件、会话和路径映射位置的更多信息,请参阅 Op en Job Descript ion 规范中的作业运行方式。

d eadline-cloud-samples/job_bundles 存储库中有更多作业模板示例,还有开放作业描述规范中提供的模板示例。