From 56b4db76b8b159be6398bf8bb09718925b0df3ce Mon Sep 17 00:00:00 2001
From: Bo-Chun Louis Chen <louistw@uab.edu>
Date: Mon, 12 Feb 2024 15:10:08 -0600
Subject: [PATCH] Add clean up stage in pipeline

---
 .gitlab-ci.yml | 29 ++++++++++++++++++++---------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bad5c1e..6129f82 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -34,6 +34,7 @@ stages:
   - build
   - test
   - deploy
+  - cleanup
 
 workflow:
   rules:
@@ -361,15 +362,6 @@ deploy_knightly:
         openstack server add floating ip $NEW_INSTANCE_ID $CAMPUS_IP
         openstack server add floating ip $NEW_INSTANCE_ID $CHEAHA_IP
       fi
-    - |
-      SERVER_TO_BE_DELETE=($(openstack server list --name $OOD_INSTANCE_NAME --sort-column Image --sort-descending -f value -c ID | sed -n $(($NUM_SERVER_TO_KEEP+1))',$p'))
-      IMAGE_TO_BE_DELETE=($(openstack image list --sort-column Name --sort-descending -f value -c Name -c ID | grep -P ' ood-\d{8}$' | sed -n $(($NUM_IMAGE_TO_KEEP+1))',$p' | awk '{print $1}'))
-      for svr in ${SERVER_TO_BE_DELETE[@]}; do
-        openstack server delete ${svr}
-      done
-      for img in ${IMAGE_TO_BE_DELETE[@]}; do
-        openstack image delete ${img}
-      done
   only:
     - schedules
 
@@ -384,3 +376,22 @@ deploy_cheaha:
   when: manual
   only:
     - main
+
+cleanup:
+  stage: cleanup
+  environment:
+    name: knightly
+  tags:
+    - build
+  script:
+    - |
+      SERVER_TO_BE_DELETE=($(openstack server list --name $OOD_INSTANCE_NAME --sort-column Image --sort-descending -f value -c ID | sed -n $(($NUM_SERVER_TO_KEEP+1))',$p'))
+      IMAGE_TO_BE_DELETE=($(openstack image list --sort-column Name --sort-descending -f value -c Name -c ID | grep -P ' ood-\d{8}$' | sed -n $(($NUM_IMAGE_TO_KEEP+1))',$p' | awk '{print $1}'))
+      for svr in ${SERVER_TO_BE_DELETE[@]}; do
+        openstack server delete ${svr}
+      done
+      for img in ${IMAGE_TO_BE_DELETE[@]}; do
+        openstack image delete ${img}
+      done
+  allow_failure: true
+  when: always
-- 
GitLab