diff options
-rw-r--r-- | .gitlab-ci.yml | 39 | ||||
-rwxr-xr-x | .gitlab-ci/pull-or-rebuild.sh | 56 |
2 files changed, 62 insertions, 33 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3433ca08..0d40b493 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,11 +22,6 @@ stages: build-containers:build-debian: stage: build-containers image: docker:stable - only: - changes: - - Dockefile.build-debian-minimal - - Dockefile.build-debian - - .gitlab-ci.yml services: - docker:dind variables: @@ -34,18 +29,12 @@ build-containers:build-debian: DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-minimal -t build-debian-minimal -f Dockefile.build-debian-minimal . - - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/build-debian -f Dockefile.build-debian . - - docker push $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-minimal - - docker push $CI_REGISTRY/$CI_PROJECT_PATH/build-debian + - .gitlab-ci/pull-or-rebuild.sh Dockerfile.build-debian-minimal build-debian-minimal + - .gitlab-ci/pull-or-rebuild.sh Dockerfile.build-debian build-debian build-containers:build-debian-armhf: stage: build-containers image: docker:stable - only: - changes: - - Dockefile.build-debian-armhf - - .gitlab-ci.yml services: - docker:dind variables: @@ -53,16 +42,11 @@ build-containers:build-debian-armhf: DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-armhf -f Dockefile.build-debian-armhf . - - docker push $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-armhf + - .gitlab-ci/pull-or-rebuild.sh Dockerfile.build-debian-armhf build-debian-armhf build-containers:build-debian-arm64: stage: build-containers image: docker:stable - only: - changes: - - Dockefile.build-debian-arm64 - - .gitlab-ci.yml services: - docker:dind variables: @@ -70,16 +54,11 @@ build-containers:build-debian-arm64: DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-arm64 -f Dockefile.build-debian-arm64 . - - docker push $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-arm64 + - .gitlab-ci/pull-or-rebuild.sh Dockerfile.build-debian-arm64 build-debian-arm64 build-containers:build-debian-mips: stage: build-containers image: docker:stable - only: - changes: - - Dockefile.build-debian-mips - - .gitlab-ci.yml services: - docker:dind variables: @@ -87,16 +66,11 @@ build-containers:build-debian-mips: DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-mips -f Dockefile.build-debian-mips . - - docker push $CI_REGISTRY/$CI_PROJECT_PATH/build-debian-mips + - .gitlab-ci/pull-or-rebuild.sh Dockerfile.build-debian-mips build-debian-mips build-containers:build-fedora: stage: build-containers image: docker:stable - only: - changes: - - Dockefile.build-fedora - - .gitlab-ci.yml services: - docker:dind variables: @@ -104,8 +78,7 @@ build-containers:build-fedora: DOCKER_DRIVER: overlay2 script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - docker build -t $CI_REGISTRY/$CI_PROJECT_PATH/build-fedora -f Dockefile.build-fedora . - - docker push $CI_REGISTRY/$CI_PROJECT_PATH/build-fedora + - .gitlab-ci/pull-or-rebuild.sh Dockerfile.build-fedora build-fedora #################### BUILD ######################### diff --git a/.gitlab-ci/pull-or-rebuild.sh b/.gitlab-ci/pull-or-rebuild.sh new file mode 100755 index 00000000..182c8d49 --- /dev/null +++ b/.gitlab-ci/pull-or-rebuild.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# +# Copyright © 2019 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +DOCKERFILE=$1 +NAME=$2 +REF=${3:-${CI_COMMIT_REF_NAME:-latest}} + +REF=$(echo $REF | tr / - ) +IMAGENAME=$CI_REGISTRY/$CI_PROJECT_PATH/$NAME +DOCKERFILE_CHECKSUM=$(sha1sum $DOCKERFILE | cut -d ' ' -f1) + +REFNAME=$IMAGENAME:$REF +DOCKERNAME=$IMAGENAME:dockerfile-$DOCKERFILE_CHECKSUM +COMMITNAME=$IMAGENAME:commit-$CI_COMMIT_SHA + +docker pull $DOCKERNAME +IMAGE_PRESENT=$? + +set -e +if [ $IMAGE_PRESENT -eq 0 ] && [ ${FORCE_REBUILD:-0} -eq 0 ] ; then + echo "Skipping $NAME:$TAG, already built" + docker tag $DOCKERNAME $NAME + docker tag $DOCKERNAME $REFNAME + docker tag $DOCKERNAME $COMMITNAME +else + echo "Building $NAME:$TAG" + docker build -t $DOCKERNAME -t $NAME \ + -t $REFNAME -t $COMMITNAME -f $DOCKERFILE . + docker push $DOCKERNAME +fi +docker push $REFNAME +docker push $COMMITNAME +if [ $TAG = "master" ]; then + docker tag $CHECKNAME $IMAGENAME + docker push $IMAGENAME +fi |