Is your feature request related to a problem? Please describe.
Currently stages are treated as a list.
They should be modeled as a tree to handle cache ID and --target (#262) correctly.
Describe the solution you'd like
Model stages as a tree. Most changes should be in builder/build_plan.go
Tree is better for calculating cache IDs.
Currently stages inherit cache ID from last step of previous stage - which is not necessary if no files are copied between them.
Also in theory it's possible to execute some stages without "RUN" in parallel, and ignore those that not parent of "target" stage
Is your feature request related to a problem? Please describe. Currently stages are treated as a list. They should be modeled as a tree to handle cache ID and --target (#262) correctly.
Describe the solution you'd like Model stages as a tree. Most changes should be in builder/build_plan.go
Tree is better for calculating cache IDs. Currently stages inherit cache ID from last step of previous stage - which is not necessary if no files are copied between them.
Also in theory it's possible to execute some stages without "RUN" in parallel, and ignore those that not parent of "target" stage