Request to re-build older Docker image

Currently it’s important that we run UI tests on Python 3.5.4, so we use the python-3.5.4-browsers image. Problem is, this doesn’t get rebuilt any more so its browser versions are very out-of-date (and doesn’t have the fixes to the jessie repository issues experienced last month). Updating the browsers in a script is not ideal as introduces other failure points (like Chrome’s signing key becoming invalid last week), not to mention adding 30s or so on top of a build that should only take 1min.

Is there any way to get this particular build refreshed?

1 Like

@kva We don’t actively decide what versions to rebuild—we pull the Docker manifests from the upstream community images we extend—so once a version gets fairly old, we can’t rebuild it.

You can use our circleci/circleci-images orb to install browsers at runtime—it’s pretty fast, will add less than a minute to your job runtime:

https://circleci.com/orbs/registry/orb/circleci/circleci-images#commands-install-browser-tools

You can run that orb command in any Docker image (for example, any other Python 3.5.4 image), or in the machine executor.

I also recommend using something like pyenv, so you aren’t as locked to a specific Docker image that may have been built a long time ago:

If it would help, I can create an orb command to install and configure pyenv in a CircleCI job—would probably be useful to many other folks, as well.

3 Likes

Also worth mentioning that we are working on an internal (for now) pilot for a brand-new set of CircleCI images that we will build from scratch, rather than relying on upstream community images that we extend, which will allow us to quickly and easily rebuild old tags whenever we want :slightly_smiling_face:

A usable Python image out of that pilot project likely won’t be ready for another few months, though.

That would be useful, yes! This sounds like a good idea, going forward.

1 Like

We are now using pyenv to install the version we need; a cool trick to speed up subsequent installs is to cache the versions folder in pyenv, which contains the Python installations. Just add --skip-existing to the pyenv installation command and you just need wait the full minute or so for the first time you run a job.

3 Likes