OK, got it. I’ve misunderstood the original ask/idea.
There is still the issue that your CI (or anything relying on latest
) won’t have traceability of which version of the image it corresponds, when reproducing bugs for example. That’s one of the main reasons to use pinned image names, rather than floating tags such as latest
, but I understand the complexity of aligning that with your mirroring system.
To make that something a bit more actionable, it is possible to achieve what you describe by creating some automation that will:
- Read the list of images from the
docker-images.ini
(or check whether it changed, for example)
-
docker pull
it locally (due to a quirk behaviour in docker, that requires the image locally for re-tagging)
-
docker tag
it with the respective :latest
e.g. ci-cpu:latest
-
docker push
is, which should happen immediately, as all layers are cached by docker hub
Relying on people to tag each and every image with latest by the time images are updated in docker-images.ini
seems error prone to me. Both our Jenkins jobs, as well as our GitHub actions have access to the token to manage images in tlcpack
, maybe @tqchen can correct me here.
To clarify (as I didn’t mention that explicitly) that automation would be implemented in TVM infrastructure side: Jenkins or GitHub Actions, for example. Your mirroring job would just see :latest
images being published.
As an aside, I think we were being more cost-conscious with CI, also something to keep in mind.
In case there is interest, I can expand on this suggestion.