Workflows seem pretty nice at a first glance, but there is a feature that is lacking that makes them nearly useless for C++ development - the ability to specify that a job should run on an output image from a workflow. Since everything is in docker anyway, I don’t see why this would be too hard to implement.
For example: the fan out/fan in example: https://github.com/CircleCI-Public/circleci-demo-workflows/blob/fan-in-fan-out/.circleci/config.yml uses save_cache/load_cache to put dependencies into a starter step, but for C++ and mixed app development, we really want to just build an image in the first step (by installing packages normally) and use the said container in subsequent jobs. this way, we can install packages from any package manager (including the native one) and there is no possibility of missing some folders, as there is with save-cache.
Another way to think of this is the ‘pipeline’ metaphor, where a container flows down the pipeline, every job running more and more commands until you have a package at the end.
Let me know what you think, or if this feature is actually already implemented!