diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c78ebff5e14485fd97f47c32ffe3b0145c6f2fe1..d9a7d07f612348924e2fba2388c641a027f15625 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,35 +1,30 @@
+include:
+  - project: '${HELPERS_PATH}'
+    file: svdh-cicd.yml
+
 variables:
-  HELPERS_FILE: docker-build.yml
-  APP_HELM_NAME: task
-  DOCKER_FILE: deployment/ci/Dockerfile
+  RUNNER_AMD: amd64-docker
+  DOCKER_FILE: ./deployment/ci/Dockerfile
+  GO_VERSION: 1.22.4
 
 stages:
-  - compile
   - test
   - build
-  - manifest
-  - deploy
-
-include:
-  - project: '${HELPERS_PATH}'
-    file: '${HELPERS_FILE}'
-  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
-
+  - trigger-deploy
 lint:
   image: golangci/golangci-lint:v1.50.1
   stage: test
   tags:
     - amd64-docker
-  before_script:
-    - ln -s /builds /go/src/gitlab.com
-    - cd /go/src/gitlab.com/${CI_PROJECT_PATH}
   script:
-    - go version
     - golangci-lint --version
     - golangci-lint run
+  before_script:
+    - ln -s /builds /go/src/gitlab.com
+    - cd /go/src/gitlab.com/${CI_PROJECT_PATH}
 
 unit tests:
-  image: golang:1.19.3
+  image: golang:${GO_VERSION}
   extends: .gotest
   stage: test
   tags:
@@ -38,7 +33,7 @@ unit tests:
   coverage: '/total:\s+\(statements\)\s+(\d+.\d+\%)/'
 
 govulncheck:
-  image: golang:1.19.3
+  image: golang:${GO_VERSION}
   stage: test
   tags:
     - amd64-docker
@@ -50,20 +45,37 @@ govulncheck:
     - go install golang.org/x/vuln/cmd/govulncheck@latest
     - govulncheck ./...
 
-amd64:
-  extends: .docker-build
+build-dev:
+  extends: .docker-build-dev
   stage: build
   tags:
-    - amd64-docker
+    - $RUNNER_AMD
+  rules:
+    # Only run if the branch is not main, the pipeline is not triggered by a merge request and the commit is not a tag
+    - if: '$CI_COMMIT_BRANCH != "main" && $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_TAG == null'
+
+build-stg:
+  extends: .docker-build-dev
+  stage: build
+  tags:
+    - $RUNNER_AMD
+  rules: 
+    - if: '$CI_COMMIT_TAG'
 
-manifest:
-  extends: .manifest-amd64
-  stage: manifest
+deploy-dev:
+  extends: .deploy-dev
+  stage: trigger-deploy
+  needs:
+    - job: build-dev
+  rules:
+      # Only run if the branch is not main, the pipeline is not triggered by a merge request and the commit is not a tag
+    - if: '$CI_COMMIT_BRANCH != "main" && $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_TAG == null'
 
-cloud:
-  extends: .manifest-cloud
-  stage: manifest
 
-release:
-  extends: .manifest-release
-  stage: manifest
+deploy-stg:
+  extends: .deploy-stg
+  stage: trigger-deploy
+  needs:
+    - job: build-stg
+  rules: 
+    - if: '$CI_COMMIT_TAG'
\ No newline at end of file
diff --git a/deployment/ci/Dockerfile b/deployment/ci/Dockerfile
index 729429e4dab363e5bde1fac12470f5c4d3a6b4f6..e7f57e629e79a16b69dc7ebd902d0ca29d94e98b 100644
--- a/deployment/ci/Dockerfile
+++ b/deployment/ci/Dockerfile
@@ -4,11 +4,11 @@ RUN apk add git
 
 WORKDIR /go/src/gitlab.eclipse.org/eclipse/xfsc/tsa/task
 
-ARG APP_REPO_TAG
+ARG APP_VER
 
 ADD . .
 
-RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-X main.Version=$APP_REPO_TAG" -mod=vendor -o /tmp/task ./cmd/task/...
+RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-X main.Version=$APP_VER" -mod=vendor -o /tmp/task ./cmd/task/...
 
 FROM alpine:3.17 as runner