diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index afc4153512327c2fa4a62a1402114cf398a98785..d016ddce9806a4135625a172a7f88986456b3fcd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,7 @@
-image: gitlab.kwant-project.org:5005/kwant/testing
+image: gitlab.kwant-project.org:5005/kwant/kwant
 
 stages:
+  - build-env
   - build
   - test
   - deploy
@@ -11,6 +12,69 @@ variables:
   # secret information, and using 'ssh-keyscan' causes the CI server's IP to be blacklisted
   IGNORE_HOSTKEY: "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
 
+## Building Docker environments
+## Only runs when docker specifications change
+
+.build-env: &build-env
+  stage: build-env
+  image:
+    name: gcr.io/kaniko-project/executor:debug
+    entrypoint: [""]
+  artifacts:
+    untracked: true
+    expire_in: 1 hour
+  before_script:
+    - mkdir -p /root/.docker
+    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /root/.docker/config.json
+
+build-env:ubuntu:
+  <<: *build-env
+  only:
+    changes:
+      - docker/Dockerfile.ubuntu
+  script:
+    - /kaniko/executor
+      --context $CI_PROJECT_DIR/docker
+      --dockerfile $CI_PROJECT_DIR/docker/Dockerfile.ubuntu
+      --destination $CI_REGISTRY_IMAGE/ubuntu
+
+build-env:debian:
+  <<: *build-env
+  only:
+    changes:
+      - docker/Dockerfile.debian
+  script:
+    - /kaniko/executor
+      --context $CI_PROJECT_DIR/docker
+      --dockerfile $CI_PROJECT_DIR/docker/Dockerfile.debian
+      --destination $CI_REGISTRY_IMAGE/debian
+
+build-env:conda:
+  <<: *build-env
+  only:
+    changes:
+      - docker/Dockerfile.conda
+      - docker/*.yml
+  script:
+    - /kaniko/executor
+      --context $CI_PROJECT_DIR/docker
+      --dockerfile $CI_PROJECT_DIR/docker/Dockerfile.conda
+      --destination $CI_REGISTRY_IMAGE/conda
+
+build-env:default:
+  <<: *build-env
+  only:
+    changes:
+      - docker/Dockerfile.conda
+      - docker/*.yml
+  script:
+    - /kaniko/executor
+      --context $CI_PROJECT_DIR/docker
+      --dockerfile $CI_PROJECT_DIR/docker/Dockerfile.conda
+      --destination $CI_REGISTRY_IMAGE
+
+
+## Build environment specifications
 
 .build: &build
   stage: build
@@ -49,10 +113,10 @@ variables:
     - source activate kwant-latest
 
 .ubuntu-env: &ubuntu_env
-  image: gitlab.kwant-project.org:5005/kwant/testing/ubuntu
+  image: gitlab.kwant-project.org:5005/kwant/kwant/ubuntu
 
 .debian-env: &debian_env
-  image: gitlab.kwant-project.org:5005/kwant/testing/debian
+  image: gitlab.kwant-project.org:5005/kwant/kwant/debian
 
 
 ## Build Jobs