From 3f9a08865883f2caececcf6b0628aa5d6ce9455a Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 7 Jun 2021 00:42:38 +0200
Subject: [PATCH] WIP: pipeline

---
 .gitlab-ci.yml | 68 +++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 53 insertions(+), 15 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bd99054..b703f57 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,33 +21,55 @@
 #
 
 variables:
-  CI_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-cpplib/testenv:latest
-  CPP_INT_TEST_REPO: https://gitlab.indiscale.com/api/v4/projects/111/trigger/pipeline
-  INT_TEST_REPO: $CPP_INT_TEST_REPO
+  CPPLIB_TESTENV_IMAGE_SUFFIX: $CI_COMMIT_REF_NAME
+  CPPLIB_REPO_PATH: caosdb/src/caosdb-cpplib
+  CPPLIB_TESTENV_IMAGE_TAG: ${CPPLIB_REPO_PATH}/testenv:${CPPLIB_IMAGE_SUFFIX}
+  CPPLIB_REGISTRY_IMAGE: ${CI_REGISTRY}/${CPPLIB_IMAGE_TAG}
+  CPPLIB_IMAGE_CACHE: ${CPPLIB_IMAGE_TAG}.tar
+
+  CPPINTTEST_REPO: https://gitlab.indiscale.com/api/v4/projects/111
+  CPPINTTEST_PIPELINE: $CPPINTTEST_REPO/trigger/pipeline
+  CPPINTTEST_BRANCHES: $CPPINTTEST_REPO/branches
   GIT_SUBMODULE_STRATEGY: normal
 
-image: $CI_REGISTRY_IMAGE
+  ## FOR DEBUGGING
+  TRIGGERED_BY_REPO: CPPINTTEST
+  TRIGGERED_BY_REF: $CI_COMMIT_REF_NAME
+  TRIGGERED_BY_HASH: $CI_COMMIT_SHORT_SHA
+
+
+image: $CPPLIB_REGISTRY_IMAGE
 
 stages:
+  - info
   - setup
   - test
   - deploy
 
+info:
+  tags: [cached-dind]
+  image: docker:20.10
+  stage: setup_tests
+  timeout: 1 minutes
+  needs: []
+  script:
+    - echo "Pipeline triggered by $TRIGGERED_BY_REPO@$TRIGGERED_BY_REF ($TRIGGERED_BY_HASH)"
+
 # Build a docker image in which tests for this repository can run
 build-testenv:
-  tags: [ cached-dind ]
+  tags: [ docker ]
   image: docker:20.10
   stage: setup
   script:
     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
       # use here general latest or specific branch latest...
-    - docker pull $CI_REGISTRY_IMAGE|| true
+    - docker pull $CPPLIB_REGISTRY_IMAGE|| true
     - docker build 
       -f .docker/Dockerfile
       --pull
-      --cache-from $CI_REGISTRY_IMAGE
-      -t $CI_REGISTRY_IMAGE .
-    - docker push $CI_REGISTRY_IMAGE
+      --cache-from $CPPLIB_REGISTRY_IMAGE
+      -t $CPPLIB_REGISTRY_IMAGE .
+    - docker push $CPPLIB_REGISTRY_IMAGE
 
 # formatting with clang-format
 code_style:
@@ -70,21 +92,37 @@ test:
 
 # trigger the integration tests
 trigger_inttest:
+  image: docker:20.10
   tags: [ docker ]
   stage: deploy
   script:
-    - CPPINT_REF=main
-    - TRIGGERED_BY_REPO=${TRIGGERED_BY_REPO:-CPPLIB}
-    - TRIGGERED_BY_REF=${TRIGGERED_BY_REF:-$CI_COMMIT_REF_NAME}
-    - TRIGGERED_BY_HASH=${TRIGGERED_BY_HASH:-$CI_COMMIT_SHORT_SHA}
-    - curl google.de
 
+    ## Determine the cppinttest branch...
+    - command -v wget
+    # ... use an f-branch if posible...
+    - if echo "$CI_COMMIT_REF_NAME" | grep -c "^f-" ; then
+        echo "Check if caosdb_cppinttest has branch $CI_COMMIT_REF_NAME" ;
+        if wget ${CPPINTTEST_BRANCHES}/${CI_COMMIT_REF_NAME} ; then
+          # caosdb-cppinttest has this f-branch
+          CPPINT_REF=$CI_COMMIT_REF_NAME ;
+        fi;
+      fi;
+    # ... or use main if possible...
+    - if [[ "$CI_COMMIT_REF_NAME" == "main" ]] ; then
+        CPPINT_REF=main ;
+      fi
+    # ... and fall-back to dev
+    - CPPINT_REF=${CPPINT_REF:-dev}
+
+    - echo "Triggering caosdb-cppinttest@${CPPINT_REF}"
     - curl -w "%{stderr}HTTPCODE=%{http_code}" -X POST
       -F token=$CI_JOB_TOKEN
       -F "variables[TRIGGERED_BY_REPO]=$TRIGGERED_BY_REPO"
       -F "variables[TRIGGERED_BY_REF]=$TRIGGERED_BY_REF"
       -F "variables[TRIGGERED_BY_HASH]=$TRIGGERED_BY_HASH"
-      -F ref=${CPPINT_REF} $INT_TEST_REPO 2>HTTPCODE
+      -F ref=${CPPINT_REF} $CPPINTTEST_PIPELINE 2>HTTPCODE
+
+    # fail if the request failed
     - grep -c "HTTPCODE=2" HTTPCODE
 
 # Build the sphinx documentation and make it ready for deployment by Gitlab Pages
-- 
GitLab