diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0675a04940d545f68e199cf862658a37b4d15f40
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,45 @@
+stages:
+  - build
+  - publish
+  - manifest
+
+include:
+  - project: alpine/infra/gitlab-ci-templates
+    ref: master
+    file: exec/docker-image-all-arches.yml
+
+variables:
+  EDGE_SNAPSHOT_VERSION: 20240923
+
+build-image:
+  variables:
+    SUBDIR: edge
+    ARG_VERSION: $EDGE_SNAPSHOT_VERSION
+    ARG_ARCH: $ARCH
+  rules:
+    - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
+      changes:
+        - edge/*
+        - .gitlab-ci.yml
+
+publish-image:
+  variables:
+    SUBDIR: edge
+    ARG_VERSION: $EDGE_SNAPSHOT_VERSION
+    ARG_ARCH: $ARCH
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+      changes:
+        - edge/*
+        - .gitlab-ci.yml
+
+publish-manifest:
+  variables:
+    SUBDIR: edge
+    ARG_VERSION: $EDGE_SNAPSHOT_VERSION
+    ARG_ARCH: $ARCH
+  rules:
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+      changes:
+        - edge/*
+        - .gitlab-ci.yml
diff --git a/edge/Dockerfile b/edge/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..1d031742d729ac895812c4d7bbc4fc2f4c971c44
--- /dev/null
+++ b/edge/Dockerfile
@@ -0,0 +1,13 @@
+FROM registry.alpinelinux.org/alpine/infra/docker/alpine:edge AS source
+ARG ARCH
+ARG VERSION=20240923
+
+RUN mkdir /src \
+    && apk add --upgrade --no-cache curl \
+    && curl --fail https://dl-cdn.alpinelinux.org/alpine/edge/releases/$ARCH/alpine-minirootfs-$VERSION-$ARCH.tar.gz \
+        | tar xz -C /src
+
+FROM scratch
+COPY --from=source /src /
+
+CMD ["/bin/sh"]