It's 10PM; Do You Know Where YOUR Progress Meter Is?
Commit(s) of the Month(s): Docker Push & Pull Progress
This post discusses two exciting commits (one of which is technically from January 🤐) which are two sides of the same coin: e77be9fe and 467f1913 print
docker push and
docker pull progress (respectively) to the Web UI, so you’re not in the dark about where your deployment time is going.
Tilt tries to make microservice development as fast as possible, but sometimes there’s just stuff you’ve gotta wait around for. However, when you inevitably have to wait around for something, you should know exactly what you’re waiting for and how it’s progressing (and that your process isn’t just permanently hung somewhere).
These commits print
docker push / pull progress output, updating lines in the Web UI in place as status meters creep forward. Users now have real-time visibility into what Docker is doing, instead of staring at a blank screen and hoping things are still working.
To write these features, the Tilt team dug deep into the Docker CLI, and we were really impressed with what we found there. We’ve all felt the frustration of a command-line tool that sits their churning with no output. What is it doing? Will it ever finish?
A good command-line tool at least gives you a simple progressbar or loading animation.
The Docker CLI goes way beyond that. It updates your terminal in-place with how big your layers are, whether they were cached, how much time each one is taking. It’s responsive to your terminal width, summarizing the information differently depending on how much screen real estate it has to work with.
We wanted our web UI to do that progress display justice, so there was really only one way forward: updating Web UI log lines in place to show progress with as much liveness as possible. As a bonus, we can use this new functionality (the ability to update log lines) to show all sorts of information, all in service of improved visibility into what Tilt is doing at any given time. We’ve already used it to, e.g., monitor pod rollout for resources: