To avoid conflicts with the base images when building two different branches or tags at the same time, let's use different base/llvm image names.
This way if both branches require different dependencies each one will use its own base/llvm images. Signed-off-by: Juan A. Suarez Romero <jasua...@igalia.com> --- .gitlab-ci.yml | 12 +++++++----- gitlab-ci/Rockerfile.base | 6 ++++-- gitlab-ci/Rockerfile.llvm | 9 ++++++--- gitlab-ci/Rockerfile.mesa | 15 ++++++++------- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d66def2e7bb..0514d5d4ef8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,17 +39,18 @@ after_script: cache: {} script: - DOCKERFILE_SHA256=$(cat gitlab-ci/Rockerfile.base gitlab-ci/Rockerfile.llvm | sha256sum | cut -c-64) - - IMAGE_DOCKERFILE_SHA256=$(./gitlab-ci/inspect-remote-image.sh gitlab-ci-token $CI_BUILD_TOKEN $CI_PROJECT_PATH "llvm-$LLVM" ".config.Labels[\"dockerfile.sha256\"]" || echo -n "<notfound>") + - IMAGE_TAG=$CI_COMMIT_REF_SLUG-llvm-$LLVM + - IMAGE_DOCKERFILE_SHA256=$(./gitlab-ci/inspect-remote-image.sh gitlab-ci-token $CI_BUILD_TOKEN $CI_PROJECT_PATH $IMAGE_TAG ".config.Labels[\"dockerfile.sha256\"]" || echo -n "<notfound>") - if [ "$DOCKERFILE_SHA256" != "$IMAGE_DOCKERFILE_SHA256" ] || [ "$CI_PIPELINE_SOURCE" == "schedule" ] ; then FORCE_BUILD=true ; fi - if [ "$FORCE_BUILD" ] ; then ../rocker build -f gitlab-ci/Rockerfile.llvm --var DOCKERFILE_SHA256=$DOCKERFILE_SHA256 --var LLVM=$LLVM ; fi - - if [ "$FORCE_BUILD" ] ; then docker push $CI_REGISTRY_IMAGE:llvm-$LLVM ; fi + - if [ "$FORCE_BUILD" ] ; then docker push $CI_REGISTRY_IMAGE:$IMAGE_TAG ; fi .build_mesa: &build_mesa stage: mesa except: - schedules script: - - ../rocker build -f gitlab-ci/Rockerfile.mesa --var BUILD=$BUILD --var LLVM=$LLVM --var TAG=$CI_COMMIT_REF_SLUG . + - ../rocker build -f gitlab-ci/Rockerfile.mesa --var BUILD=$BUILD --var LLVM=$LLVM . .build_tarball: &build_tarball stage: tarball @@ -65,10 +66,11 @@ base: stage: base script: - DOCKERFILE_SHA256=$(cat gitlab-ci/Rockerfile.base | sha256sum | cut -c-64) - - IMAGE_DOCKERFILE_SHA256=$(./gitlab-ci/inspect-remote-image.sh gitlab-ci-token $CI_BUILD_TOKEN $CI_PROJECT_PATH "base" ".config.Labels[\"dockerfile.sha256\"]" || echo -n "<notfound>") + - IMAGE_TAG=$CI_COMMIT_REF_SLUG-base + - IMAGE_DOCKERFILE_SHA256=$(./gitlab-ci/inspect-remote-image.sh gitlab-ci-token $CI_BUILD_TOKEN $CI_PROJECT_PATH $IMAGE_TAG ".config.Labels[\"dockerfile.sha256\"]" || echo -n "<notfound>") - if [ "$DOCKERFILE_SHA256" != "$IMAGE_DOCKERFILE_SHA256" ] || [ "$CI_PIPELINE_SOURCE" == "schedule" ] ; then FORCE_BUILD=true ; fi - if [ "$FORCE_BUILD" ] ; then ../rocker build -f gitlab-ci/Rockerfile.base --var DOCKERFILE_SHA256=$DOCKERFILE_SHA256 ; fi - - if [ "$FORCE_BUILD" ] ; then docker push $CI_REGISTRY_IMAGE:base ; fi + - if [ "$FORCE_BUILD" ] ; then docker push $CI_REGISTRY_IMAGE:$IMAGE_TAG ; fi llvm:3.3: variables: diff --git a/gitlab-ci/Rockerfile.base b/gitlab-ci/Rockerfile.base index 2e14875ce5a..99fce905c47 100644 --- a/gitlab-ci/Rockerfile.base +++ b/gitlab-ci/Rockerfile.base @@ -7,12 +7,14 @@ # ~~~ # # Environment variables that are used in the build: -# - DOCKER_IMAGE: name of the final image to be tagged (default: mesa:base) +# - CI_COMMIT_REF_SLUG: branch/tag name, escaped +# - DOCKER_IMAGE: name of the final image to be tagged (default: mesa:esa:$CI-COMMIT_REF_SLUG-base) # - MAKEFLAGS: flags to pass to make (e.g., "-j8") # - CCACHE_DIR: ccache directory (e.g, ~/.ccache) # {{ $image := (or .Env.DOCKER_IMAGE "mesa") }} +{{ $tag := (print (or .Env.CI_COMMIT_REF_SLUG "local") "-base") }} FROM ubuntu:xenial @@ -184,4 +186,4 @@ RUN wget https://wayland.freedesktop.org/releases/wayland-protocols-1.8.tar.xz USER root -TAG {{ $image }}:base +TAG {{ $image }}:{{ $tag }} diff --git a/gitlab-ci/Rockerfile.llvm b/gitlab-ci/Rockerfile.llvm index cb2906d9a40..ae68a4a9885 100644 --- a/gitlab-ci/Rockerfile.llvm +++ b/gitlab-ci/Rockerfile.llvm @@ -8,7 +8,8 @@ # ~~~ # # Environment variables that are used in the build: -# - DOCKER_IMAGE: name of the final image to be tagged (default: mesa:$LLVM) +# - CI_COMMIT_REF_SLUG: branch/tag name, escaped +# - DOCKER_IMAGE: name of the final image to be tagged (default: mesa:$CI_COMMIT_REF_SLUG-$LLVM) # # NOTE: LLVM 3.3 package has been created with checkinstall using Base image # @@ -27,8 +28,10 @@ {{ $image := (or .Env.DOCKER_IMAGE "mesa") }} {{ $distro := "xenial" }} +{{ $basetag := (or .Env.CI_COMMIT_REF_SLUG "local") }} +{{ $tag := (print $basetag "-llvm-" .LLVM) }} -FROM {{ $image }}:base +FROM {{ $image }}:{{ $basetag }}-base LABEL maintainer "Juan A. Suarez Romero <jasua...@igalia.com>" LABEL dockerfile.sha256 {{ .DOCKERFILE_SHA256 }} @@ -56,4 +59,4 @@ RUN apt-get update \ && rm -fr /var/lib/apt/lists/* {{ end }} -TAG {{ $image }}:llvm-{{ .LLVM }} +TAG {{ $image }}:{{ $tag }} diff --git a/gitlab-ci/Rockerfile.mesa b/gitlab-ci/Rockerfile.mesa index 23add521fc7..9a23d70297b 100644 --- a/gitlab-ci/Rockerfile.mesa +++ b/gitlab-ci/Rockerfile.mesa @@ -6,11 +6,11 @@ # --var BUILD=autotools # meson, scons, autotools, windows, distcheck, gallium \ # [--var DEBUG=true] # build with debug options (true, false) \ # [--var LLVM=3.3] # 3.3, 3.6, 3.8, 3.9, 4.0, ... \ -# [--var TAG=master] # master, staging-18.0, staging-18.1, ... \ # ~~~ # # Environment variables that are used in the build: -# - DOCKER_IMAGE: name of the final image to be tagged (default: mesa[:$TAG]) +# - CI_COMMIT_REF_SLUG: branch/tag name, escape +# - DOCKER_IMAGE: name of the final image to be tagged (default: mesa[:$CI_COMMIT_REF_SLUG]) # - MAKEFLAGS: flags to pass to make (e.g., "-j8") # - CCACHE_DIR: ccache directory (e.g., ~/.ccache) # @@ -18,13 +18,14 @@ {{ $image := (or .Env.DOCKER_IMAGE "mesa") }} {{ $llvm_version := (or .LLVM "0.0") }} {{ $debug_build := (or .DEBUG "true") }} +{{ $tag := (or .Env.CI_COMMIT_REF_SLUG "local") }} {{ if eq .BUILD "windows"}} -FROM {{ $image }}:base +FROM {{ $image }}:{{ $tag }}-base {{ else if eq $llvm_version "0.0" }} -FROM {{ $image }}:base +FROM {{ $image }}:{{ $tag }}-base {{ else }} -FROM {{ $image }}:llvm-{{ .LLVM }} +FROM {{ $image }}:{{ $tag }}-llvm-{{ .LLVM }} {{ end }} LABEL maintainer "Juan A. Suarez Romero <jasua...@igalia.com>" @@ -127,6 +128,6 @@ WORKDIR /home/local USER root -{{ if .TAG }} -TAG {{ $image }}:{{ .TAG }} +{{ if .Env.CI_COMMIT_REF_SLUG }} +TAG {{ $image }}:{{ .Env.CI_COMMIT_REF_SLUG }} {{ end }} -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev