On 6/22/20 5:33 PM, Daniel P. Berrangé wrote: > We have a number of container images in tests/docker/dockerfiles > that are intended to provide well defined environments for doing > test builds. We want our CI system to use these containers too. > > This introduces builds of all of them as the first stage in the > CI, so that the built containers are available for later build > jobs. The containers are setup to use the GitLab container > registry as the cache, so we only pay the penalty of the full > build when the dockerfiles change. The main qemu-project/qemu > repo is used as a second cache, so that users forking QEMU will > see a fast turnaround time on their CI jobs.
OMG you did it! Lovely... đ Looking at https://gitlab.com/berrange/qemu/-/pipelines/158854797 why gitlab isn't caching the docker images? the cache isn't populated on all the runners yet? Or we have to use the same runner again to hit its cache? > > Signed-off-by: Daniel P. BerrangĂ© <berra...@redhat.com> > --- > .gitlab-ci.d/containers.yml | 248 ++++++++++++++++++++++++++++++++++++ > .gitlab-ci.yml | 3 + > 2 files changed, 251 insertions(+) > create mode 100644 .gitlab-ci.d/containers.yml > > diff --git a/.gitlab-ci.d/containers.yml b/.gitlab-ci.d/containers.yml > new file mode 100644 > index 0000000000..ea1edbb196 > --- /dev/null > +++ b/.gitlab-ci.d/containers.yml > @@ -0,0 +1,248 @@ > + > + > +.container_job_template: &container_job_definition > + image: docker:stable > + stage: containers > + services: > + - docker:dind > + before_script: > + - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" > + - export COMMON_TAG="$CI_REGISTRY/qemu-project/qemu/ci-$NAME:latest" > + - docker info > + - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p > "$CI_REGISTRY_PASSWORD" > + script: > + - docker pull "$TAG" || docker pull "$COMMON_TAG" || true > + - sed -i -e "s,FROM qemu:,FROM $CI_REGISTRY_IMAGE/ci-," > tests/docker/dockerfiles/$NAME.docker > + - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag > "$TAG" -f "tests/docker/dockerfiles/$NAME.docker" tests/docker/dockerfiles > + - docker push "$TAG" > + after_script: > + - docker logout > + > +amd64-centos7-container: > + <<: *container_job_definition > + variables: > + NAME: centos7 [...]