Dylan Gabriel Blanqué c61530e9cc Doc: custom job types, bat-pack error, two-way variables (#104202)
Additions to the documentation:

- Page for collecting custom job types, with multi-pass job type.
- BAT Pack Error Message solution on Windows.
- Clarificationof two-way variable usage in jobs.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104202
2023-04-14 10:59:57 +02:00

53 lines
2.0 KiB
Markdown

---
title: Two-way Variables for Multi-Platform Support
---
Two-way variables are there to support mixed-platform Flamenco farms. Basically
they perform *path prefix replacement*.
Let's look at an example configuration:
```yaml
variables:
my_storage:
is_twoway: true
values:
- platform: linux
value: /media/shared/flamenco
- platform: windows
value: F:\flamenco
- platform: darwin
value: /Volumes/shared/flamenco
```
The difference with regular variables is that regular variables are one-way:
`{variablename}` is replaced with the value, and that's it.
Two-way variables go both ways, as follows:
- When submitting a **job**, values **in the javascript jobs' command** are replaced
with the corresponding variables as it's executed on the client.
- When sending a task to a worker, variables are replaced with values again.
*(Do keep in mind that if you perform changes to a job, you'll need to re-submit*
*it.)*
This may seem like a lot of unnecessary work. After all, why go through the
trouble of replacing in one direction, when later the opposite is done? The
power lies in the fact that each replacement step can target a different
platform. In the first step the value for Linux can be recognised, and in the
second step the value for Windows can be put in its place.
Let's look at a more concrete example, based on the configuration shown above.
- Alice runs Blender on **macOS**. She submits a job that has its render output set
to `/Volumes/shared/flamenco/renders/shot_010_a_anim`.
- Flamenco recognises the path, and stores the job as rendering to
`{my_storage}/renders/shot_010_a_anim`.
- Bob's computer is running the Worker on **Windows**, so when it receives a render
task Flamenco will tell it to render to
`F:\flamenco\renders\shot_010_a_anim`.
- Carol's computer is also running a worker, but on **Linux**. When it receives a
render task, Flamenco will tell it to render to
`/media/shared/flamenco/renders/shot_010_a_anim`.