diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 305590071382be83df45935f7a8d8db575a1a507..0572220ebf6709139fd6193e5a9e99e9e617aea9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,11 @@
+workflow:
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+      when: always
+    - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main"
+      when: always
+    - when: never
+
 stages:
   - test
   - build
@@ -15,7 +23,7 @@ job_test_the_code:
 job_build_artifact:
   stage: build
   rules:
-    - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
+    - if:  $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_NAME =~ /main/
       when: always
   image: registry.hub.docker.com/library/golang:1.21
   script:
@@ -51,4 +59,3 @@ job_publish_artifact:
         --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \
         --upload-file ./artifact.bin \
         "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/artifacts/1.0.0/webservice"
-