From 0525ab6b25bc0b14c2689632c4fbb523b676d02d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Wed, 15 Nov 2023 16:35:16 +0100
Subject: [PATCH] CI/CD => Add test release

---
 AssignmentChecker/.gitlab-ci/00_vars.yml      |  5 +++++
 AssignmentChecker/.gitlab-ci/01_functions.yml | 21 ++++++++++++++-----
 AssignmentChecker/.gitlab-ci/03_stages.yml    |  5 ++++-
 AssignmentChecker/.gitlab-ci/05_stageTest.yml |  2 +-
 .../.gitlab-ci/06_stageBuild.yml              |  2 +-
 .../.gitlab-ci/09_stageRelease.yml            |  2 +-
 6 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/AssignmentChecker/.gitlab-ci/00_vars.yml b/AssignmentChecker/.gitlab-ci/00_vars.yml
index 0af94a7..e54032a 100644
--- a/AssignmentChecker/.gitlab-ci/00_vars.yml
+++ b/AssignmentChecker/.gitlab-ci/00_vars.yml
@@ -6,9 +6,14 @@ variables:
     DOCKER_TLS_CERTDIR:
     DOCKER_DRIVER: overlay2
 
+    DOCKER_REGISTRY: docker.io
+    DOCKER_REGISTRY_USER: dojohesso
+    DOCKER_REGISTRY_IMAGE: dojohesso/dojo_assignment_checker
+
     PROJECT_NAME: DojoAssignmentChecker
 
     VERSION_DEV_SUFFIX: '-dev'
+    VERSION_TEST_SUFFIX: '-test'
 
     GITLAB_API_PROJECT_URL: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}
 
diff --git a/AssignmentChecker/.gitlab-ci/01_functions.yml b/AssignmentChecker/.gitlab-ci/01_functions.yml
index f0675a5..fc18fd1 100644
--- a/AssignmentChecker/.gitlab-ci/01_functions.yml
+++ b/AssignmentChecker/.gitlab-ci/01_functions.yml
@@ -1,7 +1,19 @@
+.get_vars:
+    script:
+        - IS_DEV=$([[ $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_COMMIT_BRANCH != "test" ]] && echo true || echo false)
+        - IS_TEST=$([[ $CI_COMMIT_BRANCH == "test" ]] && echo true || echo false)
+        - |
+            if [[ $IS_TEST == true ]]; then
+                DOCKER_REGISTRY_USER="dojohessotest"
+                DOCKER_REGISTRY_IMAGE="dojohesso/dojo-test_assignment_checker"
+                DOCKER_REGISTRY_PASSWORD=$DOCKER_TEST_REGISTRY_PASSWORD
+                DOTENV_PROD_KEY=$DOTENV_TEST_KEY
+            fi
+
+
 .get_version:
     script:
-        - IS_DEV=$([[ $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH ]] && echo false || echo true)
-        - VERSION=$(jq -r .version $PROJECT_FOLDER/package.json)$([[ $IS_DEV == true ]] && echo $VERSION_DEV_SUFFIX || echo '')
+        - VERSION=$(jq -r .version $PROJECT_FOLDER/package.json)$([[ $IS_TEST == true ]] && echo $VERSION_TEST_SUFFIX || echo '' )$([[ $IS_DEV == true ]] && echo $VERSION_DEV_SUFFIX || echo '')
 
 
 .get_packages_url:
@@ -21,7 +33,7 @@
 
         # Init docker buildx
         - |
-            if [ $CI_COMMIT_REF_PROTECTED == "true" ]; then
+            if [[ $CI_COMMIT_REF_PROTECTED == "true" || $IS_TEST == true ]]; then
                 docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY
             fi
         - docker buildx create --use
@@ -41,12 +53,11 @@
         - cd $PROJECT_FOLDER
         - sed -i -r "s/\{\{VERSION\}\}/${VERSION}/g" src/app.ts
         - |
-            if [ $CI_COMMIT_REF_PROTECTED == "true" ]; then
+            if [[ $CI_COMMIT_REF_PROTECTED == "true" || $IS_TEST == true ]]; then
                 echo "Decrypt production env vars"
                 sed -i -r "s/(DOTENV_KEY[ ]*:[ ]*[\'\"\`])[^'\"\`]*([\'\"\`])([ ]*\,)?//g" src/app.ts
                 sed -i -r "s/,[\ \n]*\}/\}/g" src/app.ts
                 npx dotenv-vault local decrypt "${DOTENV_PROD_KEY}" > .env
-            
             fi
         - cd ..
 
diff --git a/AssignmentChecker/.gitlab-ci/03_stages.yml b/AssignmentChecker/.gitlab-ci/03_stages.yml
index 198b85a..a996eca 100644
--- a/AssignmentChecker/.gitlab-ci/03_stages.yml
+++ b/AssignmentChecker/.gitlab-ci/03_stages.yml
@@ -4,4 +4,7 @@ stages:
     - build
     - clean
     - upload
-    - release
\ No newline at end of file
+    - release
+
+before_script:
+    - !reference [ .get_vars, script ]
\ No newline at end of file
diff --git a/AssignmentChecker/.gitlab-ci/05_stageTest.yml b/AssignmentChecker/.gitlab-ci/05_stageTest.yml
index a1b5642..ccb013b 100644
--- a/AssignmentChecker/.gitlab-ci/05_stageTest.yml
+++ b/AssignmentChecker/.gitlab-ci/05_stageTest.yml
@@ -9,4 +9,4 @@ test:build:
     script:
         - !reference [ .build_script, script ]
     rules:
-        -   if: '$CI_COMMIT_TAG =~ "/^$/" && $CI_COMMIT_REF_PROTECTED != "true"'
\ No newline at end of file
+        -   if: '$CI_COMMIT_TAG =~ "/^$/" && $CI_COMMIT_REF_PROTECTED != "true" && $CI_COMMIT_BRANCH != "test"'
\ No newline at end of file
diff --git a/AssignmentChecker/.gitlab-ci/06_stageBuild.yml b/AssignmentChecker/.gitlab-ci/06_stageBuild.yml
index e2acdd1..a0c6ca4 100644
--- a/AssignmentChecker/.gitlab-ci/06_stageBuild.yml
+++ b/AssignmentChecker/.gitlab-ci/06_stageBuild.yml
@@ -12,4 +12,4 @@ build:version:
         # Here docker buildx can use cached images created in previous step
         - docker buildx build --platform $DOCKER_PLATFORMS --file $DOCKERFILE --push --tag $CONTAINER_IMAGE .
     rules:
-        -   if: '$CI_COMMIT_REF_PROTECTED == "true"'
\ No newline at end of file
+        -   if: '$CI_COMMIT_REF_PROTECTED == "true" || $CI_COMMIT_BRANCH == "test"'
\ No newline at end of file
diff --git a/AssignmentChecker/.gitlab-ci/09_stageRelease.yml b/AssignmentChecker/.gitlab-ci/09_stageRelease.yml
index 325d173..ad039e9 100644
--- a/AssignmentChecker/.gitlab-ci/09_stageRelease.yml
+++ b/AssignmentChecker/.gitlab-ci/09_stageRelease.yml
@@ -12,7 +12,7 @@ release:dockerhub:latest:
         # Push latest tag
         - docker buildx imagetools create $CONTAINER_IMAGE --tag $DOCKER_REGISTRY_IMAGE:latest
     rules:
-        -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+        -   if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "test"'
 
 
 release:wiki:
-- 
GitLab