summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorOleg Vasilev <oleg.vasilev@intel.com>2019-08-28 15:48:39 +0300
committerArkadiusz Hiler <arkadiusz.hiler@intel.com>2019-08-29 13:18:35 +0300
commit1a6c9018e76d4e57f88ee96fd3d1ba1d0a668006 (patch)
treeeacb30eab6594e2d32e79996e29b225ff8ce5aef /.gitlab-ci.yml
parent27d1e768e59a85c67458dca09a7f790ad6e9445d (diff)
gitlab-ci: rebuild images only on Dockerfile changes
Base images rarely change, there is not much sense in rebuilding it on every commit. GitLab already has mechanism for detecting such changes. However, it is only able to prevent rebuilding whenever there is no changes within the same ref. Since in our CI system, git tag is created on every series, the mechanism doesn't work. One possible way to workaround that is to compute a checksum of a Dockerfile, and rebuilding only if there was no image built with the same checksum. V2: - Rename gitlab-ci to .gitlab-ci (Arek) - Add commit-$CI_COMMIT_SHA Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml39
1 files changed, 6 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 #########################