From f4590eafb54a08581a07bfb6a674c53c56b2d0eb Mon Sep 17 00:00:00 2001
From: Marco Wettstein <maw@panter.ch>
Date: Sat, 20 Mar 2021 15:07:26 +0100
Subject: [PATCH] feat: new default retry rules on system errors

---
 includes/docker-build.yml  |  1 -
 includes/kubernetes.yml    |  5 +++--
 includes/retry.yml         |  6 ++++++
 includes/setup.yml         |  2 +-
 panter-kubernetes-base.yml | 19 +++++++++++++++----
 5 files changed, 25 insertions(+), 8 deletions(-)
 create mode 100644 includes/retry.yml

diff --git a/includes/docker-build.yml b/includes/docker-build.yml
index 89e74cb..ff27302 100644
--- a/includes/docker-build.yml
+++ b/includes/docker-build.yml
@@ -15,7 +15,6 @@
 
 .docker-build-base:
   image: docker:18-dind
-  retry: 2
   services:
     - docker:18-dind
   variables:
diff --git a/includes/kubernetes.yml b/includes/kubernetes.yml
index 8e66fb4..75357c3 100644
--- a/includes/kubernetes.yml
+++ b/includes/kubernetes.yml
@@ -87,8 +87,9 @@
   }
 
 .deploy-to-kubernetes:
-  extends: .env-base
-  retry: 2
+  extends:
+    - .retry-default
+    - .env-base
   script:
     - *auto_devops
     - kubernetesEnsureNamespace
diff --git a/includes/retry.yml b/includes/retry.yml
new file mode 100644
index 0000000..a1ecf1b
--- /dev/null
+++ b/includes/retry.yml
@@ -0,0 +1,6 @@
+.retry-default:
+  retry:
+    max: 3
+    when:
+      - runner_system_failure
+      - stuck_or_timeout_failure
diff --git a/includes/setup.yml b/includes/setup.yml
index 01d793a..0091e6f 100644
--- a/includes/setup.yml
+++ b/includes/setup.yml
@@ -1,8 +1,8 @@
 .setup-build-info:
   stage: setup
   extends:
+    - .retry-default
     - .rules-always
-  retry: 2
   script:
     - cd $APP_PATH
     - BUILD_TAG="$(git describe --tags || git rev-parse HEAD)"
diff --git a/panter-kubernetes-base.yml b/panter-kubernetes-base.yml
index 5d54ecc..02a4b49 100644
--- a/panter-kubernetes-base.yml
+++ b/panter-kubernetes-base.yml
@@ -1,5 +1,6 @@
 include:
   - /includes/env.yml
+  - /includes/retry.yml
   - /includes/cache.yml
   - /includes/rules.yml
   - /includes/setup.yml
@@ -71,6 +72,7 @@ image: panterch/docker-ci-kubernetes-deploy
   stage: test
   needs: []
   extends:
+    - .retry-default
     - .rules-always-but-not-on-tags
 
 .test:
@@ -81,6 +83,7 @@ image: panterch/docker-ci-kubernetes-deploy
 .lint-base:
   stage: test
   extends:
+    - .retry-default
     - .rules-always-but-not-on-tags
 
 .lint:
@@ -90,8 +93,8 @@ image: panterch/docker-ci-kubernetes-deploy
 
 .app-build-base:
   stage: build
-  retry: 2
   extends:
+    - .retry-default
     - .rules-always
   needs: ["setup-build-info"]
 
@@ -108,13 +111,16 @@ image: panterch/docker-ci-kubernetes-deploy
   stage: deploy
   rules:
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
-  retry: 2
-  extends: .deploy-to-kubernetes-review
+  extends:
+    - .retry-default
+    - .deploy-to-kubernetes-review
 
 .review-stop:
   tags:
   stage: review-stop
-  extends: .kubernetes-review-stop
+  extends:
+    - .retry-default
+    - .kubernetes-review-stop
   rules:
     - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\.([0-9]+|x)\.x$/ # automatic on hotfix branches
       when: on_success
@@ -126,22 +132,27 @@ image: panterch/docker-ci-kubernetes-deploy
 .dev-deploy:
   stage: deploy
   extends:
+    - .retry-default
     - .rules-dev-deploy
     - .deploy-to-kubernetes-dev
 
 .stage-deploy:
   stage: deploy
   extends:
+    - .retry-default
     - .rules-stage-deploy
     - .deploy-to-kubernetes-stage
 
 .prod-deploy:
   stage: deploy
   extends:
+    - .retry-default
     - .rules-prod-deploy
     - .deploy-to-kubernetes-prod
 
 .verify-base:
+  extends:
+    - .retry-default
   stage: verify
 
 .verify-review:
-- 
GitLab