Peep is a library from Erik Rose that wraps around pip and checks the hash of the library before it installs. The main reason to use peep is to ensure that the dependencies you install have not been tampered with - a good security measure to have.
A wheel was made of one of the packages on our internal index. That’s a good thing to do and speeds all our builds up. But how the two projects reacted is interesting.
Not using peep
Zamboni docker containers continued to be built. However whenever you started up the project and accessed the container, you got an error about importing
_mysql. The unit tests still passed because those are run in Travis CI which does not use the docker container.
That meant although the container was building, it was broken and people who tried to run it got an error. Fortunately since the container used supervisor as its entry point, it was easy enough to hop in, use
ldd and see where the problems were.
Solitude docker containers stopped being built. The hash of the library in question failed since it didn’t match what was expected. The hash of the wheel was different from the hash for the tarball.
Since the container was failing to build, people who pulled the container got the old outdated, but still working container.
Although I spotted the problem quickly in zamboni, it was nice to look at solitude and confirm the nature of the problem because the docker hub log clearly showed where the problem was.