diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 54a00ebe500db84393afb121d84121894c468a2a..ddc7d23edefbf06040f719dcf2a6301f3cbcd449 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,21 +4,34 @@ stages:
 
 build:
   stage: build
+  image:
+    name: gcr.io/kaniko-project/executor:debug
+    entrypoint: [""]
+  only:
+    - master
   script:
-    - docker build -t dcr.faked.org/gitlab-ci/android:${CI_COMMIT_SHORT_SHA} .
+    - /kaniko/executor
+      --cache=true
+      --context "${CI_PROJECT_DIR}"
+      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
+      --destination "dcr.faked.org/gitlab-ci/android:${CI_COMMIT_SHORT_SHA}"
 
 push_latest:
   stage: push
+  image:
+    name: gcr.io/go-containerregistry/crane:debug
+    entrypoint: [""]
   only:
     - master
   script:
-    - docker tag dcr.faked.org/gitlab-ci/android:${CI_COMMIT_SHORT_SHA} dcr.faked.org/gitlab-ci/android:latest
-    - docker push dcr.faked.org/gitlab-ci/android:latest
+    - crane copy dcr.faked.org/gitlab-ci/android:${CI_COMMIT_SHORT_SHA} dcr.faked.org/gitlab-ci/android:latest
 
 push_tag:
   stage: push
+  image:
+    name: gcr.io/go-containerregistry/crane:debug
+    entrypoint: [""]
   only:
     - tags
   script:
-    - docker tag dcr.faked.org/gitlab-ci/android:${CI_COMMIT_SHORT_SHA} dcr.faked.org/gitlab-ci/android:${CI_COMMIT_TAG}
-    - docker push dcr.faked.org/gitlab-ci/android:${CI_COMMIT_TAG}
+    - crane copy dcr.faked.org/gitlab-ci/android:${CI_COMMIT_SHORT_SHA} dcr.faked.org/gitlab-ci/android:${CI_COMMIT_TAG}