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