mirror of https://github.com/xemu-project/xemu.git
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: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20200622153318.751107-3-berrange@redhat.com> [AJB: tweak the tag format] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Acked-by: Thomas Huth <thuth@redhat.com> Message-Id: <20200701135652.1366-22-alex.bennee@linaro.org>
This commit is contained in:
parent
d0caa0a881
commit
fa821f23e1
|
@ -0,0 +1,245 @@
|
||||||
|
.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
|
|
@ -1,10 +1,13 @@
|
||||||
stages:
|
stages:
|
||||||
- containers
|
- containers
|
||||||
|
- containers-layer2
|
||||||
|
- containers-layer3
|
||||||
- build
|
- build
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- local: '/.gitlab-ci.d/edk2.yml'
|
- local: '/.gitlab-ci.d/edk2.yml'
|
||||||
- local: '/.gitlab-ci.d/opensbi.yml'
|
- local: '/.gitlab-ci.d/opensbi.yml'
|
||||||
|
- local: '/.gitlab-ci.d/containers.yml'
|
||||||
|
|
||||||
.update_apt_template: &before_script_apt
|
.update_apt_template: &before_script_apt
|
||||||
before_script:
|
before_script:
|
||||||
|
|
Loading…
Reference in New Issue