From 9cb8aac6c453a968433f5f223da92a249d1f20de Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Fri, 9 Feb 2024 12:48:34 +0100
Subject: [PATCH] PIPELINE: custom docker image for testing

---
 .gitlab-ci.yml   | 37 ++++++++++++++++++++++++++++++++++---
 .test/Dockerfile | 10 ++++++++++
 2 files changed, 44 insertions(+), 3 deletions(-)
 create mode 100644 .test/Dockerfile

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 37e7e57..d30512d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,8 @@
+variables:
+  CI_REGISTRY_IMAGE_ENV: $CI_REGISTRY/fdo/fdo-manager-webui/testenv:$CI_COMMIT_REF_NAME
 
 default:
-  image: node:lts-alpine
+  image: docker:22.06-rc
   tags:
     - docker
 
@@ -9,10 +11,39 @@ workflow:
     - if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_NAME != $CI_COMMIT_TAG
 
 stages:
+  - setup
   - test
 
-webui:build-test:
-  stage: test
+webui:setup:
+  stage: setup
+  rules:
+    - if: $RUN_SETUP_STAGE == "false"
+      when: never
+    - if: $CI_PIPELINE_SOURCE == "schedule"
+    - if: $CI_PIPELINE_SOURCE == "web"
+    - if: $CI_PIPELINE_SOURCE != "schedule"
+      changes:
+        - .test/Dockerfile
+        - package.json
+        - package-lock.json
+        - .gitlab-ci.yml
   script:
+    - echo "registry $CI_REGISTRY"
+    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
+    - docker build --pull -t $CI_REGISTRY_IMAGE_ENV -f .test/Dockerfile .
+    - docker push $CI_REGISTRY_IMAGE_ENV
+
+.webui:job: &webui-job
+  image: $CI_REGISTRY_IMAGE_ENV
+  stage: test
+  needs:
+    - job: "webui:setup"
+      optional: true
+  before_script:
+    - cp -r -t ./ /webui/node_modules
     - npm install
+
+webui:build-test:
+  <<: *webui-job
+  script:
     - npm run build
diff --git a/.test/Dockerfile b/.test/Dockerfile
new file mode 100644
index 0000000..501edfd
--- /dev/null
+++ b/.test/Dockerfile
@@ -0,0 +1,10 @@
+FROM node:lts-alpine
+
+COPY ./package.json /webui/package.json
+COPY ./package-lock.json /webui/package-lock.json
+
+WORKDIR /webui
+
+RUN npm install
+
+ENTRYPOINT [""]
-- 
GitLab