diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index cb2a9af1f9c8124e3f57d27c5799a9238be73815..5c3fcbb4ec6cf03126f710f0a2375cfa7d1130b2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,9 +25,10 @@ workflow:
 
 .adjust_image_names:
   before_script:
-    - IMAGE_NAME=usgs/${APP_NAME}:${CI_COMMIT_REF_SLUG}
+    - IMAGE_NAME=${APP_NAME}:${CI_COMMIT_REF_SLUG}
     - IMAGE_NAME=${IMAGE_NAME/:master/:latest}
-    - INTERNAL_IMAGE_NAME=${CODE_REGISTRY_IMAGE}/${IMAGE_NAME}
+    - PROJECT_IMAGE_NAME=$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
+    - PROJECT_IMAGE_NAME=${PROJECT_IMAGE_NAME/:master/:latest}
 
 .deploy:
   extends:
@@ -41,7 +42,7 @@ workflow:
       scripts/.
     - export APP_NAME=${APP_NAME}
     - export IMAGE_NAME=${IMAGE_NAME}
-    - export REGISTRY=${CODE_REGISTRY_IMAGE}
+    - export REGISTRY=${CI_REGISTRY_IMAGE}
     - export STACK_NAME=${APP_NAME}
     - ./scripts/deploy.sh
   stage: deploy
@@ -91,13 +92,6 @@ workflow:
 
 # template for jobs that need docker-in-docker
 .dind:
-  # TODO: refactor Docker build to different runner
-  # before_script:
-  #   - |
-  #     echo "${CI_REGISTRY_PASSWORD}" | docker login \
-  #       --username "${CI_REGISTRY_USER}" \
-  #       --password-stdin \
-  #       "${CI_REGISTRY}"
   image: code.usgs.gov:5001/devops/images/usgs/docker:20
   services:
     - alias: docker
@@ -216,20 +210,15 @@ Build Docker Image:
     # fail HIGH,CRITICAL vulnerabilities
     - trivy image --exit-code 1 --severity HIGH,CRITICAL "${LOCAL_IMAGE}";
 
-    ## push image
-    - if [ "${CI_PROJECT_PATH}" != "${UPSTREAM_PATH}" ]; then
-      echo "Skipping push on non-upstream (${CI_PROJECT_PATH})";
-      exit 0;
-      fi
-    - |
-      for IMAGE in "${INTERNAL_IMAGE_NAME}"; do
-        docker tag "${LOCAL_IMAGE}" "${IMAGE}";
-        docker push "${IMAGE}";
-      done
+    ## push image to user or project registries
+    - echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
+    - docker tag "${LOCAL_IMAGE}" "${PROJECT_IMAGE_NAME}";
+    - docker push "${PROJECT_IMAGE_NAME}";
+    
   stage: integration
   tags:
     # TODO: refactor to separate build/publish steps
-    - build
+    - deploy
   variables:
     APP_NAME: geomag-algorithms
     FROM_IMAGE: code.usgs.gov:5001/devops/images/usgs/python:3.10-obspy