mirror of
https://github.com/nick-fields/retry.git
synced 2026-02-10 15:15:30 +00:00
feat: retry only on specific exit code (#58)
* feat: retry only on specific exit code * Run ci_cd on all push events * dedupe step IDs * add assertions for retry_on_exit_code tests * minor: implemented suggested fix from @andersfischernielsen * docs: update readme to reflect new retry_on_exit_code input Co-authored-by: Anders Fischer-Nielsen <andersfischern@me.com>
This commit is contained in:
24
dist/index.js
vendored
24
dist/index.js
vendored
@@ -289,6 +289,7 @@ var WARNING_ON_RETRY = core_1.getInput('warning_on_retry').toLowerCase() === 'tr
|
||||
var ON_RETRY_COMMAND = core_1.getInput('on_retry_command');
|
||||
var CONTINUE_ON_ERROR = getInputBoolean('continue_on_error');
|
||||
var NEW_COMMAND_ON_RETRY = core_1.getInput('new_command_on_retry');
|
||||
var RETRY_ON_EXIT_CODE = getInputNumber('retry_on_exit_code', false);
|
||||
var OS = process.platform;
|
||||
var OUTPUT_TOTAL_ATTEMPTS_KEY = 'total_attempts';
|
||||
var OUTPUT_EXIT_CODE_KEY = 'exit_code';
|
||||
@@ -479,17 +480,17 @@ function runAction() {
|
||||
attempt = 1;
|
||||
_a.label = 2;
|
||||
case 2:
|
||||
if (!(attempt <= MAX_ATTEMPTS)) return [3 /*break*/, 12];
|
||||
if (!(attempt <= MAX_ATTEMPTS)) return [3 /*break*/, 13];
|
||||
_a.label = 3;
|
||||
case 3:
|
||||
_a.trys.push([3, 5, , 11]);
|
||||
_a.trys.push([3, 5, , 12]);
|
||||
// just keep overwriting attempts output
|
||||
core_1.setOutput(OUTPUT_TOTAL_ATTEMPTS_KEY, attempt);
|
||||
return [4 /*yield*/, runCmd(attempt)];
|
||||
case 4:
|
||||
_a.sent();
|
||||
core_1.info("Command completed after " + attempt + " attempt(s).");
|
||||
return [3 /*break*/, 12];
|
||||
return [3 /*break*/, 13];
|
||||
case 5:
|
||||
error_2 = _a.sent();
|
||||
if (!(attempt === MAX_ATTEMPTS)) return [3 /*break*/, 6];
|
||||
@@ -499,11 +500,14 @@ function runAction() {
|
||||
// error: timeout
|
||||
throw error_2;
|
||||
case 7:
|
||||
if (!(exit > 0 && RETRY_ON === 'timeout')) return [3 /*break*/, 8];
|
||||
if (!(RETRY_ON_EXIT_CODE && RETRY_ON_EXIT_CODE !== exit)) return [3 /*break*/, 8];
|
||||
throw error_2;
|
||||
case 8:
|
||||
if (!(exit > 0 && RETRY_ON === 'timeout')) return [3 /*break*/, 9];
|
||||
// error: error
|
||||
throw error_2;
|
||||
case 8: return [4 /*yield*/, runRetryCmd()];
|
||||
case 9:
|
||||
case 9: return [4 /*yield*/, runRetryCmd()];
|
||||
case 10:
|
||||
_a.sent();
|
||||
if (WARNING_ON_RETRY) {
|
||||
core_1.warning("Attempt " + attempt + " failed. Reason: " + error_2.message);
|
||||
@@ -511,12 +515,12 @@ function runAction() {
|
||||
else {
|
||||
core_1.info("Attempt " + attempt + " failed. Reason: " + error_2.message);
|
||||
}
|
||||
_a.label = 10;
|
||||
case 10: return [3 /*break*/, 11];
|
||||
case 11:
|
||||
_a.label = 11;
|
||||
case 11: return [3 /*break*/, 12];
|
||||
case 12:
|
||||
attempt++;
|
||||
return [3 /*break*/, 2];
|
||||
case 12: return [2 /*return*/];
|
||||
case 13: return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user