From 25c2907aced70440521eafc6c7dcb0f08ddb2616 Mon Sep 17 00:00:00 2001
From: Bo-Chun Louis Chen <louistw@uab.edu>
Date: Fri, 22 Mar 2024 01:57:38 -0500
Subject: [PATCH] Add test ood iamge job for mr

---
 .gitlab-ci.yml | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 38358c8..30df22d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -315,6 +315,64 @@ test_ood_image:
   artifacts:
     reports:
       dotenv: instance.env
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "schedule"
+      when: always
+
+test_ood_image_mr:
+  stage: test
+  needs: [build_ood_image]
+  tags:
+    - build
+  script:
+    - openstack image set --accept $BUILT_OOD_IMAGE_ID
+    - FAILED=false
+    - |
+      eval $(ssh-agent -s)
+      chmod 400 "$SSH_PRIV_KEY"
+      ssh-add "$SSH_PRIV_KEY"
+      mkdir ~/.ssh
+      chmod 700 ~/.ssh
+    - |
+      cat > user_data.txt << OEOF
+      #!/bin/bash
+      cat > /etc/resolv.conf << EOF
+      search openstack.internal cm.cluster rc.uab.edu ib.cluster drac.cluster eth.cluster ib-hdr.cluster
+      nameserver 172.20.0.25
+      EOF
+      echo "$DEV_KEY" >> /root/.ssh/authorized_keys
+      mkdir -p /run/shibboleth
+      chown shibd:shibd /run/shibboleth
+      OEOF
+    - >
+      export NEW_INSTANCE_ID=$(openstack server create
+      -c id -f value --image $BUILT_OOD_IMAGE_ID
+      --network $OOD_INSTANCE_NETWORK
+      --security-group ood-https-ports
+      --security-group allow-ssh
+      --user-data user_data.txt
+      --flavor $INSTANCE_FLAVOR
+      --wait
+      $OOD_INSTANCE_NAME)
+    - echo NEW_INSTANCE_ID=$NEW_INSTANCE_ID | tee -a instance.env
+    - openstack server add floating ip $NEW_INSTANCE_ID $FLOATING_IP
+    - >
+      curl --retry 10 --retry-delay 20 --retry-connrefused https://knightly.rc.uab.edu/Shibboleth.sso/Metadata --resolve knightly.rc.uab.edu:443:$FLOATING_IP -kf
+      || FAILED=true
+    - ssh -o StrictHostKeyChecking=no acctsvc@$FLOATING_IP '[ $(mount | grep "etc/auto" | wc -l) -eq 6 ]' || FAILED=true
+    - |
+      if [ "$FAILED" = true ]; then
+        if [ "${DELETE_WHEN_FAILED-true}" = true ]; then
+          openstack server delete $NEW_INSTANCE_ID
+          openstack image delete $BUILT_OOD_IMAGE_ID
+        fi
+        false
+      fi
+  artifacts:
+    reports:
+      dotenv: instance.env
+  rules:
+    - if: $CI_MERGE_REQUEST_ID
 
 deploy_review:
   stage: deploy
-- 
GitLab