diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3c947f1fad59a767dd4d40786d040a223e3b0eb9..cbd37945264197e5005ee9ee72b8196a6e5b578e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -31,7 +31,8 @@ include:
 build base image:
     stage: build-base
     script:
-        - docker build -t ${REGISTRY_URL}/ops/base:${PROJECT_NAME} -f Dockerfile.base . ; \
+        - docker build -t ${REGISTRY_URL}/ops/base:${PROJECT_NAME} -f Dockerfile.base .
+        - docker tag ${REGISTRY_URL}/ops/base:${PROJECT_NAME} ${REGISTRY_URL}/ops/base:${CI_COMMIT_SHORT_SHA}
     rules:
         - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
           changes:
@@ -43,11 +44,11 @@ push base image:
     script:
         - echo "$HARBOR_PASSWORD" | docker login -u "$HARBOR_USER" --password-stdin $REGISTRY_URL
         - docker push ${REGISTRY_URL}/ops/base:${PROJECT_NAME}
+        - docker push ${REGISTRY_URL}/ops/base:${CI_COMMIT_SHORT_SHA}
     rules:
-        - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
+        - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE =~ /\A(?i)-ops/'
           changes:
             - Dockerfile.base
-          when: always
 
 # Build Stages
 build dev workflow:
diff --git a/Dockerfile.base b/Dockerfile.base
index cb7c93c19950f7cf83598ea11a57fc4c88766f04..5c5e1c51390b3f846c29ee1b42a6446f9a4e45c7 100644
--- a/Dockerfile.base
+++ b/Dockerfile.base
@@ -12,6 +12,7 @@ RUN apt-get update \
 # - CAPO_PROFILE will be overridden for Dev, Test, and Prod
 ENV PIP_NO_CACHE_DIR false
 ENV CAPO_PROFILE docker
+ENV CAPO_PATH /root/.capo
 
 # Set up Capo
 WORKDIR /root/.capo