diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 51697ab86769ce1fd740ae6a12637f498e0703f7..1271e42f94cb19c7d484c4371fad629e67846320 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -66,16 +66,12 @@ info:
 
 
 # Build a docker image in which tests for this repository can run
-build-testenv:
+.build-testenv: &build-testenv
   tags: [cached-dind]
   image: docker:20.10.6
   stage: setup
   timeout: 2h
   needs: []
-  only:
-    refs:
-      - schedules
-      - web
   script:
     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
 
@@ -104,6 +100,20 @@ build-testenv:
     - docker push $CPPINTTEST_REGISTRY_IMAGE
     - docker save $CPPINTTEST_REGISTRY_IMAGE > /image-cache/${CPPINTTEST_IMAGE_CACHE}
 
+build-testenv-changed-docker:
+  <<: *build-testenv
+  only:
+    changed:
+      - docker/*
+
+build-testenv-triggered:
+  <<: *build-testenv
+  only:
+    refs:
+      - pipeline
+      - schedules
+      - web
+
 
 # build integration tests
 build-test: