70cf45ead4
Deploy / deploy (push) Successful in 7m2s
Blender work is not a shot submission: no Export, no version, no validation, QC or delivery. It is "Ctrl+F12, but on the farm", so it is modelled as what it is — a queue entry and nothing more. That turned out to need very little. Claim, progress, fail and complete-render already tolerated a job with no Export behind them, so a Blender job reuses the whole lifecycle; RenderJob gains projectId, label and submittedBy so a job with no shot code still has something to show. Capability gating is new and was already missing: the claim now filters job types by the machine's reported tools. Without it a workstation without Blender would claim Blender work and fail it repeatedly, burning the attempts while a machine that could have rendered it sat idle. The worker asks for Blender jobs unconditionally and the server refuses them — trusting the worker to self-select would have left the same hole. The runner treats a clean exit with no saved frames as a failure: Blender exits 0 when a frame range is empty or an output path is unwritable, and a job that silently rendered nothing is the worst outcome available. Standalone jobs auto-requeue on a transient failure like any other work; delivery builds are deliberately excluded, since a half-written package wants a human first. Adds the Blender add-on (BlenderPanel/) and its docs. The add-on refuses to submit an unsaved file — the farm opens the .blend from disk, so unsaved changes would render the previous state without warning. Its payload is pinned by a contract test, since add-on and server only ever meet over JSON. Worker 1.5.0. Adds migration 20260815000000_blender_render_jobs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
45 lines
1.8 KiB
XML
45 lines
1.8 KiB
XML
<Project Sdk="Microsoft.NET.Sdk.Worker">
|
|
|
|
<PropertyGroup>
|
|
<TargetFramework>net8.0</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<RootNamespace>VFXReviewWorker</RootNamespace>
|
|
<AssemblyName>VFXReviewWorker</AssemblyName>
|
|
<!-- Single self-contained exe for render nodes: dotnet publish -r win-x64 (see README) -->
|
|
<InvariantGlobalization>true</InvariantGlobalization>
|
|
<!--
|
|
The version is a property of the build, not of the machine it lands on:
|
|
it is stamped here and read back from the assembly at runtime, so a
|
|
workstation cannot report a version it is not actually running. Bump on
|
|
every change that gets published. publish.ps1 appends the git SHA via
|
|
SourceRevisionId, giving "1.1.0+feb1c7b".
|
|
-->
|
|
<Version>1.5.0</Version>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
|
|
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.1" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<InternalsVisibleTo Include="VFXReviewWorker.Tests" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<!--
|
|
Headless AE build script ships beside the exe. CopyToPublishDirectory is
|
|
set explicitly: CopyToOutputDirectory alone governs the build folder, and
|
|
an incremental publish then leaves the script out of a freshly-cleaned
|
|
publish directory. publish.ps1 copies it again and verifies, because the
|
|
exe cannot run a preview job without it.
|
|
-->
|
|
<Content Include="..\scripts\vfxr_build_preview.jsx" Link="scripts\vfxr_build_preview.jsx">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
|
|
</Content>
|
|
</ItemGroup>
|
|
|
|
</Project>
|