diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9b189b01a5eaf44db3a24a9ca08f120055d3256a..e7bd1753643772b57fab58565b22929fc06c1f54 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -224,6 +224,7 @@ jug_xl:nightly:
                                  ${NIGHTLY_TAG}
 
 .singularity:
+  stage: deploy
   rules:
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
       when: never
@@ -238,7 +239,6 @@ jug_xl:nightly:
 
 jug_dev:singularity:default:
   extends: .singularity
-  stage: deploy
   needs: 
     - version
     - jug_dev:default
@@ -247,7 +247,6 @@ jug_dev:singularity:default:
 
 jug_xl:singularity:default:
   extends: .singularity
-  stage: deploy
   needs: 
     - version
     - jug_xl:default
@@ -255,18 +254,23 @@ jug_xl:singularity:default:
     BUILD_IMAGE: "jug_xl"
 
 jug_xl:singularity:nightly:
-  extends: .singularity
   stage: deploy
+  needs: 
+    - version
+    - jug_xl:nightly
   rules:
     - if: '$CI_COMMIT_BRANCH == "master"'
       when: on_success
     - when: never
-  needs: 
-    - version
-    - jug_xl:nightly
+  artifacts:
+      expire_in: 1 days
+      paths:
+        - build/${BUILD_IMAGE}.sif
   variables:
     BUILD_IMAGE: "jug_xl"
-    INTERNAL_TAG: ${NIGHTLY_TAG}
+  script:
+    - mkdir build
+    - singularity pull build/${BUILD_IMAGE}.sif docker://${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${NIGHTLY_TAG}
 
 ## trigger juggler rebuild on nightly schedule to ensure both images remain in sync
 juggler:master: