-
Notifications
You must be signed in to change notification settings - Fork 129
Support for mutliple installed versions #3456
Support for mutliple installed versions #3456
Conversation
…e Transaction logic
…as before (rudimentary tested only)
# Conflicts: # openpype/plugins/publish/integrate_new.py
… in CollectAnatomyContextData and CollectAnatomyInstanceData. This currently was duplicated logic and should not be handled in the Integrator
…oser to where it's used
…families variable
…resentation write
- This is moved from the Integrate Asset New settings
…ntext-document-functions
…pport-for-multiple-build-versions
General: Remove hosts filter on integrator plugins
Remove invalid submodules from `/vendor`
…pport-for-multiple-build-versions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sry wrong PR
Currently there is one limitation and that is that Deadline cannot work with the sources. It will find the version correctly, but then it is looking for |
It's hard to review when there are changes from develop. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
created a build and put it in the defined folder
Error: Global job preload script 'C:\ProgramData\Thinkbox\Deadline10\workers\WS01\plugins\62e251cea96635187cc30a45\GlobalJobPreLoad.py': TypeError : can only concatenate str (not "list") to str (FranticX.Scripting.PythonNetException)
File "C:\ProgramData\Thinkbox\Deadline10\workers\WS01\plugins\62e251cea96635187cc30a45\GlobalJobPreLoad.py", line 290, in __main__
inject_openpype_environment(deadlinePlugin)
File "C:\ProgramData\Thinkbox\Deadline10\workers\WS01\plugins\62e251cea96635187cc30a45\GlobalJobPreLoad.py", line 105, in inject_openpype_environment
"The path to the render executable can be configured " +
Closing in favour of pure 3.13.x based branch to ease out testing. |
Feature
This PR is adding support for multiple installed versions (builds) on the same system. It will allow easy rollback and testing on farms and without disrupting existing running sessions.
On Deadline, it is now passing OpenPype version as
OPENPYPE_VERSION
to the job. If this environment variable is found on the job, Deadline will try to find compatible version build to use for launching that version of OpenPype. So if job was submitted from OpenPype version3.12.2
Deadline will try to find any build that matches3.12
and will use the latest available. Deadline will try to find it in directories specified inOpenPypeInstallationDirs
configuration option.It relies on functionality implemented here #3445.
Deployment Notes
Since #3445 you can have multiple versions of OpenPype installed on Windows. This was possible even before with Linux, but it was missing logic that will load only versions from the update zips/repository compatible with the currently running build.
So with this PR, running build will "see" only versions compatible with it and will use only them. For Deadline, where this process is reversed - you know what version was used to create the submission and you need to find correct build to launch it, you need to put builds under some common directory do OpenPype can detect them. On Windows, this is by default
C:\Program Files (x86)\OpenPype
but it can be any directory following logic that its direct subdirectories should contain separate build available. So with Deadline, you need to point it to the directory with following structure:/some/op/dir/3.12.2-nightly.2
,/some/op/dir/3.13.0
and so on.Testing
For proper testing, you need to create few "mock" build versions of OpenPype. It should be enough to change
openpype/version.py
and runningtools/build.ps1|sh
and after each run store produced version somewhere.Visibility of compatible versions
OpenPype should by default see only versions compatible with the running build. So issuing command like:
or
should show only versions compatible with that particular build.
Deadline
When testing, don't forget to update Deadline plugins in Deadline repository.
You need to configure OpenPype Deadline plugin:
Add path to OpenPype Installation Directories. This is path-per-line, first found is used.
Jobs submitted to Deadline should have set
OPENPYPE_VERSION
to correct one. In job log, you should find messages about version resolution.Implementation steps:
🧑🏭 TODO: find out how to deal with multiple installations on mac.
Resolves #3415
Resolves #3416
Resolves #3439
Footnotes
This would go over all specified path to OpenPype in Deadline and try to find requested version among them. ↩