Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ganchos de presentación
Los enlaces de envío te permiten ejecutar scripts personalizados durante el flujo de trabajo de envío de trabajos de Deadline Cloud. Los Hooks se ejecutan localmente en la estación de trabajo que envía el trabajo, antes de que el trabajo llegue al servicio de Deadline Cloud. Los Hooks no se ejecutan en los trabajadores ni en la AWS nube. Como los ganchos se ejecutan en tu máquina, tienen acceso a los archivos locales, las variables de entorno y los recursos de red disponibles para el usuario que los envía.
Puede usar los ganchos para validar las configuraciones de los trabajos, descubrir recursos adicionales, modificar los parámetros de envío o integrarlos con sistemas externos, como el software de seguimiento de la producción. Para ver otros puntos de integración que se ejecutan en los trabajadores o en la nube, consulte. Ganchos, eventos y puntos de integración para puestos de trabajo
Hay dos formas de configurar los ganchos:
-
Empaquetar ganchos: coloca
hooks.yamluno (ohooks.json) archivo en el directorio de paquetes de tareas contiguotemplate.yaml. Los enlaces de paquete funcionan bien para los flujos de trabajo de CLI en los que el paquete ya existía antes del envío. -
Ganchos de entorno: apuntan la variable de
DEADLINE_HOOKS_DIRentorno a un directorio que contengahooks.yaml. Los ganchos de entorno son útiles para los estudios que desean aplicar enlaces a todos los envíos sin modificar los paquetes de trabajo.
Ambas fuentes pueden estar activas al mismo tiempo. Cuando ambas están presentes, los ganchos de entorno se ejecutan primero y, después, los de agrupamiento.
nota
In-application Los remitentes (DCC), como Maya, Nuke o Blender, utilizan enlaces de entorno únicamente para las fases previas y posteriores al envío. La fase previa a la GUI no se aplica a los remitentes de DCC. Para obtener más información, consulte Pre-GUI ganchos.
Tipos de ganchos
Deadline Cloud admite tres tipos de ganchos que corresponden a diferentes puntos del flujo de trabajo de envío.
Pre-GUI ganchos
Pre-GUI los ganchos se ejecutan antes de que se abra el cuadro de diálogo de envío. Puede utilizar ganchos anteriores a la interfaz gráfica de usuario para las siguientes tareas:
importante
Pre-GUI Los ganchos solo se ejecutan con la interfaz gráfica de usuario independiente submitter (). deadline bundle gui-submit No se ejecutan en los remitentes integrados en la aplicación (DCC), como Maya, Nuke o Blender, ya que esas aplicaciones crean su cuadro de diálogo de envío directamente y no invocan la fase anterior a la GUI. Pre-GUI Los ganchos tampoco se aplican al envío de CLI (deadline bundle submit), que no tiene una fase de GUI. Pre-submission y los ganchos posteriores al envío funcionan en todos los métodos de envío.
-
Pre-populate nombre, descripción y prioridad del trabajo
-
Defina los parámetros predeterminados en función de la escena actual o el contexto de la canalización
-
Consulte los metadatos de las tareas en un sistema de gestión de proyectos
Pre-GUI Los ganchos bloquean la apertura del cuadro de diálogo si fallan (código de salida distinto de cero o tiempo de espera).
Transmite JSON a stdout para modificar el estado inicial del diálogo. El siguiente ejemplo muestra el formato de salida:
import json output = { "name": "My Render - v042", "description": "Submitted via pipeline", "parameters": { "SceneFile": "/resolved/path/to/scene.ma", "OutputPath": "/shots/sh010/renders/", "deadline:priority": 75, "deadline:maxFailedTasksCount": 5, "deadline:maxRetriesPerTask": 3, "deadline:maxWorkerCount": 10, "deadline:targetTaskRunStatus": "READY" } } print(json.dumps(output))
En la siguiente tabla se describen los campos de salida de los enlaces anteriores a la GUI.
| Campo | Tipo | Description (Descripción) |
|---|---|---|
|
Cadena |
Pre-fills el campo de nombre del trabajo. |
|
Cadena |
Pre-fills el campo de descripción del puesto. |
|
Objeto |
Pre-fills valores de parámetros por nombre. Los parámetros de la plantilla de trabajo utilizan su nombre directamente. Las propiedades de los trabajos compartidos utilizan el |
En la siguiente tabla se describen las propiedades del trabajo compartido que se pueden establecer con el deadline: prefijo del parameters objeto.
| Key | Tipo | Description (Descripción) |
|---|---|---|
|
Entero |
Prioridad (0—100). |
|
Entero |
Número máximo de tareas fallidas antes de que el trabajo falle. |
|
Entero |
Número máximo de reintentos por tarea fallida. |
|
Entero |
Número máximo de trabajadores simultáneos. |
|
Cadena |
Estado inicial de la tarea: |
nota
CLI-supplied --parameterlos valores tienen prioridad sobre los proporcionados por Hookparameters.
Pre-submission ganchos
Pre-submission los ganchos se ejecutan antes de procesar y cargar los archivos adjuntos de los trabajos. Puedes usar los ganchos previos al envío para las siguientes tareas:
-
Valide la configuración del trabajo
-
Descubra y añada archivos de entrada adicionales
-
Modifique los parámetros del trabajo, como la prioridad
-
Aplica las políticas del estudio
Pre-submission Los ganchos bloquean el envío si fallan (código de salida distinto de cero o tiempo de espera).
Transfiera JSON a stdout para modificar el envío. La salida del enlace reemplaza las referencias a los activos en el nivel de clave anidada. Si sus salidas de ganchoinputFilenames, la salida de gancho reemplazará a toda la inputFilenames lista. Deadline Cloud conserva las claves que no incluyes en tu salida.
En el siguiente ejemplo, se añaden los archivos de textura descubiertos al envío:
import json import os import sys metadata = json.load(sys.stdin) bundle_dir = metadata["jobBundleDir"] textures = [] for root, _, files in os.walk(bundle_dir): for f in files: if f.endswith(('.exr', '.png', '.jpg', '.tx')): textures.append(os.path.join(root, f)) if textures: print(json.dumps({ "attachments": { "assetReferences": { "inputFilenames": textures } } }))
Pre-submission Los ganchos también pueden modificar los valores de los parámetros de la plantilla de trabajo emitiendo un parameters mapa en formato stdout:
print(json.dumps({"parameters": {"SceneFile": "/resolved/scene.ma", "Quality": "high"}}))
Las claves de parámetros son nombres de parámetros de plantillas de trabajos. Los valores de un gancho se aplican sobre los valores de los parámetros del paquete, pero los CLI-supplied --parameter valores siguen teniendo prioridad sobre los valores proporcionados por el gancho.
importante
PATHlos parámetros emitidos en la salida estándar deben ser absolutos. Un enlace no se ejecuta desde el directorio de trabajo del shell de envío, por lo que un PATH valor relativo en la salida estándar es ambiguo y se rechaza con un error. Emite una ruta absoluta (por ejemplo, join withDEADLINE_JOB_BUNDLE_DIR) o escribe el valor parameter_values.json enparameter_values.yaml/en el disco, donde un relativo PATH se resuelve en el directorio del paquete de tareas.
Post-submission ganchos
Post-submission los ganchos se ejecutan después de que la llamada a la CreateJob API se devuelva correctamente. El trabajo ha sido aceptado por Deadline Cloud en este momento. Puedes usar los ganchos posteriores a la presentación para las siguientes tareas:
-
Envía notificaciones (Slack, correo electrónico)
-
Actualice los sistemas de seguimiento
-
Detalles del envío del registro
Post-submission Los errores de enlace se registran como advertencias, pero no afectan al trabajo enviado.
Configure los ganchos de envío
Defina los ganchos en un hooks.json archivo hooks.yaml o. Coloque el archivo en el directorio del paquete de tareas al lado template.yaml o en el directorio especificado porDEADLINE_HOOKS_DIR. Si ambos formatos se encuentran en el mismo directorio, el remitente informa de un error.
El version campo es obligatorio y debe serlo. "1.0"
El siguiente ejemplo muestra una hooks.yaml configuración:
version: "1.0" preGUI: - command: python3 args: [scripts/prefill_from_shotgrid.py] timeout: 10 preSubmission: - command: python3 args: [scripts/validate_assets.py] timeout: 60 env: VALIDATION_LEVEL: strict - command: python3 args: [scripts/discover_textures.py] postSubmission: - command: python3 args: [scripts/notify_slack.py] timeout: 15 env: SLACK_WEBHOOK: https://hooks.slack.com/...
Campos de definición de ganchos
Cada entrada de gancho acepta los siguientes campos.
| Campo | Obligatorio | Predeterminado | Description (Descripción) |
|---|---|---|---|
|
Sí |
– |
Ejecutable o intérprete (por ejemplo, |
|
No |
|
Command-line argumentos. |
|
No |
|
Tiempo máximo de ejecución en segundos. |
|
No |
|
Variables de entorno adicionales. Los ganchos heredan el entorno completo del remitente. Las |
Resolución de la ruta de acceso
Los scripts de ganchos se resuelven de acuerdo con las siguientes reglas:
-
Rutas absolutas: se utilizan tal cual.
-
Rutas relativas: se resolvieron en relación con el directorio del paquete de tareas.
-
Nombres de comandos: se buscan en la ruta del sistema.
Entrada de gancho
Los Hooks reciben los metadatos del trabajo a través de JSON en stdin y a través de variables de entorno prácticas.
Variables de entorno
Las siguientes variables de entorno están disponibles para todos los ganchos.
| Variable | Description (Descripción) |
|---|---|
|
Nombre del trabajo. |
|
Job prioritario. |
|
ID de granja. |
|
ID de cola. |
|
Ruta al directorio del paquete de trabajos. |
|
ID del perfil de almacenamiento (si está establecido). |
|
Job ID (solo los ganchos posteriores al envío). |
JSON en stdin
Los metadatos completos se proporcionan como JSON en stdin. En el siguiente ejemplo, se muestra la estructura:
{ "jobName": "My Render Job", "priority": 50, "farmId": "farm-abc123", "queueId": "queue-def456", "jobBundleDir": "/path/to/bundle", "parameters": {"SceneFile": "/path/to/scene.ma"}, "submitterName": "Maya", "assetReferences": { "inputFilenames": ["/path/to/texture.exr"], "inputDirectories": [], "outputDirectories": ["/path/to/output"], "referencedPaths": [] }, "submissionPayload": {} }
Seguridad
Los ganchos están deshabilitados de forma predeterminada. Cada fuente de ganchos tiene su propia configuración que debes activar.
Habilitar paquetes de ganchos
Para permitir que los ganchos estén definidos hooks.yaml en los paquetes de trabajos, habilite la configuración de los ganchos de paquete.
Para activar los ganchos de paquete
-
Use el siguiente comando:
deadline config set settings.allow_bundle_hooks true
Habilitar los ganchos del entorno
Para permitir los enlaces desde un directorio especificado porDEADLINE_HOOKS_DIR, habilite la configuración de ganchos del entorno y establezca la ruta del directorio.
Para habilitar los ganchos de entorno
-
Habilite la configuración:
deadline config set settings.allow_environment_hooks true -
Configure la variable de entorno, normalmente en un script de inicio de aplicaciones:
export DEADLINE_HOOKS_DIR=/studio/pipeline/hooks/blender
Pregunta de confirmación
Al habilitar los enlaces, el remitente le pide que los confirme antes de que se ejecuten los enlaces. Pre-GUI Los ganchos muestran el mensaje antes de que se abra el cuadro de diálogo. Pre-submission y los ganchos posteriores al envío muestran el mensaje al seleccionar Enviar.
El mensaje muestra qué comandos se ejecutarán, lo que te permitirá revisarlos antes de continuar:
This job bundle contains submission hooks that will execute on your machine: Pre-GUI hooks: [1] python3 prefill_from_shotgrid.py Pre-submission hooks: [1] python3 validate_assets.py Post-submission hooks: [1] python3 notify.py Bundle: /path/to/bundle Do you want to run these hooks? [Y/n]
Para omitir las solicitudes de confirmación de los CI/automation flujos de trabajo, ejecute el siguiente comando:
deadline config set settings.auto_accept true
Resumen de los ajustes de configuración
| Opción | Predeterminado | Description (Descripción) |
|---|---|---|
|
|
Especifica si se permiten los enlaces desde el |
|
|
Especifica si se permiten los ganchos del |
|
|
Especifica si se deben omitir las solicitudes de confirmación. Úselo con precaución en CI/automation entornos. |
Implementación en estudio
Los directores técnicos de Pipeline pueden configurar los enlaces para que se ejecuten automáticamente para todos los artistas mediante la implementación de enlaces de entorno en todas las estaciones de trabajo. Utilice este procedimiento cuando su estudio tenga una ubicación de red compartida para los scripts de enlaces y tenga acceso administrativo para configurar las estaciones de trabajo de los artistas.
Para implementar enlaces de entorno para un estudio
-
Configure las estaciones de trabajo para permitir los enganches del entorno:
deadline config set settings.allow_environment_hooks true -
Establecido
DEADLINE_HOOKS_DIRen el script de inicio de cada aplicación:# blender_launcher.sh export DEADLINE_HOOKS_DIR=/studio/pipeline/hooks/blender exec blender "$@" -
Crea los ganchos en la ubicación especificada:
/studio/pipeline/hooks/blender/ ├── hooks.yaml └── validate_scene.py
Gestión de errores
Cuando se produce un error en un enlace previo al envío o a la interfaz gráfica de usuario, el resultado del error incluye la siguiente información:
-
¿Qué enlace falló
-
Código de salida
-
salida stdout y stderr
-
Duración del tiempo de espera (si se agotó el tiempo de espera del gancho)
El remitente bloquea el envío hasta que resuelvas el problema. Post-submission Los errores de enlace se registran como advertencias, pero no afectan al trabajo enviado.
Prácticas recomendadas
-
Mantenga los ganchos rápidos. Establezca los tiempos de espera adecuados y evite operaciones prolongadas en los ganchos.
-
Inicie sesión en stderr. Reserve la salida estándar para la salida de JSON en los enlaces anteriores a la GUI y previos al envío.
-
Maneje los errores con elegancia. Proporcione mensajes de error claros en stderr para que los usuarios puedan identificar qué ha fallado.
-
Pruebe primero con la CLI. El envío de CLI es más fácil de depurar que el envío de GUI.
-
Utilice rutas absolutas en la salida. Al añadir archivos a las referencias de activos, utilice siempre rutas absolutas.
-
Utilice enlaces de entorno para las políticas de todo el estudio. Los ganchos de entorno son más seguros que los de paquetes porque los controla el estudio y no el autor del paquete.
-
Revisa los bundles hooks antes de activarlos. Inspeccione
hooks.yamllos paquetes de fuentes que no sean de confianza antes de permitir que se ejecuten los bundles hooks.
Métodos de envío
Los Hooks funcionan con los siguientes métodos de envío:
-
deadline bundle submit(CLI) Pre-submission y se ejecutan los enlaces posteriores al envío. La CLI no tiene una fase de GUI, por lo que no se aplican los enlaces anteriores a la GUI. -
deadline bundle gui-submit(GUI independiente): se ejecutan todas las fases, incluidos los enlaces anteriores a la GUI. -
In-application (DCC) se ejecutan los remitentes Pre-submission y los enlaces posteriores al envío. Los remitentes del DCC no invocan la fase previa a la GUI.
La GUI independiente copia hooks.yaml en el paquete del historial de trabajos y resuelve las rutas de los scripts para devolverlas al directorio del paquete original.
Recursos adicionales
Para obtener más información sobre los puntos de integración y los temas relacionados, consulte lo siguiente: