1.6 KiB
1.6 KiB
Remote execution
Currently remote execution only applies to execution of modules in container. Theoretically it could also be used e.g. to execute modules on other machines via SCP/SSH.
Sequence diagram overview
The following sequence diagram illustrates the remote protocol:
sequenceDiagram
client ->>+ executor: StartTaskRequest
client ->> client: listen for executor events
executor ->> executor: Start FS watcher
executor ->> executor: Unmarshal task and execute
loop stream task output & logs
executor -->> client: TaskLog
executor -->> client: TaskOutput
end
executor -->>- client: TaskResult - as soon as execution completes
Execution steps for container tasks
The overall execution looks like this:
- create container network
- create container
- copy buildr binary, tools and content into container
- if input mapping is configured, content is copied as it would be mapped
- if no input mapping is configured complete repository is copied
- start container with buildr as entrypoint (gRPC server)
- connect to gRPC server
- send
StartTaskRequest
specifying what to do - although it's called TaskRequest it could be any module - server starts a FS watcher to monitor modified files
- buildr CLI listens for logs and output from executed task
- as soon as the execution completes, modified files are collected into a .tar.s2 file and error message + location of the archive are sent as result to buildr CLI
- CLI copies archive back and extracts modified files to output directory