From 80708572031c7328238f12a11cadfea4cad4b702 Mon Sep 17 00:00:00 2001 From: Julien Duchesne Date: Tue, 23 Nov 2021 05:23:52 -0500 Subject: [PATCH] Add `retries` option (#43) * Add `retries` option It can be enabled this way: ``` clone: retries: 3 ``` --- posix/clone | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/posix/clone b/posix/clone index 2f8d624..0248a26 100755 --- a/posix/clone +++ b/posix/clone @@ -87,14 +87,31 @@ case $DRONE_COMMIT_REF in refs/merge-requests/* ) CLONE_TYPE=pull_request ;; esac +git_clone_retry(){ + retries="${PLUGIN_RETRIES:-0}" + if [ -n "${retries##*[0-9]*}" ] || [ "${retries}" -lt 0 ]; then + echo "PLUGIN_RETRIES defined but is not a number: ${retries}" >&2 + exit 1 + fi + + echo "Cloning with ${retries} retries" + n=0 + until [ "$n" -gt "${retries}" ]; do + $1 && return + n=$((n+1)) + done + + exit 1 +} + case $CLONE_TYPE in pull_request) - clone-pull-request + git_clone_retry clone-pull-request ;; tag) - clone-tag + git_clone_retry clone-tag ;; *) - clone-commit + git_clone_retry clone-commit ;; -esac +esac \ No newline at end of file