From 9d368a184775e20184a8d211fa63c743a0742721 Mon Sep 17 00:00:00 2001 From: Imran Ismail Date: Tue, 12 Nov 2019 19:38:02 +0800 Subject: [PATCH] Setup new build --- lib/installer.js | 51 +++++++++++++++++++++++++++++------------- lib/setup-kustomize.js | 3 ++- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/lib/installer.js b/lib/installer.js index 431bcc7..a85c90f 100644 --- a/lib/installer.js +++ b/lib/installer.js @@ -1,9 +1,10 @@ "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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -23,7 +24,6 @@ const restm = __importStar(require("typed-rest-client/RestClient")); const os = __importStar(require("os")); const path = __importStar(require("path")); const semver = __importStar(require("semver")); -const fs = __importStar(require("fs")); let osPlat = os.platform(); let osArch = os.arch(); if (!tempDirectory) { @@ -99,15 +99,15 @@ function queryLatestMatch(versionSpec) { let kustomizeVersions = (yield rest.get(dataUrl)).result || []; kustomizeVersions.forEach((kustomizeVersion) => { if (kustomizeVersion.assets.some(asset => asset.name.includes(dataFileName))) { - versions.push(kustomizeVersion.name); + let version = semver.clean(kustomizeVersion.name); + if (version != null) { + versions.push(version); + } } }); - // get the latest version that matches the version spec - let version = evaluateVersions(versions, versionSpec); - return version; + return evaluateVersions(versions, versionSpec); }); } -// TODO - should we just export this from @actions/tool-cache? Lifted directly from there function evaluateVersions(versions, versionSpec) { let version = ''; core.debug(`evaluating ${versions.length} versions`); @@ -136,25 +136,39 @@ function evaluateVersions(versions, versionSpec) { function acquireKustomize(version) { return __awaiter(this, void 0, void 0, function* () { version = semver.clean(version) || ''; - let fileName = `kustomize_${version}`; + let downloadUrl; + let downloadPath; + if (semver.gte(version, "3.3.0")) { + downloadUrl = `https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${version}/kustomize_v${version}_%{os}_%{arch}.tar.gz`; + } + else if (semver.gte(version, "3.2.1")) { + downloadUrl = `https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${version}/kustomize_kustomize.v${version}_%{os}_%{arch}`; + } + else { + downloadUrl = `https://github.com/kubernetes-sigs/kustomize/releases/download/v${version}/kustomize_${version}_%{os}_%{arch}`; + } switch (osPlat) { + case 'win32': + if (semver.lte(version, "3.2.1")) + throw new Error(`Unexpected OS '${osPlat}'`); + downloadUrl = downloadUrl.replace('%{os}', 'windows'); + if (semver.lt(version, "3.3.0")) + downloadUrl = `${downloadUrl}.exe`; + break; case 'linux': case 'darwin': - case 'win32': - fileName = `${fileName}_${osPlat}`; + downloadUrl = downloadUrl.replace('%{os}', osPlat); break; default: throw new Error(`Unexpected OS '${osPlat}'`); } switch (osArch) { case 'x64': - fileName = `${fileName}_amd64`; + downloadUrl = downloadUrl.replace('%{arch}', 'amd64'); break; default: - fileName = `${fileName}_${osArch}`; + throw new Error(`Unexpected Arch '${osArch}'`); } - let downloadUrl = `https://github.com/kubernetes-sigs/kustomize/releases/download/v${version}/${fileName}`; - let downloadPath; try { downloadPath = yield tc.downloadTool(downloadUrl); } @@ -162,7 +176,14 @@ function acquireKustomize(version) { core.debug(err); throw `Failed to download version ${version}: ${err}`; } - fs.chmodSync(downloadPath, 0o755); + let toolPath = downloadPath; + if (downloadUrl.endsWith('.tar.gz')) { + let extPath = yield tc.extractTar(downloadPath); + toolPath = path.join(extPath, "kustomize"); + } + if (osPlat == "win32") { + toolPath = `${toolPath}.exe`; + } return yield tc.cacheFile(downloadPath, 'kustomize', 'kustomize', version); }); } diff --git a/lib/setup-kustomize.js b/lib/setup-kustomize.js index a9b47c4..61746a4 100644 --- a/lib/setup-kustomize.js +++ b/lib/setup-kustomize.js @@ -1,9 +1,10 @@ "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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); };