diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8d1214a471c81c0de9bb573b36af1d6fff8106fc..ff0cb9a2d7dde3750271d2cfc7f755262fc6707a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,42 +28,10 @@ workflow:
     - if: '$CI_COMMIT_BRANCH =~ /^v[0-9]\.[0-9]\.[0-9]/ && $CI_PROJECT_PATH == "ogs/ogs"' # release branches, e.g. v6.x.x
 
 include:
-  - local: "scripts/ci/extends/*.yml"
-  - local: "/scripts/ci/jobs/meta.yml"
-  - local: "/scripts/ci/jobs/ci_images.yml"
-  # jobs, can be indiviually disabled for testing
-  - local: "/scripts/ci/jobs/pre-commit.yml"
-  - local: "/scripts/ci/jobs/build-linux.yml"
-  - local: "/scripts/ci/jobs/build-linux-petsc.yml"
-  - local: "/scripts/ci/jobs/build-linux-frontend.yml"
-  - local: "/scripts/ci/jobs/build-docs.yml"
-  - local: "/scripts/ci/jobs/build-win.yml"
-  - local: "/scripts/ci/jobs/build-mac.yml"
-  - local: "/scripts/ci/jobs/build-container.yml"
-  - local: "/scripts/ci/jobs/jupyter.yml"
-  - local: "/scripts/ci/jobs/code-quality.yml"
-  - local: "/scripts/ci/jobs/code-coverage.yml"
-  - local: "/scripts/ci/jobs/build-gui-linux.yml"
-  - local: "/scripts/ci/jobs/build-gui-win.yml"
-  - local: "/scripts/ci/jobs/build-gui-mac.yml"
-  - local: "/scripts/ci/jobs/check-header.yml"
-  - local: "/scripts/ci/jobs/include-what-you-use.yml"
-  - local: "/scripts/ci/jobs/clang-sanitizer.yml"
-  - local: "/scripts/ci/jobs/clang-tidy.yml"
-  - local: "/scripts/ci/jobs/web.yml"
-  - local: "/scripts/ci/jobs/container.yml"
-  - local: "/scripts/ci/jobs/release.yml"
-  - local: "/scripts/ci/jobs/package.yml"
-  - local: "/scripts/ci/jobs/trigger.yml"
-
-# child pipelines
-wheels:
-  stage: build
-  needs: []
-  trigger:
-    include: /scripts/ci/jobs/build-wheels.yml
-  rules:
-    - if: $CI_PIPELINE_SOURCE == schedule
-    - if: $CI_COMMIT_TAG
-    - when: manual
-      allow_failure: true
+  - local: "/scripts/ci/extends/*.yml"
+  - local: "/scripts/ci/pipelines/regular.yml"
+    rules:
+      - if: $CI_PIPELINE_SOURCE != schedule
+  - local: "/scripts/ci/pipelines/scheduled.yml"
+    rules:
+      - if: $CI_PIPELINE_SOURCE == schedule
diff --git a/scripts/ci/pipelines/regular.yml b/scripts/ci/pipelines/regular.yml
new file mode 100644
index 0000000000000000000000000000000000000000..825fd45b9d5e9237407086b4533e6d5f2c425cfe
--- /dev/null
+++ b/scripts/ci/pipelines/regular.yml
@@ -0,0 +1,38 @@
+include:
+  - local: "/scripts/ci/jobs/meta.yml"
+  - local: "/scripts/ci/jobs/ci_images.yml"
+  # jobs, can be indiviually disabled for testing
+  - local: "/scripts/ci/jobs/pre-commit.yml"
+  - local: "/scripts/ci/jobs/build-linux.yml"
+  - local: "/scripts/ci/jobs/build-linux-petsc.yml"
+  - local: "/scripts/ci/jobs/build-linux-frontend.yml"
+  - local: "/scripts/ci/jobs/build-docs.yml"
+  - local: "/scripts/ci/jobs/build-win.yml"
+  - local: "/scripts/ci/jobs/build-mac.yml"
+  - local: "/scripts/ci/jobs/build-container.yml"
+  - local: "/scripts/ci/jobs/jupyter.yml"
+  - local: "/scripts/ci/jobs/code-quality.yml"
+  - local: "/scripts/ci/jobs/code-coverage.yml"
+  - local: "/scripts/ci/jobs/build-gui-linux.yml"
+  - local: "/scripts/ci/jobs/build-gui-win.yml"
+  - local: "/scripts/ci/jobs/build-gui-mac.yml"
+  - local: "/scripts/ci/jobs/check-header.yml"
+  - local: "/scripts/ci/jobs/include-what-you-use.yml"
+  - local: "/scripts/ci/jobs/clang-sanitizer.yml"
+  - local: "/scripts/ci/jobs/clang-tidy.yml"
+  - local: "/scripts/ci/jobs/web.yml"
+  - local: "/scripts/ci/jobs/container.yml"
+  - local: "/scripts/ci/jobs/release.yml"
+  - local: "/scripts/ci/jobs/package.yml"
+  - local: "/scripts/ci/jobs/trigger.yml"
+
+# child pipelines
+wheels:
+  stage: build
+  needs: []
+  trigger:
+    include: /scripts/ci/jobs/build-wheels.yml
+  rules:
+    - if: $CI_COMMIT_TAG
+    - when: manual
+      allow_failure: true
diff --git a/scripts/ci/pipelines/scheduled.yml b/scripts/ci/pipelines/scheduled.yml
new file mode 100644
index 0000000000000000000000000000000000000000..90a909b0f747f54becab4fb607e450658a74ff39
--- /dev/null
+++ b/scripts/ci/pipelines/scheduled.yml
@@ -0,0 +1,4 @@
+wheels:
+  stage: build
+  trigger:
+    include: /scripts/ci/jobs/build-wheels.yml