Prior to Europa, Dagger relies on Buildkit to manage exec defaults. For example op.#Workdir would translate to llb.Workdir in Buildkit, and all future calls to Exec would automatically use that default value for workdir.
In Europa, Dagger must not use this feature of buildkit, and it must not implement this feature in its own implementation either. Rather, it is the CUE caller’s responsibility to manage defaults if they so choose. In other words, engine.#Exec is stateless.
In the Dagger Universe, the responsibility of managing these defaults falls primarily on the universe.dagger.io/docker package, specifically docker.#Run. When a relevant field is not set (for example workdir or user, it is the responsibility of docker.#Run to use the corresponding value from image instead.
This feature is not yet implemented. This issue tracks its implementation.
Prior to Europa, Dagger relies on Buildkit to manage exec defaults. For example
op.#Workdirwould translate tollb.Workdirin Buildkit, and all future calls toExecwould automatically use that default value forworkdir.In Europa, Dagger must not use this feature of buildkit, and it must not implement this feature in its own implementation either. Rather, it is the CUE caller’s responsibility to manage defaults if they so choose. In other words,
engine.#Execis stateless.In the Dagger Universe, the responsibility of managing these defaults falls primarily on the
universe.dagger.io/dockerpackage, specificallydocker.#Run. When a relevant field is not set (for exampleworkdiroruser, it is the responsibility ofdocker.#Runto use the corresponding value fromimageinstead.This feature is not yet implemented. This issue tracks its implementation.