[CI][Docker] How to match Docker version tags in source control with the ones in Docker Hub?

It seems some of the versions numbers of the TVM Docker images being used for the public CI, for example the usual “tvm > master” Jenkins, are not matching with the version tag of the Docker files in Git.

Taking as an example a recent build, it reports it is using the latest versions of the Docker images from tvmai DockerHub, which looks correct. This is a summary of versions being used by Jenkins:

  • tvmai/ci-lint v0.51
  • tvmai/ci-cpu v0.54
  • tvmai/ci-i386 v0.53
  • tvmai/ci-gpu v0.56

When comparing these versions above with the versions in the source, some versions are not matching. This is a summary of the versions present in the source:

  • tvmai/ci-lint <none>
  • tvmai/ci-cpu v0.41
  • tvmai/ci-i386 v0.50
  • tvmai/ci-gpu v0.54

I understand how tags work on Docker images, but based on the information above, I have the following questions:

  1. how do we generate the official tvmai/* images that are uploaded on DockerHub?
  2. by building images based on what is in the incubator-tmv/docker/* right now, do I get the “same” images that we have in CI ? (note: I am aware that probably will have a small set of differences due to Ubuntu software updates or pip packages pointing to latest version, but that is probably a minor problem).

If that is just a version number typo in the files, let me know and I can send a PR to update/fix them. I just want to understand how the broader Docker image process works here.

Proposal: let CI build Docker image on the fly. This need not be expensive if we cache previously built Docker images to a Docker repository such as ECR. So only changes in Dockerfile will trigger re-build of the corresponding Docker image.

See example at dmlc/xgboost:

See https://docs.tvm.ai/contribute/pull_request.html#ci-environment for the general docker update process. I think in your case the version number is a typo

We stick with a binary image mainly to avoid differences caused by upstream changes and keep the docker stable. In most cases, the docker images used by Jenkins are generated by the latest Dockerfile in the branch.

Follow-up: I’ve submitted this PR to amend the versions mentioned in the Dockerfiles.