Commit fa821f23 authored by Daniel P. Berrangé's avatar Daniel P. Berrangé Committed by Alex Bennée
Browse files

gitlab: build all container images during CI



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.

Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
Message-Id: <20200622153318.751107-3-berrange@redhat.com>
[AJB: tweak the tag format]
Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Acked-by: default avatarThomas Huth <thuth@redhat.com>
Message-Id: <20200701135652.1366-22-alex.bennee@linaro.org>
parent d0caa0a8
Loading
Loading
Loading
Loading
+245 −0
Original line number Diff line number Diff line
.container_job_template: &container_job_definition
  image: docker:stable
  stage: containers
  services:
    - docker:dind
  before_script:
    - export TAG="$CI_REGISTRY_IMAGE/qemu/$NAME:latest"
    - export COMMON_TAG="$CI_REGISTRY/qemu-project/qemu/$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/qemu/," 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

amd64-centos8-container:
  <<: *container_job_definition
  variables:
    NAME: centos8

amd64-debian10-container:
  <<: *container_job_definition
  variables:
    NAME: debian10

amd64-debian11-container:
  <<: *container_job_definition
  variables:
    NAME: debian11

amd64-debian9-container:
  <<: *container_job_definition
  variables:
    NAME: debian9

amd64-debian9-mxe-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian9-container']
  variables:
    NAME: debian9-mxe

alpha-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-alpha-cross

amd64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-amd64-cross

amd64-debian-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-amd64

arm64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-arm64-cross

arm64-test-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian11-container']
  variables:
    NAME: debian-arm64-test-cross

armel-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-armel-cross

armhf-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-armhf-cross

hppa-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-hppa-cross

m68k-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-m68k-cross

mips64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-mips64-cross

mips64el-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-mips64el-cross

mips-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-mips-cross

mipsel-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-mipsel-cross

powerpc-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-powerpc-cross

ppc64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-ppc64-cross

ppc64el-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-ppc64el-cross

riscv64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-riscv64-cross

s390x-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-s390x-cross

sh4-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-sh4-cross

sparc64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian10-container']
  variables:
    NAME: debian-sparc64-cross

tricore-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer2
  needs: ['amd64-debian9-container']
  variables:
    NAME: debian-tricore-cross

win32-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer3
  needs: ['amd64-debian9-mxe-container']
  variables:
    NAME: debian-win32-cross

win64-debian-cross-container:
  <<: *container_job_definition
  stage: containers-layer3
  needs: ['amd64-debian9-mxe-container']
  variables:
    NAME: debian-win64-cross

xtensa-debian-cross-container:
  <<: *container_job_definition
  variables:
    NAME: debian-xtensa-cross

cris-fedora-cross-container:
  <<: *container_job_definition
  variables:
    NAME: fedora-cris-cross

amd64-fedora-container:
  <<: *container_job_definition
  variables:
    NAME: fedora

i386-fedora-cross-container:
  <<: *container_job_definition
  variables:
    NAME: fedora-i386-cross

amd64-ubuntu1804-container:
  <<: *container_job_definition
  variables:
    NAME: ubuntu1804

amd64-ubuntu2004-container:
  <<: *container_job_definition
  variables:
    NAME: ubuntu2004

amd64-ubuntu-container:
  <<: *container_job_definition
  variables:
    NAME: ubuntu
+3 −0
Original line number Diff line number Diff line
stages:
  - containers
  - containers-layer2
  - containers-layer3
  - build

include:
  - local: '/.gitlab-ci.d/edk2.yml'
  - local: '/.gitlab-ci.d/opensbi.yml'
  - local: '/.gitlab-ci.d/containers.yml'

.update_apt_template: &before_script_apt
 before_script: