diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..88bb7d54bebc9d72ca1d50f7bb1d631fdf0251f3
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,28 @@
+.earthly_prepare:
+  tags:
+    - privileged
+  image:
+    name: earthly/earthly:v0.6.29@sha256:81eaf447132541b930d64cbf3308ba07303928a073c602e81a237799b60f254d
+    entrypoint: [ "sh", "-c" ]
+  before_script:
+    - earthly --version
+    - cat ${EARTHLY_CONFIG}
+  variables:
+    FORCE_COLOR: "1"
+    EARTHLY_CONFIG: "/etc/earthly/config.yaml"
+    EARTHLY_STRICT: "true"
+  interruptible: true
+  retry:
+    max: 2
+    when:
+      - runner_system_failure
+      - stuck_or_timeout_failure
+
+test:
+  stage: test
+  extends: [.earthly_prepare]
+  script:
+    - earthly --no-output -P +test
+  only:
+    refs:
+      - merge_requests