Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Crochets de soumission
Les hooks de soumission vous permettent d'exécuter des scripts personnalisés pendant le flux de travail de soumission des tâches de Deadline Cloud. Les hooks s'exécutent localement sur le poste de travail qui soumet la tâche, avant que celle-ci n'atteigne le service Deadline Cloud. Les Hooks ne s'exécutent pas sur les ordinateurs de bureau ou dans le AWS cloud. Comme les hooks s'exécutent sur votre machine, ils ont accès aux fichiers locaux, aux variables d'environnement et aux ressources réseau disponibles pour l'utilisateur soumissionnaire.
Vous pouvez utiliser des hooks pour valider les configurations des tâches, découvrir des actifs supplémentaires, modifier les paramètres de soumission ou intégrer des systèmes externes tels que des logiciels de suivi de production. Pour les autres points d'intégration qui s'exécutent sur des serveurs ou dans le cloud, consultezHooks, événements et points d'intégration pour les jobs.
Il existe deux manières de configurer les hooks :
-
Bundle hooks — Placez un
hooks.yaml(ouhooks.json) fichier dans le répertoire de votre bundle de tâches à côtétemplate.yaml. Les hooks de bundle fonctionnent bien pour les flux de travail en CLI où le bundle existe déjà avant sa soumission. -
Crochets d'environnement : pointez la variable d'
DEADLINE_HOOKS_DIRenvironnement vers un répertoire contenanthooks.yaml. Les hooks environnementaux sont utiles pour les studios qui souhaitent appliquer les hooks à toutes les soumissions sans modifier les lots de tâches.
Les deux sources peuvent être actives en même temps. Lorsque les deux sont présents, les hooks d'environnement s'exécutent en premier, puis les bundles hooks.
Note
In-application Les émetteurs (DCC) tels que Maya, Nuke ou Blender exécutent des hooks d'environnement uniquement pour les phases de pré-soumission et de post-soumission. La phase préalable à l'interface graphique ne s'applique pas aux émetteurs DCC. Pour de plus amples informations, veuillez consulter Pre-GUI crochets.
Types d'hameçons
Deadline Cloud prend en charge trois types de crochets correspondant à différents points du flux de travail de soumission.
Pre-GUI crochets
Pre-GUI les hooks s'exécutent avant l'ouverture de la boîte de dialogue de soumission. Vous pouvez utiliser des hooks pré-GUI pour les tâches suivantes :
Important
Pre-GUI les hooks ne s'exécutent qu'avec l'interface graphique autonome submitter (). deadline bundle gui-submit Elles ne s'exécutent pas dans des émetteurs intégrés à l'application (DCC) tels que Maya, Nuke ou Blender, car ces applications créent directement leur boîte de dialogue de soumission et n'invoquent pas la phase préalable à l'interface graphique. Pre-GUI les hooks ne s'appliquent pas non plus à la CLI submission (deadline bundle submit), qui n'a pas de phase d'interface graphique. Pre-submission et les crochets post-soumission fonctionnent avec toutes les méthodes de soumission.
-
Pre-populate nom, description et priorité du poste
-
Définissez les paramètres par défaut en fonction de la scène actuelle ou du contexte du pipeline
-
Interrogez un système de gestion de projet pour obtenir les métadonnées des tâches
Pre-GUI les crochets bloquent l'ouverture de la boîte de dialogue en cas d'échec (code de sortie différent de zéro ou délai d'attente).
Expédiez le JSON vers stdout pour modifier l'état initial du dialogue. L'exemple suivant montre le format de sortie :
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))
Le tableau suivant décrit les champs de sortie pour les hooks pré-GUI.
| Champ | Type | Description |
|---|---|---|
|
String |
Pre-fills le champ du nom de la tâche. |
|
String |
Pre-fills le champ de description du poste. |
|
Objet |
Pre-fills valeurs de paramètres par nom. Les paramètres du modèle de job utilisent directement leur nom. Les propriétés de tâche partagées utilisent le |
Le tableau suivant décrit les propriétés de travail partagées que vous pouvez définir à l'aide du deadline: préfixe de l'parametersobjet.
| Clé | Type | Description |
|---|---|---|
|
Entier |
Priorité (0—100). |
|
Entier |
Nombre maximum de tâches échouées avant l'échec de la tâche. |
|
Entier |
Nombre maximum de tentatives par tâche échouée. |
|
Entier |
Nombre maximum de travailleurs simultanés. |
|
String |
État initial de la tâche : |
Note
CLI-supplied --parameterles valeurs ont priorité sur celles fournies par le crochetparameters.
Pre-submission crochets
Pre-submission les hooks s'exécutent avant que les pièces jointes aux tâches ne soient hachées et téléchargées. Vous pouvez utiliser des crochets de pré-soumission pour les tâches suivantes :
-
Valider la configuration des tâches
-
Découvrez et ajoutez des fichiers d'entrée supplémentaires
-
Modifier les paramètres de la tâche tels que la priorité
-
Appliquer les politiques du studio
Pre-submission les hooks bloquent la soumission en cas d'échec (code de sortie ou délai d'attente différent de zéro).
Expédiez le JSON vers stdout pour modifier la soumission. La sortie hook remplace les références aux actifs au niveau des clés imbriquées. Si votre hook sortinputFilenames, la sortie hook remplace la inputFilenames liste complète. Deadline Cloud préserve les clés que vous n'incluez pas dans votre sortie.
L'exemple suivant ajoute les fichiers de texture découverts à la soumission :
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 les hooks peuvent également modifier les valeurs des paramètres du modèle de tâche en émettant une parameters carte sur stdout :
print(json.dumps({"parameters": {"SceneFile": "/resolved/scene.ma", "Quality": "high"}}))
Les clés de paramètres sont des noms de paramètres de modèles de tâches. Les valeurs d'un hook sont appliquées au-dessus des valeurs des paramètres du bundle, mais CLI-supplied --parameter les valeurs ont toujours la priorité sur celles fournies par le hook.
Important
PATHles paramètres émis sur stdout doivent être absolus. Un hook ne s'exécute pas depuis le répertoire de travail du shell de soumission. Une PATH valeur relative sur stdout est donc ambiguë et est rejetée avec une erreur. Émettez un chemin absolu (par exemple, join withDEADLINE_JOB_BUNDLE_DIR) ou écrivez plutôt la valeur dansparameter_values.yaml/parameter_values.jsonsur le disque, où un parent PATH est résolu par rapport au répertoire du bundle de tâches.
Post-submission crochets
Post-submission les hooks s'exécutent après le retour réussi de CreateJob l'appel d'API. Le poste a été accepté par Deadline Cloud à ce stade. Vous pouvez utiliser des crochets post-soumission pour les tâches suivantes :
-
Envoyer des notifications (Slack, e-mail)
-
Mettre à jour les systèmes de suivi
-
Détails de soumission du journal
Post-submission les échecs de crochet sont enregistrés sous forme d'avertissements mais n'affectent pas le travail soumis.
Configurer les crochets de soumission
Définissez les crochets dans un hooks.json fichier hooks.yaml or. Placez le fichier dans le répertoire de votre offre de tâches à côté template.yaml ou dans le répertoire spécifié parDEADLINE_HOOKS_DIR. Si les deux formats existent dans le même répertoire, l'expéditeur signale une erreur.
Le version champ est obligatoire et doit l'être"1.0".
L'exemple suivant montre une hooks.yaml configuration :
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/...
Champs de définition du crochet
Chaque entrée de hook accepte les champs suivants.
| Champ | Obligatoire | Par défaut | Description |
|---|---|---|---|
|
Oui |
– |
Exécutable ou interpréteur (par exemple, |
|
Non |
|
Command-line arguments. |
|
Non |
|
Durée d'exécution maximale en secondes. |
|
Non |
|
Variables d'environnement supplémentaires. Les Hooks héritent de l'environnement complet de l'émetteur. Les |
Résolution du chemin
Les scripts Hook sont résolus conformément aux règles suivantes :
-
Chemins absolus — Utilisés tels quels.
-
Chemins relatifs — Résolu par rapport au répertoire des lots de tâches.
-
Noms des commandes : recherche dans le PATH du système.
Entrée Hook
Les hooks reçoivent les métadonnées des tâches via JSON sur stdin et via des variables d'environnement pratiques.
Variables d’environnement
Les variables d'environnement suivantes sont disponibles pour tous les hooks.
| Variable | Description |
|---|---|
|
Nom du job. |
|
Priorité du job. |
|
Identifiant de la ferme. |
|
ID de file d'attente. |
|
Chemin d'accès au répertoire du bundle de tâches. |
|
ID du profil de stockage (s'il est défini). |
|
Job ID (crochets postérieurs à la soumission uniquement). |
JSON sur stdin
Les métadonnées complètes sont fournies au format JSON sur stdin. L'exemple suivant illustre la structure :
{ "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": {} }
Sécurité
Les Hooks sont désactivés par défaut. Chaque source de hook possède son propre paramètre que vous devez activer.
Activation des bundles hooks
Pour autoriser les hooks définis hooks.yaml dans les ensembles de tâches, activez le paramètre des crochets de bundle.
Pour activer les bundles hooks
-
Exécutez la commande suivante :
deadline config set settings.allow_bundle_hooks true
Crochets liés à un environnement favorable
Pour autoriser les hooks provenant d'un répertoire spécifié parDEADLINE_HOOKS_DIR, activez le paramètre des crochets d'environnement et définissez le chemin du répertoire.
Pour activer les hooks environnementaux
-
Activez le paramètre :
deadline config set settings.allow_environment_hooks true -
Définissez la variable d'environnement, généralement dans un script de lancement d'applications :
export DEADLINE_HOOKS_DIR=/studio/pipeline/hooks/blender
Invite de confirmation
Lorsque vous activez les hooks, l'émetteur vous invite à confirmer avant que les hooks ne s'exécutent. Pre-GUI les crochets affichent l'invite avant l'ouverture de la boîte de dialogue. Pre-submission et les crochets postérieurs à la soumission affichent l'invite lorsque vous sélectionnez Soumettre.
L'invite indique les commandes qui seront exécutées, ce qui vous permet de les vérifier avant de continuer :
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]
Pour ignorer les demandes de confirmation relatives aux CI/automation flux de travail, exécutez la commande suivante :
deadline config set settings.auto_accept true
Récapitulatif des paramètres de configuration
| Paramètre | Par défaut | Description |
|---|---|---|
|
|
Spécifie s'il faut autoriser les hooks depuis le |
|
|
Spécifie s'il faut autoriser les hooks depuis le |
|
|
Spécifie s'il faut ignorer les invites de confirmation. À utiliser avec prudence dans CI/automation les environnements. |
Déploiement en studio
Les directeurs techniques du pipeline peuvent configurer les hooks pour qu'ils s'exécutent automatiquement pour tous les artistes en déployant des hooks d'environnement sur les postes de travail. Utilisez cette procédure lorsque votre studio dispose d'un emplacement réseau partagé pour les scripts Hook et que vous disposez d'un accès administratif pour configurer les postes de travail des artistes.
Pour déployer des hooks d'environnement pour un studio
-
Configurez les postes de travail pour autoriser les accrochages environnementaux :
deadline config set settings.allow_environment_hooks true -
Définissez
DEADLINE_HOOKS_DIRdans le script de lancement de chaque application :# blender_launcher.sh export DEADLINE_HOOKS_DIR=/studio/pipeline/hooks/blender exec blender "$@" -
Créez les crochets à l'emplacement indiqué :
/studio/pipeline/hooks/blender/ ├── hooks.yaml └── validate_scene.py
Gestion des erreurs
Lorsqu'un hook préalable à la soumission ou à l'interface graphique échoue, le résultat d'erreur inclut les informations suivantes :
-
Quel crochet a échoué
-
Code de sortie
-
sortie stdout et stderr
-
Durée du délai d'attente (si le délai d'attente est expiré)
L'expéditeur bloque la soumission jusqu'à ce que vous résolviez le problème. Post-submission les échecs de crochet sont enregistrés sous forme d'avertissements mais n'affectent pas le travail soumis.
Bonnes pratiques
-
Maintenez les hameçons rapidement. Définissez des délais d'attente appropriés et évitez les opérations de longue durée dans les hooks.
-
Connectez-vous à stderr. Réservez stdout pour la sortie JSON dans les hooks pré-GUI et pré-soumission.
-
Gérez les erreurs avec élégance. Fournissez des messages d'erreur clairs sur stderr afin que les utilisateurs puissent identifier le problème.
-
Testez d'abord avec la CLI. La soumission par CLI est plus facile à déboguer que la soumission par interface graphique.
-
Utilisez des chemins absolus en sortie. Lorsque vous ajoutez des fichiers à des références de ressources, utilisez toujours des chemins absolus.
-
Utilisez des hooks environnementaux pour les politiques à l'échelle du studio. Les hooks d'environnement sont plus sécurisés que les hooks de bundle car ils sont contrôlés par le studio plutôt que par l'auteur du bundle.
-
Passez en revue les hooks du bundle avant de les activer. Inspectez
hooks.yamlles paquets provenant de sources non fiables avant d'autoriser l'exécution des bundles hooks.
Méthodes de soumission
Les Hooks fonctionnent avec les méthodes de soumission suivantes :
-
deadline bundle submit(CLI) — Pre-submission et les hooks post-soumission s'exécutent. La CLI n'a pas de phase d'interface graphique, les hooks antérieurs à l'interface graphique ne s'appliquent donc pas. -
deadline bundle gui-submit(interface graphique autonome) — Toutes les phases sont exécutées, y compris les hooks pré-GUI. -
In-application (DCC) — Pre-submission et les hooks post-soumission fonctionnent. Les émetteurs DCC n'invoquent pas la phase préalable à l'interface graphique.
L'interface graphique autonome copie hooks.yaml les données dans le bundle d'historique des tâches et résout les chemins de script vers le répertoire du bundle d'origine.
Ressources supplémentaires
Pour plus d'informations sur les points d'intégration et les sujets connexes, consultez les rubriques suivantes :