diff --git a/.github/workflows/init_testrun.yml b/.github/workflows/init_testrun.yml index c4a0072..5dc98ad 100644 --- a/.github/workflows/init_testrun.yml +++ b/.github/workflows/init_testrun.yml @@ -7,18 +7,18 @@ jobs: steps: - name: create two dummy files run: | - echo test > test1.txt - echo test2 > test2.txt + dd if=/dev/random of=test1.dump bs=64M count=1 + dd if=/dev/zero of=test2.dump bs=32M count=32 iflag=fullblock - name: upload dummy artifact 1 uses: actions/upload-artifact@v1 with: name: test1 - path: ./test1.txt + path: ./test1.dump - name: upload dummy artifact 2 uses: actions/upload-artifact@v1 with: name: test2 - path: ./test2.txt + path: ./test2.dump # Use the output from the `hello` step call_webhook: needs: [create_dummy_artifacts] diff --git a/dist/index.js b/dist/index.js index 67252a1..8d7ac57 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2,7 +2,7 @@ module.exports = /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ 165: +/***/ 9165: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -15,7 +15,7 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -const os = __importStar(__nccwpck_require__(87)); +const os = __importStar(__nccwpck_require__(2087)); const utils_1 = __nccwpck_require__(798); /** * Commands @@ -88,7 +88,7 @@ function escapeProperty(s) { /***/ }), -/***/ 864: +/***/ 8864: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -110,11 +110,11 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -const command_1 = __nccwpck_require__(165); -const file_command_1 = __nccwpck_require__(526); +const command_1 = __nccwpck_require__(9165); +const file_command_1 = __nccwpck_require__(6526); const utils_1 = __nccwpck_require__(798); -const os = __importStar(__nccwpck_require__(87)); -const path = __importStar(__nccwpck_require__(622)); +const os = __importStar(__nccwpck_require__(2087)); +const path = __importStar(__nccwpck_require__(5622)); /** * The code to exit an action */ @@ -333,7 +333,7 @@ exports.getState = getState; /***/ }), -/***/ 526: +/***/ 6526: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -349,8 +349,8 @@ var __importStar = (this && this.__importStar) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); // We use any as a valid input type /* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__nccwpck_require__(747)); -const os = __importStar(__nccwpck_require__(87)); +const fs = __importStar(__nccwpck_require__(5747)); +const os = __importStar(__nccwpck_require__(2087)); const utils_1 = __nccwpck_require__(798); function issueCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; @@ -395,15 +395,15 @@ exports.toCommandValue = toCommandValue; /***/ }), -/***/ 20: +/***/ 8020: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Context = void 0; -const fs_1 = __nccwpck_require__(747); -const os_1 = __nccwpck_require__(87); +const fs_1 = __nccwpck_require__(5747); +const os_1 = __nccwpck_require__(2087); class Context { /** * Hydrate the context from the environment @@ -452,7 +452,7 @@ exports.Context = Context; /***/ }), -/***/ 366: +/***/ 6366: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -478,8 +478,8 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getOctokit = exports.context = void 0; -const Context = __importStar(__nccwpck_require__(20)); -const utils_1 = __nccwpck_require__(562); +const Context = __importStar(__nccwpck_require__(8020)); +const utils_1 = __nccwpck_require__(9562); exports.context = new Context.Context(); /** * Returns a hydrated octokit ready to use for GitHub Actions @@ -495,7 +495,7 @@ exports.getOctokit = getOctokit; /***/ }), -/***/ 362: +/***/ 8362: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -521,7 +521,7 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0; -const httpClient = __importStar(__nccwpck_require__(740)); +const httpClient = __importStar(__nccwpck_require__(9740)); function getAuthString(token, options) { if (!token && !options.auth) { throw new Error('Parameter token or opts.auth is required'); @@ -545,7 +545,7 @@ exports.getApiBaseUrl = getApiBaseUrl; /***/ }), -/***/ 562: +/***/ 9562: /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { "use strict"; @@ -571,12 +571,12 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getOctokitOptions = exports.GitHub = exports.context = void 0; -const Context = __importStar(__nccwpck_require__(20)); -const Utils = __importStar(__nccwpck_require__(362)); +const Context = __importStar(__nccwpck_require__(8020)); +const Utils = __importStar(__nccwpck_require__(8362)); // octokit + plugins -const core_1 = __nccwpck_require__(13); -const plugin_rest_endpoint_methods_1 = __nccwpck_require__(400); -const plugin_paginate_rest_1 = __nccwpck_require__(185); +const core_1 = __nccwpck_require__(4013); +const plugin_rest_endpoint_methods_1 = __nccwpck_require__(9400); +const plugin_paginate_rest_1 = __nccwpck_require__(2185); exports.context = new Context.Context(); const baseUrl = Utils.getApiBaseUrl(); const defaults = { @@ -606,15 +606,15 @@ exports.getOctokitOptions = getOctokitOptions; /***/ }), -/***/ 740: +/***/ 9740: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const http = __nccwpck_require__(605); -const https = __nccwpck_require__(211); -const pm = __nccwpck_require__(929); +const http = __nccwpck_require__(8605); +const https = __nccwpck_require__(7211); +const pm = __nccwpck_require__(2929); let tunnel; var HttpCodes; (function (HttpCodes) { @@ -1033,7 +1033,7 @@ class HttpClient { if (useProxy) { // If using proxy, need tunnel if (!tunnel) { - tunnel = __nccwpck_require__(357); + tunnel = __nccwpck_require__(3357); } const agentOptions = { maxSockets: maxSockets, @@ -1151,7 +1151,7 @@ exports.HttpClient = HttpClient; /***/ }), -/***/ 929: +/***/ 2929: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -1216,7 +1216,7 @@ exports.checkBypass = checkBypass; /***/ }), -/***/ 181: +/***/ 3181: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -1273,7 +1273,7 @@ exports.createTokenAuth = createTokenAuth; /***/ }), -/***/ 13: +/***/ 4013: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -1281,11 +1281,11 @@ exports.createTokenAuth = createTokenAuth; Object.defineProperty(exports, "__esModule", ({ value: true })); -var universalUserAgent = __nccwpck_require__(942); +var universalUserAgent = __nccwpck_require__(4020); var beforeAfterHook = __nccwpck_require__(579); -var request = __nccwpck_require__(608); -var graphql = __nccwpck_require__(170); -var authToken = __nccwpck_require__(181); +var request = __nccwpck_require__(8096); +var graphql = __nccwpck_require__(4170); +var authToken = __nccwpck_require__(3181); function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; @@ -1456,7 +1456,7 @@ exports.Octokit = Octokit; /***/ }), -/***/ 879: +/***/ 7879: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -1464,8 +1464,8 @@ exports.Octokit = Octokit; Object.defineProperty(exports, "__esModule", ({ value: true })); -var isPlainObject = __nccwpck_require__(810); -var universalUserAgent = __nccwpck_require__(942); +var isPlainObject = __nccwpck_require__(1810); +var universalUserAgent = __nccwpck_require__(4020); function lowercaseKeys(object) { if (!object) { @@ -1854,7 +1854,7 @@ exports.endpoint = endpoint; /***/ }), -/***/ 170: +/***/ 4170: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -1862,8 +1862,8 @@ exports.endpoint = endpoint; Object.defineProperty(exports, "__esModule", ({ value: true })); -var request = __nccwpck_require__(608); -var universalUserAgent = __nccwpck_require__(942); +var request = __nccwpck_require__(8096); +var universalUserAgent = __nccwpck_require__(4020); const VERSION = "4.6.1"; @@ -1978,7 +1978,7 @@ exports.withCustomRequest = withCustomRequest; /***/ }), -/***/ 185: +/***/ 2185: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -2130,7 +2130,7 @@ exports.paginatingEndpoints = paginatingEndpoints; /***/ }), -/***/ 400: +/***/ 9400: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -3367,7 +3367,7 @@ exports.restEndpointMethods = restEndpointMethods; /***/ }), -/***/ 63: +/***/ 9063: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -3377,8 +3377,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } -var deprecation = __nccwpck_require__(827); -var once = _interopDefault(__nccwpck_require__(738)); +var deprecation = __nccwpck_require__(4827); +var once = _interopDefault(__nccwpck_require__(1738)); const logOnce = once(deprecation => console.warn(deprecation)); /** @@ -3430,7 +3430,7 @@ exports.RequestError = RequestError; /***/ }), -/***/ 608: +/***/ 8096: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -3440,11 +3440,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } -var endpoint = __nccwpck_require__(879); -var universalUserAgent = __nccwpck_require__(942); -var isPlainObject = __nccwpck_require__(810); -var nodeFetch = _interopDefault(__nccwpck_require__(597)); -var requestError = __nccwpck_require__(63); +var endpoint = __nccwpck_require__(7879); +var universalUserAgent = __nccwpck_require__(4020); +var isPlainObject = __nccwpck_require__(1810); +var nodeFetch = _interopDefault(__nccwpck_require__(5597)); +var requestError = __nccwpck_require__(9063); const VERSION = "5.4.14"; @@ -3589,9 +3589,9 @@ exports.request = request; /***/ 579: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var register = __nccwpck_require__(979) -var addHook = __nccwpck_require__(131) -var removeHook = __nccwpck_require__(793) +var register = __nccwpck_require__(7979) +var addHook = __nccwpck_require__(2131) +var removeHook = __nccwpck_require__(4793) // bind with array of arguments: https://stackoverflow.com/a/21792913 var bind = Function.bind @@ -3650,7 +3650,7 @@ module.exports.Collection = Hook.Collection /***/ }), -/***/ 131: +/***/ 2131: /***/ ((module) => { module.exports = addHook; @@ -3703,7 +3703,7 @@ function addHook(state, kind, name, hook) { /***/ }), -/***/ 979: +/***/ 7979: /***/ ((module) => { module.exports = register; @@ -3737,7 +3737,7 @@ function register(state, name, method, options) { /***/ }), -/***/ 793: +/***/ 4793: /***/ ((module) => { module.exports = removeHook; @@ -3763,7 +3763,7 @@ function removeHook(state, name, method) { /***/ }), -/***/ 827: +/***/ 4827: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -3791,7 +3791,418 @@ exports.Deprecation = Deprecation; /***/ }), -/***/ 810: +/***/ 9295: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var options_1 = __nccwpck_require__(1363); +var delay_factory_1 = __nccwpck_require__(2389); +function backOff(request, options) { + if (options === void 0) { options = {}; } + return __awaiter(this, void 0, void 0, function () { + var sanitizedOptions, backOff; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + sanitizedOptions = options_1.getSanitizedOptions(options); + backOff = new BackOff(request, sanitizedOptions); + return [4 /*yield*/, backOff.execute()]; + case 1: return [2 /*return*/, _a.sent()]; + } + }); + }); +} +exports.backOff = backOff; +var BackOff = /** @class */ (function () { + function BackOff(request, options) { + this.request = request; + this.options = options; + this.attemptNumber = 0; + } + BackOff.prototype.execute = function () { + return __awaiter(this, void 0, void 0, function () { + var e_1, shouldRetry; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!!this.attemptLimitReached) return [3 /*break*/, 7]; + _a.label = 1; + case 1: + _a.trys.push([1, 4, , 6]); + return [4 /*yield*/, this.applyDelay()]; + case 2: + _a.sent(); + return [4 /*yield*/, this.request()]; + case 3: return [2 /*return*/, _a.sent()]; + case 4: + e_1 = _a.sent(); + this.attemptNumber++; + return [4 /*yield*/, this.options.retry(e_1, this.attemptNumber)]; + case 5: + shouldRetry = _a.sent(); + if (!shouldRetry || this.attemptLimitReached) { + throw e_1; + } + return [3 /*break*/, 6]; + case 6: return [3 /*break*/, 0]; + case 7: throw new Error("Something went wrong."); + } + }); + }); + }; + Object.defineProperty(BackOff.prototype, "attemptLimitReached", { + get: function () { + return this.attemptNumber >= this.options.numOfAttempts; + }, + enumerable: true, + configurable: true + }); + BackOff.prototype.applyDelay = function () { + return __awaiter(this, void 0, void 0, function () { + var delay; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + delay = delay_factory_1.DelayFactory(this.options, this.attemptNumber); + return [4 /*yield*/, delay.apply()]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + return BackOff; +}()); +//# sourceMappingURL=backoff.js.map + +/***/ }), + +/***/ 8048: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", ({ value: true })); +var delay_base_1 = __nccwpck_require__(722); +var AlwaysDelay = /** @class */ (function (_super) { + __extends(AlwaysDelay, _super); + function AlwaysDelay() { + return _super !== null && _super.apply(this, arguments) || this; + } + return AlwaysDelay; +}(delay_base_1.Delay)); +exports.AlwaysDelay = AlwaysDelay; +//# sourceMappingURL=always.delay.js.map + +/***/ }), + +/***/ 722: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var jitter_factory_1 = __nccwpck_require__(5344); +var Delay = /** @class */ (function () { + function Delay(options) { + this.options = options; + this.attempt = 0; + } + Delay.prototype.apply = function () { + var _this = this; + return new Promise(function (resolve) { return setTimeout(resolve, _this.jitteredDelay); }); + }; + Delay.prototype.setAttemptNumber = function (attempt) { + this.attempt = attempt; + }; + Object.defineProperty(Delay.prototype, "jitteredDelay", { + get: function () { + var jitter = jitter_factory_1.JitterFactory(this.options); + return jitter(this.delay); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Delay.prototype, "delay", { + get: function () { + var constant = this.options.startingDelay; + var base = this.options.timeMultiple; + var power = this.numOfDelayedAttempts; + var delay = constant * Math.pow(base, power); + return Math.min(delay, this.options.maxDelay); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Delay.prototype, "numOfDelayedAttempts", { + get: function () { + return this.attempt; + }, + enumerable: true, + configurable: true + }); + return Delay; +}()); +exports.Delay = Delay; +//# sourceMappingURL=delay.base.js.map + +/***/ }), + +/***/ 2389: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var skip_first_delay_1 = __nccwpck_require__(3800); +var always_delay_1 = __nccwpck_require__(8048); +function DelayFactory(options, attempt) { + var delay = initDelayClass(options); + delay.setAttemptNumber(attempt); + return delay; +} +exports.DelayFactory = DelayFactory; +function initDelayClass(options) { + if (!options.delayFirstAttempt) { + return new skip_first_delay_1.SkipFirstDelay(options); + } + return new always_delay_1.AlwaysDelay(options); +} +//# sourceMappingURL=delay.factory.js.map + +/***/ }), + +/***/ 3800: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var delay_base_1 = __nccwpck_require__(722); +var SkipFirstDelay = /** @class */ (function (_super) { + __extends(SkipFirstDelay, _super); + function SkipFirstDelay() { + return _super !== null && _super.apply(this, arguments) || this; + } + SkipFirstDelay.prototype.apply = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, this.isFirstAttempt ? true : _super.prototype.apply.call(this)]; + }); + }); + }; + Object.defineProperty(SkipFirstDelay.prototype, "isFirstAttempt", { + get: function () { + return this.attempt === 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SkipFirstDelay.prototype, "numOfDelayedAttempts", { + get: function () { + return this.attempt - 1; + }, + enumerable: true, + configurable: true + }); + return SkipFirstDelay; +}(delay_base_1.Delay)); +exports.SkipFirstDelay = SkipFirstDelay; +//# sourceMappingURL=skip-first.delay.js.map + +/***/ }), + +/***/ 6245: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function fullJitter(delay) { + var jitteredDelay = Math.random() * delay; + return Math.round(jitteredDelay); +} +exports.fullJitter = fullJitter; +//# sourceMappingURL=full.jitter.js.map + +/***/ }), + +/***/ 5344: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +var full_jitter_1 = __nccwpck_require__(6245); +var no_jitter_1 = __nccwpck_require__(6362); +function JitterFactory(options) { + switch (options.jitter) { + case "full": + return full_jitter_1.fullJitter; + case "none": + default: + return no_jitter_1.noJitter; + } +} +exports.JitterFactory = JitterFactory; +//# sourceMappingURL=jitter.factory.js.map + +/***/ }), + +/***/ 6362: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +function noJitter(delay) { + return delay; +} +exports.noJitter = noJitter; +//# sourceMappingURL=no.jitter.js.map + +/***/ }), + +/***/ 1363: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +var defaultOptions = { + delayFirstAttempt: false, + jitter: "none", + maxDelay: Infinity, + numOfAttempts: 10, + retry: function () { return true; }, + startingDelay: 100, + timeMultiple: 2 +}; +function getSanitizedOptions(options) { + var sanitized = __assign(__assign({}, defaultOptions), options); + if (sanitized.numOfAttempts < 1) { + sanitized.numOfAttempts = 1; + } + return sanitized; +} +exports.getSanitizedOptions = getSanitizedOptions; +//# sourceMappingURL=options.js.map + +/***/ }), + +/***/ 1810: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -3837,7 +4248,7 @@ exports.isPlainObject = isPlainObject; /***/ }), -/***/ 597: +/***/ 5597: /***/ ((module, exports, __nccwpck_require__) => { "use strict"; @@ -3847,11 +4258,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } -var Stream = _interopDefault(__nccwpck_require__(413)); -var http = _interopDefault(__nccwpck_require__(605)); -var Url = _interopDefault(__nccwpck_require__(835)); -var https = _interopDefault(__nccwpck_require__(211)); -var zlib = _interopDefault(__nccwpck_require__(761)); +var Stream = _interopDefault(__nccwpck_require__(2413)); +var http = _interopDefault(__nccwpck_require__(8605)); +var Url = _interopDefault(__nccwpck_require__(8835)); +var https = _interopDefault(__nccwpck_require__(7211)); +var zlib = _interopDefault(__nccwpck_require__(8761)); // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js @@ -4002,7 +4413,7 @@ FetchError.prototype.name = 'FetchError'; let convert; try { - convert = __nccwpck_require__(756).convert; + convert = __nccwpck_require__(1756).convert; } catch (e) {} const INTERNALS = Symbol('Body internals'); @@ -5494,10 +5905,10 @@ exports.FetchError = FetchError; /***/ }), -/***/ 738: +/***/ 1738: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var wrappy = __nccwpck_require__(680) +var wrappy = __nccwpck_require__(3979) module.exports = wrappy(once) module.exports.strict = wrappy(onceStrict) @@ -5543,27 +5954,27 @@ function onceStrict (fn) { /***/ }), -/***/ 357: +/***/ 3357: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -module.exports = __nccwpck_require__(96); +module.exports = __nccwpck_require__(2096); /***/ }), -/***/ 96: +/***/ 2096: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var net = __nccwpck_require__(631); -var tls = __nccwpck_require__(16); -var http = __nccwpck_require__(605); -var https = __nccwpck_require__(211); -var events = __nccwpck_require__(614); -var assert = __nccwpck_require__(59); -var util = __nccwpck_require__(669); +var net = __nccwpck_require__(1631); +var tls = __nccwpck_require__(4016); +var http = __nccwpck_require__(8605); +var https = __nccwpck_require__(7211); +var events = __nccwpck_require__(8614); +var assert = __nccwpck_require__(2357); +var util = __nccwpck_require__(1669); exports.httpOverHttp = httpOverHttp; @@ -5823,7 +6234,7 @@ exports.debug = debug; // for test /***/ }), -/***/ 942: +/***/ 4020: /***/ ((__unused_webpack_module, exports) => { "use strict"; @@ -5849,7 +6260,7 @@ exports.getUserAgent = getUserAgent; /***/ }), -/***/ 680: +/***/ 3979: /***/ ((module) => { // Returns a wrapper function that returns a wrapped callback @@ -5889,12 +6300,13 @@ function wrappy (fn, cb) { /***/ }), -/***/ 994: +/***/ 5994: /***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { /* eslint-disable camelcase */ -const github = __nccwpck_require__(366); -const core = __nccwpck_require__(864); +const github = __nccwpck_require__(6366); +const core = __nccwpck_require__(8864); +const backoff = __nccwpck_require__(9295); async function listRunArtifacts(owner, repo, run_id, octokit) { const listWorkflowRunArtifactsResponse = await octokit.actions.listWorkflowRunArtifacts({ @@ -5905,6 +6317,19 @@ async function listRunArtifacts(owner, repo, run_id, octokit) { return listWorkflowRunArtifactsResponse.data.artifacts; } +function NoArtifactsFoundErr() { + this.name = 'NoArtifactsFoundErr'; + this.message = 'no artifacts found'; +} +NoArtifactsFoundErr.prototype = Error.prototype; + +async function checkRunArtifactsCount(owner, repo, run_id, octokit) { + const artifacts = await listRunArtifacts(owner, repo, run_id, octokit); + if (artifacts.length < 1) { + throw new NoArtifactsFoundErr(); + } +} + async function deleteArtifacts(owner, repo, artifact_id, octokit) { const deleteArtifactResponse = await octokit.actions.deleteArtifact({ owner, @@ -5916,7 +6341,7 @@ async function deleteArtifacts(owner, repo, artifact_id, octokit) { /* eslint-enable no-console */ } -async function amain() { +async function run() { try { const parentRepo = core.getInput('parent_repo'); const parent_runid = core.getInput('parent_runid'); @@ -5924,6 +6349,25 @@ async function amain() { const owner = parentRepo.split('/')[0]; const repo = parentRepo.split('/')[1]; const run_id = parent_runid; + try { + // work around github caching issues: retry for ~4 mins if we don't see artifacts + await backoff.backOff(() => checkRunArtifactsCount(owner, repo, run_id, octokit), { + startingDelay: 1000, + delayFirstAttempt: false, + numOfAttempts: 9, + timeMultiple: 2 + }); + } catch (error) { + if (error.name === 'NoArtifactsFoundErr') { + /* eslint-disable no-console */ + console.log('🎉 no artifacts found'); + /* eslint-enable no-console */ + return; + } + core.setFailed(error.message); + throw error; + } + let artifacts = await listRunArtifacts(owner, repo, run_id, octokit); /* eslint-disable no-console */ console.log(`artifacts before deletion: ${artifacts.length}`); @@ -5946,25 +6390,43 @@ async function amain() { throw Error(`🛑 not all artifacts deleted (${artifacts.length} remaining)`); } else { /* eslint-disable no-console */ + /* if (Math.floor(Math.random() * 3) != 0) { + throw Error(`🛑 intentional test error`); + } */ console.log('🎉 all artifacts deleted'); /* eslint-enable no-console */ } } catch (error) { - core.setFailed(error.message); + /* eslint-disable no-console */ + console.log(`⚠️ error in run: ${error.message}`); + /* eslint-enable no-console */ + throw error; } } -try { - amain(); -} catch (error) { - core.setFailed(error.message); +async function main() { + try { + // retry for up to 21 min + await backoff.backOff(() => run(), { + startingDelay: 10000, + delayFirstAttempt: false, + numOfAttempts: 8, + timeMultiple: 2 + }); + } catch (error) { + core.setFailed(error.message); + throw error; + } } + +main(); + /* eslint-enable camelcase */ /***/ }), -/***/ 756: +/***/ 1756: /***/ ((module) => { module.exports = eval("require")("encoding"); @@ -5972,7 +6434,7 @@ module.exports = eval("require")("encoding"); /***/ }), -/***/ 59: +/***/ 2357: /***/ ((module) => { "use strict"; @@ -5980,7 +6442,7 @@ module.exports = require("assert");; /***/ }), -/***/ 614: +/***/ 8614: /***/ ((module) => { "use strict"; @@ -5988,7 +6450,7 @@ module.exports = require("events");; /***/ }), -/***/ 747: +/***/ 5747: /***/ ((module) => { "use strict"; @@ -5996,7 +6458,7 @@ module.exports = require("fs");; /***/ }), -/***/ 605: +/***/ 8605: /***/ ((module) => { "use strict"; @@ -6004,7 +6466,7 @@ module.exports = require("http");; /***/ }), -/***/ 211: +/***/ 7211: /***/ ((module) => { "use strict"; @@ -6012,7 +6474,7 @@ module.exports = require("https");; /***/ }), -/***/ 631: +/***/ 1631: /***/ ((module) => { "use strict"; @@ -6020,7 +6482,7 @@ module.exports = require("net");; /***/ }), -/***/ 87: +/***/ 2087: /***/ ((module) => { "use strict"; @@ -6028,7 +6490,7 @@ module.exports = require("os");; /***/ }), -/***/ 622: +/***/ 5622: /***/ ((module) => { "use strict"; @@ -6036,7 +6498,7 @@ module.exports = require("path");; /***/ }), -/***/ 413: +/***/ 2413: /***/ ((module) => { "use strict"; @@ -6044,7 +6506,7 @@ module.exports = require("stream");; /***/ }), -/***/ 16: +/***/ 4016: /***/ ((module) => { "use strict"; @@ -6052,7 +6514,7 @@ module.exports = require("tls");; /***/ }), -/***/ 835: +/***/ 8835: /***/ ((module) => { "use strict"; @@ -6060,7 +6522,7 @@ module.exports = require("url");; /***/ }), -/***/ 669: +/***/ 1669: /***/ ((module) => { "use strict"; @@ -6068,7 +6530,7 @@ module.exports = require("util");; /***/ }), -/***/ 761: +/***/ 8761: /***/ ((module) => { "use strict"; @@ -6114,6 +6576,6 @@ module.exports = require("zlib");; /******/ // module exports must be returned from runtime so entry inlining is disabled /******/ // startup /******/ // Load entry module and return exports -/******/ return __nccwpck_require__(994); +/******/ return __nccwpck_require__(5994); /******/ })() ; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7127432..0b0d96d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "license": "ISC", "dependencies": { "@actions/core": "^1.2.6", - "@actions/github": "^4.0.0" + "@actions/github": "^4.0.0", + "exponential-backoff": "^3.1.0" }, "devDependencies": { "eslint": "^7.23.0", @@ -1232,6 +1233,11 @@ "node": ">=0.10.0" } }, + "node_modules/exponential-backoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.0.tgz", + "integrity": "sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3772,6 +3778,11 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "exponential-backoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.0.tgz", + "integrity": "sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", diff --git a/package.json b/package.json index e38ddf0..a78d931 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "homepage": "https://github.com/christian-korneck/delete-run-artifacts-action#readme", "dependencies": { "@actions/core": "^1.2.6", - "@actions/github": "^4.0.0" + "@actions/github": "^4.0.0", + "exponential-backoff": "^3.1.0" }, "devDependencies": { "eslint": "^7.23.0", diff --git a/src/index.js b/src/index.js index 49b98cb..0633bf1 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,7 @@ /* eslint-disable camelcase */ const github = require('@actions/github'); const core = require('@actions/core'); +const backoff = require('exponential-backoff'); async function listRunArtifacts(owner, repo, run_id, octokit) { const listWorkflowRunArtifactsResponse = await octokit.actions.listWorkflowRunArtifacts({ @@ -11,6 +12,19 @@ async function listRunArtifacts(owner, repo, run_id, octokit) { return listWorkflowRunArtifactsResponse.data.artifacts; } +function NoArtifactsFoundErr() { + this.name = 'NoArtifactsFoundErr'; + this.message = 'no artifacts found'; +} +NoArtifactsFoundErr.prototype = Error.prototype; + +async function checkRunArtifactsCount(owner, repo, run_id, octokit) { + const artifacts = await listRunArtifacts(owner, repo, run_id, octokit); + if (artifacts.length < 1) { + throw new NoArtifactsFoundErr(); + } +} + async function deleteArtifacts(owner, repo, artifact_id, octokit) { const deleteArtifactResponse = await octokit.actions.deleteArtifact({ owner, @@ -22,7 +36,7 @@ async function deleteArtifacts(owner, repo, artifact_id, octokit) { /* eslint-enable no-console */ } -async function amain() { +async function run() { try { const parentRepo = core.getInput('parent_repo'); const parent_runid = core.getInput('parent_runid'); @@ -30,6 +44,25 @@ async function amain() { const owner = parentRepo.split('/')[0]; const repo = parentRepo.split('/')[1]; const run_id = parent_runid; + try { + // work around github caching issues: retry for ~4 mins if we don't see artifacts + await backoff.backOff(() => checkRunArtifactsCount(owner, repo, run_id, octokit), { + startingDelay: 1000, + delayFirstAttempt: false, + numOfAttempts: 9, + timeMultiple: 2 + }); + } catch (error) { + if (error.name === 'NoArtifactsFoundErr') { + /* eslint-disable no-console */ + console.log('🎉 no artifacts found'); + /* eslint-enable no-console */ + return; + } + core.setFailed(error.message); + throw error; + } + let artifacts = await listRunArtifacts(owner, repo, run_id, octokit); /* eslint-disable no-console */ console.log(`artifacts before deletion: ${artifacts.length}`); @@ -52,17 +85,35 @@ async function amain() { throw Error(`🛑 not all artifacts deleted (${artifacts.length} remaining)`); } else { /* eslint-disable no-console */ + /* if (Math.floor(Math.random() * 3) != 0) { + throw Error(`🛑 intentional test error`); + } */ console.log('🎉 all artifacts deleted'); /* eslint-enable no-console */ } } catch (error) { - core.setFailed(error.message); + /* eslint-disable no-console */ + console.log(`⚠️ error in run: ${error.message}`); + /* eslint-enable no-console */ + throw error; } } -try { - amain(); -} catch (error) { - core.setFailed(error.message); +async function main() { + try { + // retry for up to 21 min + await backoff.backOff(() => run(), { + startingDelay: 10000, + delayFirstAttempt: false, + numOfAttempts: 8, + timeMultiple: 2 + }); + } catch (error) { + core.setFailed(error.message); + throw error; + } } + +main(); + /* eslint-enable camelcase */