View a markdown version of this page

Kait pengajuan - Batas Waktu Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kait pengajuan

Kait pengiriman memungkinkan Anda menjalankan skrip kustom selama alur kerja pengiriman pekerjaan Deadline Cloud. Hooks berjalan secara lokal di workstation yang mengirimkan pekerjaan, sebelum pekerjaan mencapai layanan Deadline Cloud. Kait tidak berjalan pada pekerja atau di AWS Cloud. Karena kait dijalankan pada mesin Anda, mereka memiliki akses ke file lokal, variabel lingkungan, dan sumber daya jaringan yang tersedia untuk pengguna yang mengirimkan.

Anda dapat menggunakan hook untuk memvalidasi konfigurasi pekerjaan, menemukan aset tambahan, memodifikasi parameter pengiriman, atau mengintegrasikan dengan sistem eksternal seperti perangkat lunak pelacak produksi. Untuk poin integrasi lain yang berjalan pada pekerja atau di cloud, lihatKait, acara, dan titik integrasi untuk pekerjaan.

Ada dua cara untuk mengkonfigurasi kait:

  • Bundle hooks — Tempatkan file hooks.yaml (atauhooks.json) di direktori bundel pekerjaan Anda di sampingnyatemplate.yaml. Kait bundel berfungsi dengan baik untuk alur kerja CLI di mana bundel sudah ada sebelum pengiriman.

  • Environment hooks - Arahkan variabel DEADLINE_HOOKS_DIR lingkungan ke direktori yang berisihooks.yaml. Pengait lingkungan berguna untuk studio yang ingin menerapkan kait di semua kiriman tanpa memodifikasi bundel pekerjaan.

Kedua sumber dapat aktif pada saat yang bersamaan. Saat keduanya ada, kait lingkungan berjalan lebih dulu, lalu kait bundel.

catatan

In-application (DCC) pengirim seperti Maya, Nuke, atau Blender menjalankan hook lingkungan hanya untuk fase pra-pengiriman dan pasca-pengiriman. Fase pra-GUI tidak berlaku untuk pengirim DCC. Untuk informasi selengkapnya, lihat Pre-GUI kait.

Jenis kait

Deadline Cloud mendukung tiga jenis hook yang sesuai dengan poin berbeda dalam alur kerja pengiriman.

Pre-GUI kait

Pre-GUI hook berjalan sebelum dialog pengiriman terbuka. Anda dapat menggunakan kait pra-GUI untuk tugas-tugas berikut:

penting

Pre-GUI kait hanya berjalan dengan pengirim GUI mandiri (). deadline bundle gui-submit Mereka tidak berjalan di pengirim dalam aplikasi (DCC) seperti Maya, Nuke, atau Blender, karena aplikasi tersebut membangun dialog pengiriman mereka secara langsung dan tidak memanggil fase pra-GUI. Pre-GUI kait juga tidak berlaku untuk pengiriman CLI deadline bundle submit (), yang tidak memiliki fase GUI. Pre-submission dan kait pasca-pengiriman bekerja di semua metode pengiriman.

  • Pre-populate nama pekerjaan, deskripsi, dan prioritas

  • Tetapkan default parameter berdasarkan konteks adegan atau pipeline saat ini

  • Kueri sistem manajemen proyek untuk metadata tugas

Pre-GUI kait memblokir dialog agar tidak terbuka jika gagal (kode keluar bukan nol atau batas waktu).

Output JSON ke stdout untuk memodifikasi status dialog awal. Contoh berikut menunjukkan format output:

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))

Tabel berikut menjelaskan bidang output untuk kait pra-GUI.

Bidang Tipe Deskripsi

name

String

Pre-fills bidang nama pekerjaan.

description

String

Pre-fills bidang deskripsi pekerjaan.

parameters

Objek

Pre-fills nilai parameter dengan nama. Parameter template Job menggunakan nama mereka secara langsung. Properti pekerjaan bersama menggunakan deadline: awalan.

Tabel berikut menjelaskan properti pekerjaan bersama yang dapat Anda atur dengan deadline: awalan di parameters objek.

Key Tipe Deskripsi

deadline:priority

Bilangan Bulat

Prioritas (0—100).

deadline:maxFailedTasksCount

Bilangan Bulat

Tugas gagal maksimum sebelum pekerjaan gagal.

deadline:maxRetriesPerTask

Bilangan Bulat

Percobaan ulang maksimum per tugas yang gagal.

deadline:maxWorkerCount

Bilangan Bulat

Pekerja bersamaan maksimum.

deadline:targetTaskRunStatus

String

Status tugas awal: READY atauSUSPENDED.

catatan

CLI-supplied --parameternilai lebih diutamakan daripada yang disediakan kait. parameters

Pre-submission kait

Pre-submission kait dijalankan sebelum lampiran pekerjaan di-hash dan diunggah. Anda dapat menggunakan kait pra-pengiriman untuk tugas-tugas berikut:

  • Validasi konfigurasi pekerjaan

  • Temukan dan tambahkan file input tambahan

  • Memodifikasi parameter pekerjaan seperti prioritas

  • Menegakkan kebijakan studio

Pre-submission hook memblokir pengiriman jika gagal (kode keluar bukan nol atau batas waktu).

Output JSON ke stdout untuk memodifikasi kiriman. Output hook menggantikan referensi aset pada level kunci bersarang. Jika output hook AndainputFilenames, output hook menggantikan seluruh inputFilenames daftar. Deadline Cloud mempertahankan kunci yang tidak Anda sertakan dalam output Anda.

Contoh berikut menambahkan file tekstur yang ditemukan ke kiriman:

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 hook juga dapat memodifikasi nilai parameter template pekerjaan dengan memancarkan parameters peta di stdout:

print(json.dumps({"parameters": {"SceneFile": "/resolved/scene.ma", "Quality": "high"}}))

Kunci parameter adalah nama parameter template pekerjaan. Nilai dari hook diterapkan di atas nilai parameter bundel, tetapi CLI-supplied --parameter nilai masih diutamakan daripada yang disediakan kait.

penting

PATHparameter yang dipancarkan pada stdout harus absolut. Hook tidak berjalan dari direktori kerja shell yang mengirimkan, jadi PATH nilai relatif pada stdout ambigu dan ditolak dengan kesalahan. Memancarkan jalur absolut (misalnya, bergabung denganDEADLINE_JOB_BUNDLE_DIR), atau tulis nilai keparameter_values.yaml/parameter_values.jsonpada disk sebagai gantinya, di mana kerabat PATH diselesaikan terhadap direktori bundel pekerjaan.

Post-submission kait

Post-submission hook berjalan setelah panggilan CreateJob API berhasil kembali. Pekerjaan telah diterima oleh Deadline Cloud pada saat ini. Anda dapat menggunakan kait pasca-pengiriman untuk tugas-tugas berikut:

  • Kirim pemberitahuan (Slack, email)

  • Perbarui sistem pelacakan

  • Rincian pengiriman log

Post-submission kegagalan hook dicatat sebagai peringatan tetapi tidak mempengaruhi pekerjaan yang dikirimkan.

Konfigurasikan kait pengiriman

Tentukan kait dalam hooks.json file hooks.yaml atau. Tempatkan file di direktori bundel pekerjaan Anda di sampingtemplate.yaml, atau di direktori yang ditentukan olehDEADLINE_HOOKS_DIR. Jika kedua format ada di direktori yang sama, pengirim melaporkan kesalahan.

versionBidang diperlukan dan harus"1.0".

Contoh berikut menunjukkan hooks.yaml konfigurasi:

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/...

Bidang definisi kait

Setiap entri hook menerima bidang berikut.

Bidang Diperlukan Default Deskripsi

command

Ya

Executable atau interpreter (misalnya, python3 atau). bash

args

Tidak

[]

Command-line argumen.

timeout

Tidak

60

Waktu eksekusi maksimum dalam hitungan detik.

env

Tidak

{}

Variabel lingkungan tambahan. Hooks mewarisi lingkungan penuh pengirim. DEADLINE_*Variabel dan env nilai spesifik kait apa pun berlapis di atas.

Resolusi jalur

Skrip kait diselesaikan sesuai dengan aturan berikut:

  • Jalur absolut — Digunakan apa adanya.

  • Jalur relatif — Terselesaikan relatif terhadap direktori bundel pekerjaan.

  • Nama perintah — Dicari di PATH sistem.

Masukan kait

Hooks menerima metadata pekerjaan melalui JSON di stdin dan melalui variabel lingkungan kenyamanan.

Variabel-variabel lingkungan

Variabel lingkungan berikut tersedia untuk semua kait.

Variabel Deskripsi

DEADLINE_JOB_NAME

Nama Job.

DEADLINE_PRIORITY

Prioritas pekerjaan.

DEADLINE_FARM_ID

ID Pertanian.

DEADLINE_QUEUE_ID

ID Antrian.

DEADLINE_JOB_BUNDLE_DIR

Jalur ke direktori bundel pekerjaan.

DEADLINE_STORAGE_PROFILE_ID

ID profil penyimpanan (jika diatur).

DEADLINE_JOB_ID

Job ID (hanya kait pasca-pengiriman).

JSON di stdin

Metadata lengkap disediakan sebagai JSON di stdin. Contoh berikut menunjukkan struktur:

{ "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": {} }

Keamanan

Kait dinonaktifkan secara default. Setiap sumber kait memiliki pengaturannya sendiri yang harus Anda aktifkan.

Mengaktifkan kait bundel

Untuk mengizinkan kait yang ditentukan di hooks.yaml dalam bundel pekerjaan, aktifkan pengaturan kait bundel.

Untuk mengaktifkan kait bundel
  • Jalankan perintah berikut:

    deadline config set settings.allow_bundle_hooks true

Mengaktifkan kait lingkungan

Untuk mengizinkan kait dari direktori yang ditentukan olehDEADLINE_HOOKS_DIR, aktifkan pengaturan kait lingkungan dan atur jalur direktori.

Untuk mengaktifkan kait lingkungan
  1. Aktifkan pengaturan:

    deadline config set settings.allow_environment_hooks true
  2. Mengatur variabel lingkungan, biasanya dalam skrip peluncur aplikasi:

    export DEADLINE_HOOKS_DIR=/studio/pipeline/hooks/blender

Prompt konfirmasi

Saat Anda mengaktifkan kait, pengirim meminta Anda untuk mengonfirmasi sebelum kait dijalankan. Pre-GUI kait menunjukkan prompt sebelum dialog terbuka. Pre-submission dan kait pasca-pengiriman menunjukkan prompt saat Anda memilih Kirim.

Prompt menunjukkan perintah mana yang akan dijalankan, memungkinkan Anda untuk meninjau sebelum melanjutkan:

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]

Untuk melewati konfirmasi konfirmasi CI/automation alur kerja, jalankan perintah berikut:

deadline config set settings.auto_accept true

Ringkasan pengaturan konfigurasi

Pengaturan Default Deskripsi

settings.allow_bundle_hooks

false

Menentukan apakah untuk memungkinkan hook dari file bundel hooks.yaml pekerjaan.

settings.allow_environment_hooks

false

Menentukan apakah untuk memungkinkan kait dari direktori. DEADLINE_HOOKS_DIR

settings.auto_accept

false

Menentukan apakah akan melewati konfirmasi konfirmasi. Gunakan dengan hati-hati di CI/automation lingkungan.

Penyebaran studio

Direktur teknis pipeline dapat mengonfigurasi kait agar berjalan secara otomatis untuk semua artis dengan menerapkan kait lingkungan di seluruh workstation. Gunakan prosedur ini ketika studio Anda memiliki lokasi jaringan bersama untuk skrip hook dan Anda memiliki akses administratif untuk mengonfigurasi workstation artis.

Untuk menyebarkan kait lingkungan untuk studio
  1. Konfigurasikan workstation untuk memungkinkan pengait lingkungan:

    deadline config set settings.allow_environment_hooks true
  2. Atur DEADLINE_HOOKS_DIR skrip peluncur setiap aplikasi:

    # blender_launcher.sh export DEADLINE_HOOKS_DIR=/studio/pipeline/hooks/blender exec blender "$@"
  3. Buat kait di lokasi yang ditentukan:

    /studio/pipeline/hooks/blender/ ├── hooks.yaml └── validate_scene.py

Penanganan kesalahan

Ketika pengait pra-pengiriman atau pra-GUI gagal, output kesalahan mencakup informasi berikut:

  • Kait mana yang gagal

  • Kode keluar

  • keluaran stdout dan stderr

  • Durasi batas waktu (jika waktu pengait habis)

Pengirim memblokir pengiriman sampai Anda menyelesaikan masalah. Post-submission kegagalan hook dicatat sebagai peringatan tetapi tidak mempengaruhi pekerjaan yang dikirimkan.

Praktik terbaik

  • Jaga kait dengan cepat. Tetapkan batas waktu yang sesuai dan hindari operasi yang berjalan lama di kait.

  • Masuk ke stderr. Cadangan stdout untuk output JSON di kait pra-GUI dan pra-pengiriman.

  • Tangani kesalahan dengan anggun. Berikan pesan kesalahan yang jelas di stderr sehingga pengguna dapat mengidentifikasi apa yang salah.

  • Uji dengan CLI terlebih dahulu. Pengajuan CLI lebih mudah untuk di-debug daripada pengiriman GUI.

  • Gunakan jalur absolut dalam output. Saat menambahkan file ke referensi aset, selalu gunakan jalur absolut.

  • Gunakan kait lingkungan untuk kebijakan di seluruh studio. Kait lingkungan lebih aman daripada kait bundel karena dikendalikan oleh studio daripada pembuat bundel.

  • Tinjau kait bundel sebelum mengaktifkan. Periksa hooks.yaml bundel dari sumber yang tidak tepercaya sebelum mengizinkan kait bundel berjalan.

Metode pengiriman

Hooks bekerja dengan metode pengiriman berikut:

  • deadline bundle submit(CLI) — Pre-submission dan kait pasca-pengiriman berjalan. CLI tidak memiliki fase GUI, jadi kait pra-GUI tidak berlaku.

  • deadline bundle gui-submit(GUI mandiri) - Semua fase berjalan, termasuk kait pra-GUI.

  • In-application (DCC) pengirim — Pre-submission dan kait pasca-pengiriman dijalankan. Pengirim DCC tidak memanggil fase pra-GUI.

GUI mandiri menyalin hooks.yaml ke bundel riwayat pekerjaan dan menyelesaikan jalur skrip kembali ke direktori bundel asli Anda.

Untuk informasi selengkapnya tentang titik integrasi dan topik terkait, lihat berikut ini: