[monorepo] CI generates its own images
The images used by the CI jobs used to be generated in a separate repository (tezos/opam-repository). This milestone aims to bring them inside tezos/tezos.
NOTE: a lot of the work is actually happening in tezos/opam-repository (preliminary simplifications and all) but we cannot assign milestone across repositories.
Motivation
Currently, tezos/opam-repository has two purposes:
- force devs, users and the CI to use the same set of dependencies, with the same versions;
- generate Docker images with those dependencies for the CI.
Having this separate repository makes it significantly harder to update Octez dependencies.
Scope
The technical solution that was chosen to force dependencies is to have tezos/opam-repository be an opam repository that we can tell opam to use instead of the default one. It is complex and it lacks flexibility. We want to replace this with a lock file.
Somewhat orthogonally, we want to move Docker image generation to tezos/tezos directly.
Work Breakdown
Using Opam Lock
-
(days) !12029 (merged) Add a script to generate an opam lock file -
(optional) (???) Find a way to not have utopand its dependencies in the lock file.
-
-
(days, ready for review) !12100 (merged) Have make build-depsandmake build-dev-depsuse this lock file instead oftezos/opam-repository -
(days, ready for review) opam-repository!500 (merged) and !12345 (merged) Modify tezos/opam-repositoryto be able to build Docker images from the lock file, ignoring itspackagesfolder- (days) Update Dockerfile and scripts
- (hours) Update the documentation regarding how to update Octez dependencies
- (minutes) Remove the
packagesfolder fromtezos/opam-repository - (hours) Remove
update_opam_repo.shfromtezos/tezos, and the check that the result of this script an empty patch
- (optional)
(hours) Clean upversion.shintezos/tezosrenamefull_opam_repository_tag,opam_repository_tagto better reflect their new rolesmaybe some other variables are no longer needed