From 0f12bd6ed222da0500354b4cea4dcd164693cd28 Mon Sep 17 00:00:00 2001
From: "robinwilliam.hundt" <robinwilliam.hundt@stud.uni-goettingen.de>
Date: Thu, 21 Feb 2019 15:31:43 +0100
Subject: [PATCH] Changes in CI Pipeline and tagging of images

Every branch shares the same dev-image and dev-image-base used for caching during the build image step.
On master, only tag commits are built and the image has the tag number
---
 .gitlab-ci.yml | 41 +++++++++++++++++++++++++++++++++--------
 1 file changed, 33 insertions(+), 8 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 78626289..6374c45f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,7 +7,9 @@ stages:
   - staging
 
 variables:
-  CONTAINER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
+  DEV_IMAGE: $CI_REGISTRY_IMAGE/dev-image
+  DEV_IMAGE_BASE: $CI_REGISTRY_IMAGE/dev-image-base
+  RELEASE_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
   DOCKER_DRIVER: overlay2
 
 # ========================== Build Testing section =========================== #
@@ -116,9 +118,34 @@ test_frontend_unit:
 
 
 # =========================== Build Image section ============================ #
-build_backend:
+build_dev_image:
   image: docker:latest
   stage: build_image
+  only:
+    - branches
+  services:
+    - docker:dind
+  variables:
+    DOCKER_HOST: tcp://docker:2375/
+    DOCKER_DRIVER: overlay2
+  script:
+    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
+    - docker pull $DEV_IMAGE_BASE || true
+    - docker build --cache-from $DEV_IMAGE_BASE -t $DEV_IMAGE_BASE --target node .
+    - docker pull $DEV_IMAGE || true
+    - docker build --cache-from $DEV_IMAGE --cache-from $DEV_IMAGE_BASE -t $DEV_IMAGE .
+    - docker push $DEV_IMAGE_BASE
+    - docker push $DEV_IMAGE
+  tags:
+    - docker
+
+build_release_image:
+  image: docker:latest
+  stage: build_image
+  only:
+    - tags
+  except:
+    - branches
   services:
     - docker:dind
   variables:
@@ -126,12 +153,10 @@ build_backend:
     DOCKER_DRIVER: overlay2
   script:
     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
-    - docker pull "$CONTAINER_IMAGE-base" || true
-    - docker build --cache-from "$CONTAINER_IMAGE-base" -t "$CONTAINER_IMAGE-base" --target node .
-    - docker pull $CONTAINER_IMAGE || true
-    - docker build --cache-from $CONTAINER_IMAGE --cache-from "$CONTAINER_IMAGE-base" -t $CONTAINER_IMAGE .
-    - docker push "$CONTAINER_IMAGE-base"
-    - docker push $CONTAINER_IMAGE
+    - docker pull $DEV_IMAGE_BASE || true
+    - docker pull $DEV_IMAGE || true
+    - docker build --cache-from $DEV_IMAGE --cache-from $DEV_IMAGE_BASE -t $RELEASE_IMAGE .
+    - docker push $RELEASE_IMAGE
   tags:
     - docker
 
-- 
GitLab