diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a50a1aa8847e786cc61af7e74ffb816382fe0579..f68b81efd1bca9dd88d4b9701b08e4bcb4d75450 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -544,4 +544,38 @@ clean_unstable_mr:
         if [ "$state" == "closed" ] ; then docker rmi $repository:$tag ; fi ;
       done
     - docker system prune --filter until=24h --force
+    - docker system df
+    - docker images
+
+clean_pipeline:
+  extends: .docker
+  stage: finalize
+  dependencies:
+    - version
+    - clean_internal_tag
+  tags:
+    - docker-new
+  when: always
+  script:
+    - apk add curl jq
+    - for registry in
+        eicweb
+        eicweb.phy.anl.gov:4567/containers/eic_container
+      ; do 
+        docker images 
+          --filter=reference=${registry}/*:pipeline-*
+          --format "{{.ID}} {{.Repository}} {{.Tag}}" ;
+      done
+      | sed -n -E 's/pipeline-([0-9]+)(-.*){0,1}$/& \1/p'
+      | while read id repository tag pipeline_id ; do
+        status=$(curl --silent -L
+                "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${pipeline_id}"
+                | jq -r ".status") ;
+        echo "Image $repository:$tag is ${status:-undetermined} (pipeline ${pipeline_id})." ;
+        if [ "$status" == "success" ] ; then docker rmi $repository:$tag ; fi ;
+        if [ "$status" == "failed" ] ; then docker rmi $repository:$tag ; fi ;
+        if [ "$status" == "canceled" ] ; then docker rmi $repository:$tag ; fi ;
+      done
+    - docker system prune --filter until=24h --force
+    - docker system df
     - docker images