diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index de5934d6d270aa33f6885fee9d6851b9b3861114..43cfe8ac85608776f1d4e6f050f00dfb9a9c1605 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -437,14 +437,29 @@ deploy_cheaha:
 
 cleanup_knightly:
   stage: cleanup
+  environment:
+    name: knightly
   tags:
     - build
   script:
-    - OS_PROJECT_ID=$(openstack application credential show $OS_APPLICATION_CREDENTIAL_ID -f value -c project_id)
     - >
       SERVER_TO_BE_DELETE=($(openstack server list --name $OOD_INSTANCE_NAME --sort-column Image --sort-descending -f value -c ID
       | awk -v NSTK=$NUM_SERVER_TO_KEEP '{count++}
       {if (count>NSTK) print}'))
+    - |
+      for svr in ${SERVER_TO_BE_DELETE[@]}; do
+        openstack server delete ${svr}
+      done
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "schedule"
+      when: always
+
+cleanup_integration:
+  stage: cleanup
+  tags:
+    - build
+  script:
+    - OS_PROJECT_ID=$(openstack application credential show $OS_APPLICATION_CREDENTIAL_ID -f value -c project_id)
     - openstack image list --sort-column Name --sort-descending -f value -c Name -c ID --property owner=$OS_PROJECT_ID > images.txt
     - >
       OOD_IMAGE_TO_BE_DELETE=($(cat images.txt
@@ -466,10 +481,6 @@ cleanup_knightly:
       | awk -v NITK=$NUM_IMAGE_TO_KEEP -v REGEX=gpu-$TIMESTAMP_REGEX
       '{if ($0 ~ REGEX) result[count++] = $1}
       END {for(i=NITK;i<count;i++) print result[i]}'))
-    - |
-      for svr in ${SERVER_TO_BE_DELETE[@]}; do
-        openstack server delete ${svr}
-      done
     - |
       for img in ${OOD_IMAGE_TO_BE_DELETE[@]}; do
         openstack image delete ${img}