diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index aa1830182a6056f86f9fb9575b19783b31b58725..d8ce86dd27a21dfedacb552de908cd55748d5dcb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -19,6 +19,7 @@ include:
   - local: templates/test_jobs.gitlab-ci.yml
 
 .validation_job:
+  extends: .job-defaults
   stage: validation
   artifacts:
     name: validation-results
diff --git a/templates/base.gitlab-ci.yml b/templates/base.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7809a7e6131aadd57154fe30b14c331d4dbf4b3a
--- /dev/null
+++ b/templates/base.gitlab-ci.yml
@@ -0,0 +1,10 @@
+default:
+  timeout: 1 hour
+  artifacts:
+    when: always
+    expire_in: 6 hours
+
+# Necessary due to a bug.
+# See https://gitlab.com/gitlab-org/gitlab/-/issues/418003 for details.
+.job-defaults:
+  timeout: 1 hour
diff --git a/templates/docker_image_jobs.gitlab-ci.yml b/templates/docker_image_jobs.gitlab-ci.yml
index d3727e4e671066d235ceabda4058baa66cb01ba2..5193e164f41fe3a086357ee6b3d86bdb1f7d7ef5 100644
--- a/templates/docker_image_jobs.gitlab-ci.yml
+++ b/templates/docker_image_jobs.gitlab-ci.yml
@@ -3,12 +3,11 @@ variables:
   DOCKER_DIND_TAG: "latest"
   IMAGE_REMOVER_TAG: "latest"
 
-.artifact_policy:
-  artifacts:
-    when: always
-    expire_in: 6 hours
+include:
+  - local: templates/base.gitlab-ci.yml
 
 .docker_image_builder_job_template:
+  extends: .job-defaults
   variables:
     DOCKER_DRIVER: overlay2
     DOCKER_TLS_CERTDIR: "/certs"
@@ -25,6 +24,7 @@ variables:
       alias: docker
 
 .docker_image_cleanup_job_template:
+  extends: .job-defaults
   image: registry.gitlab.syncad.com/hive/common-ci-configuration/image-remover:${IMAGE_REMOVER_TAG}
   interruptible: true
   variables:
@@ -48,3 +48,4 @@ variables:
   rules:
     - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"'
       when: manual
+      allow_failure: true
diff --git a/templates/test_jobs.gitlab-ci.yml b/templates/test_jobs.gitlab-ci.yml
index 6a860fe31a7c8288ffb4ed9a29f6312087637379..ea6b1a13d192d17e60d54aa2356ebbe6dcf3f3c3 100644
--- a/templates/test_jobs.gitlab-ci.yml
+++ b/templates/test_jobs.gitlab-ci.yml
@@ -3,11 +3,12 @@ variables:
   TOX_IMAGE_TAG: "latest"
   APP_PORT: 0
 
+include:
+  - local: templates/base.gitlab-ci.yml
+
 .jmeter_benchmark_job:
+  extends: .job-defaults
   image: registry.gitlab.syncad.com/hive/common-ci-configuration/benchmark-test-runner:${BENCHMARK_IMAGE_TAG}
-  artifacts:
-    when: always
-    expire_in: 6 hours
 
 .jmeter_benchmark_with_haf_job:
   extends: .jmeter_benchmark_job
@@ -25,6 +26,7 @@ variables:
       alias: app
 
 .pytest_based_template:
+  extends: .job-defaults
   variables:
     FF_NETWORK_PER_BUILD: 1
     JUNIT_REPORT: "report.xml"  # should be ovverided by derived jobs
@@ -104,10 +106,8 @@ variables:
 
 
 .tox_test_job:
+  extends: .job-defaults
   image: registry.gitlab.syncad.com/hive/common-ci-configuration/tox-test-runner:${TOX_IMAGE_TAG}
-  artifacts:
-    when: always
-    expire_in: 6 hours
 
 .pattern_tests_template:
   extends: .tox_test_job