From 4a105ae54b2da526261984b63cdf1e8201c23c26 Mon Sep 17 00:00:00 2001 From: eric sciple Date: Tue, 10 Dec 2019 01:32:25 -0500 Subject: . --- src/git-command-manager.ts | 51 ++++++++-------------------------------------- 1 file changed, 9 insertions(+), 42 deletions(-) (limited to 'src/git-command-manager.ts') diff --git a/src/git-command-manager.ts b/src/git-command-manager.ts index 70dce8f..ddd5ec6 100644 --- a/src/git-command-manager.ts +++ b/src/git-command-manager.ts @@ -3,6 +3,7 @@ import * as exec from '@actions/exec' import * as fshelper from './fs-helper' import * as io from '@actions/io' import * as path from 'path' +import * as retryHelper from './retry-helper' import {GitVersion} from './git-version' // Auth header not supported before 2.9 @@ -154,22 +155,10 @@ class GitCommandManager { args.push(arg) } - let attempt = 1 - const maxAttempts = 3 - while (attempt <= maxAttempts) { - const allowAllExitCodes = attempt < maxAttempts - const output = await this.execGit(args, allowAllExitCodes) - if (output.exitCode === 0) { - break - } - - const seconds = this.getRandomIntInclusive(1, 10) - core.warning( - `Git fetch failed with exit code ${output.exitCode}. Waiting ${seconds} seconds before trying again.` - ) - await this.sleep(seconds * 1000) - attempt++ - } + const that = this + await retryHelper.execute(async () => { + await that.execGit(args) + }) } getWorkingDirectory(): string { @@ -192,22 +181,10 @@ class GitCommandManager { async lfsFetch(ref: string): Promise { const args = ['lfs', 'fetch', 'origin', ref] - let attempt = 1 - const maxAttempts = 3 - while (attempt <= maxAttempts) { - const allowAllExitCodes = attempt < maxAttempts - const output = await this.execGit(args, allowAllExitCodes) - if (output.exitCode === 0) { - break - } - - const seconds = this.getRandomIntInclusive(1, 10) - core.warning( - `Git lfs fetch failed with exit code ${output.exitCode}. Waiting ${seconds} seconds before trying again.` - ) - await this.sleep(seconds * 1000) - attempt++ - } + const that = this + await retryHelper.execute(async () => { + await that.execGit(args) + }) } async lfsInstall(): Promise { @@ -381,16 +358,6 @@ class GitCommandManager { core.debug(`Set git useragent to: ${gitHttpUserAgent}`) this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent } - - private getRandomIntInclusive(minimum: number, maximum: number): number { - minimum = Math.floor(minimum) - maximum = Math.floor(maximum) - return Math.floor(Math.random() * (maximum - minimum + 1)) + minimum - } - - private async sleep(milliseconds): Promise { - return new Promise(resolve => setTimeout(resolve, milliseconds)) - } } class GitOutput { -- cgit v1.2.3