diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3db521ccf13cb225bf570254ec5dd7a6bb1d59f1..7ecb6789bd7cac667938328eec0d757501b98e70 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,6 +14,9 @@ variables:
   COMP: gcc
   PATCHFLAGS: -c $COMP -k --nocheck -f
 
+  # don't need git history
+  GIT_DEPTH: 1
+
 before_script:
   # Enable gcc-devtoolset-7
   #- source /opt/rh/devtoolset-7/enable
@@ -68,9 +71,16 @@ stages:
       EOF
     - docker build -t $IMAGE_TAG .
     - docker push $IMAGE_TAG
+  # NOTE: waiting on https://gitlab.com/gitlab-org/gitlab/-/issues/30680, otherwise
+  # job dependencies don't work correctly for downstream stages
   #only:
   #  changes:
   #    - gstlal-inspiral/share/conda/dev-environment.yml
+  needs: []
+  only:
+    - schedules
+    - pushes
+
 dependencies/conda:
   <<: *dependencies
 
@@ -108,6 +118,7 @@ dependencies/conda:
 level0:rpm:gstlal:
   <<: *levelN-rpm-package
   stage: level0
+  needs: []
   
 level1:rpm:gstlal-ugly:
   <<: *levelN-rpm-package
@@ -315,6 +326,62 @@ docker:el7:
   except:
     - /gstlal-([a-z]+-|)[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
 
+docker:conda:
+  stage: docker
+  variables:
+    GIT_STRATEGY: fetch
+    NUM_CORES: 4
+  before_script: []
+  script:
+    - IMAGE_TAG=$CI_REGISTRY_IMAGE/conda:$CI_COMMIT_REF_NAME
+    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
+    - |
+      cat <<EOF > Dockerfile
+      FROM $CI_REGISTRY_IMAGE/dependencies/conda:$CI_COMMIT_REF_NAME
+      COPY gstlal /gstlal
+      COPY gstlal-ugly /gstlal-ugly
+      COPY gstlal-inspiral /gstlal-inspiral
+      COPY gstlal-burst /gstlal-burst
+      RUN cd /gstlal && \
+          ./00init.sh && \
+          PREFIX=/opt/conda CONDA_BUILD="1" ./configure --prefix=/opt/conda --without-doxygen && \
+          make -j$NUM_CORES && \
+          make install -j$NUM_CORES && \
+          cd .. && \
+          rm -rf gstlal && \
+      RUN cd /gstlal-ugly && \
+          ./00init.sh && \
+          PREFIX=/opt/conda CONDA_BUILD="1" ./configure --prefix=/opt/conda --without-doxygen --without-gds && \
+          make -j$NUM_CORES && \
+          make install -j$NUM_CORES && \
+          cd .. && \
+          rm -rf gstlal-ugly && \
+      RUN cd /gstlal-inspiral && \
+          ./00init.sh && \
+          PREFIX=/opt/conda CONDA_BUILD="1" ./configure --prefix=/opt/conda --without-doxygen && \
+          make -j$NUM_CORES && \
+          make install -j$NUM_CORES && \
+          cd .. && \
+          rm -rf gstlal-inspiral && \
+      RUN cd /gstlal-burst && \
+          ./00init.sh && \
+          PREFIX=/opt/conda CONDA_BUILD="1" ./configure --prefix=/opt/conda && \
+          make -j$NUM_CORES && \
+          make install -j$NUM_CORES && \
+          cd .. && \
+          rm -rf gstlal-burst && \
+      ENV PKG_CONFIG_PATH /opt/conda/lib/pkgconfig
+      ENV GST_PLUGIN_PATH /opt/conda/lib/gstreamer-1.0
+      ENTRYPOINT bash
+      EOF
+    - docker build -t $IMAGE_TAG .
+    - docker push $IMAGE_TAG
+  needs:
+    - dependencies/conda
+  only:
+    - schedules
+    - pushes
+
 docker:release:gstlal-inspiral:el7:
   stage: docker
   before_script: []