diff options
author | Oleg Vasilev <oleg.vasilev@intel.com> | 2019-08-28 15:48:39 +0300 |
---|---|---|
committer | Arkadiusz Hiler <arkadiusz.hiler@intel.com> | 2019-08-29 13:18:35 +0300 |
commit | 1a6c9018e76d4e57f88ee96fd3d1ba1d0a668006 (patch) | |
tree | eacb30eab6594e2d32e79996e29b225ff8ce5aef /.gitlab-ci.yml | |
parent | 27d1e768e59a85c67458dca09a7f790ad6e9445d (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.yml | 39 |
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 ######################### |