stage("example stage") { node(windows_node) { ws("E:/workspace/directory") { String _ws_jenkins = workspace.replace("\\", "/") + "/" String _ws_container = "C:/workspace/within/container" String _wd_container = "C:/workdir/within/container" // current behavior def _img = docker.image("mcr.microsoft.com/windows/servercore:ltsc2016") _img.pull() echo "expected command: 'docker run -d -t -w ${_ws_jenkins} -v ${_ws_jenkins}:${_ws_jenkins} -v ${_ws_jenkins}@tmp:${_ws_jenkins}@tmp'" _img.inside() { echo bat("dir") } // proposal A) - set the path as property _img.SetContainerWorkspace(${_ws_container}) _img.SetWorkDir(${_wd_container}) echo "wanted command: 'docker run -t -d -w ${_wd_container} -v ${_ws_jenkins}:${_ws_container} -v ${_ws_jenkins}@tmp:${_ws_container}@tmp'" _img.inside() { echo bat("dir") // wanted behavior: // docker run -t -d -w ${_wd_container} -v ${_ws_jenkins}:${_ws_container} -v ${_ws_jenkins}@tmp:${_ws_container}@tmp } // proposal B) - remove all starting params so the user can add all he wants to _img.RemoveAllParams() echo "wanted command: 'docker run -t -d -w ${_wd_container} -v ${_ws_jenkins}:${_ws_container} -v ${_ws_jenkins}@tmp:${_ws_container}@tmp'" _img.inside("-t -d -w ${_wd_container} -v ${_ws_jenkins}:${_ws_container} -v ${_ws_jenkins}@tmp:${_ws_container}@tmp") { echo bat("dir") // wanted behavior (same like probosal A): // docker run -t -d -w ${_wd_container} -v ${_ws_jenkins}:${_ws_container} -v ${_ws_jenkins}@tmp:${_ws_container}@tmp } } } }