From 0fc9dc862b50884448834c9ce7ea0ec98addc5d3 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 5 Sep 2020 16:30:41 +0200 Subject: [PATCH] Add support for more platform (crazy-max/ghaction-docker-buildx#223) Signed-off-by: CrazyMax --- dist/index.js | 36 ++++++++++++++++++++++++++++++------ src/buildx.ts | 37 +++++++++++++++++++++++++++++++------ src/context.ts | 1 + 3 files changed, 62 insertions(+), 12 deletions(-) diff --git a/dist/index.js b/dist/index.js index 5c89cb5..61c4603 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2039,12 +2039,8 @@ function install(inputVersion, dockerConfigHome) { exports.install = install; function download(version) { return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || ''; - const platform = context.osPlat == 'win32' ? 'windows' : context.osPlat; - const ext = context.osPlat == 'win32' ? '.exe' : ''; - const filename = util.format('buildx-v%s.%s-amd64%s', version, platform, ext); const targetFile = context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx'; - const downloadUrl = util.format('https://github.com/docker/buildx/releases/download/v%s/%s', version, filename); + const downloadUrl = util.format('https://github.com/docker/buildx/releases/download/v%s/%s', version, yield filename(version)); let downloadPath; try { core.info(`⬇️ Downloading ${downloadUrl}...`); @@ -2057,6 +2053,33 @@ function download(version) { return yield tc.cacheFile(downloadPath, targetFile, 'buildx', version); }); } +function filename(version) { + return __awaiter(this, void 0, void 0, function* () { + let arch; + switch (context.osArch) { + case 'x64': { + arch = 'amd64'; + break; + } + case 'ppc64': { + arch = 'ppc64le'; + break; + } + case 'arm': { + const arm_version = process.config.variables.arm_version; + arch = arm_version ? 'arm-v' + arm_version : 'arm'; + break; + } + default: { + arch = context.osArch; + break; + } + } + const platform = context.osPlat == 'win32' ? 'windows' : context.osPlat; + const ext = context.osPlat == 'win32' ? '.exe' : ''; + return util.format('buildx-v%s.%s-%s%s', version, platform, arch, ext); + }); +} //# sourceMappingURL=buildx.js.map /***/ }), @@ -6540,10 +6563,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.asyncForEach = exports.getInputList = exports.getInputs = exports.osPlat = void 0; +exports.asyncForEach = exports.getInputList = exports.getInputs = exports.osArch = exports.osPlat = void 0; const os = __importStar(__webpack_require__(87)); const core = __importStar(__webpack_require__(186)); exports.osPlat = os.platform(); +exports.osArch = os.arch(); function getInputs() { return __awaiter(this, void 0, void 0, function* () { return { diff --git a/src/buildx.ts b/src/buildx.ts index 7415bc9..23875d6 100644 --- a/src/buildx.ts +++ b/src/buildx.ts @@ -92,13 +92,12 @@ export async function install(inputVersion: string, dockerConfigHome: string): P } async function download(version: string): Promise { - version = semver.clean(version) || ''; - const platform: string = context.osPlat == 'win32' ? 'windows' : context.osPlat; - const ext: string = context.osPlat == 'win32' ? '.exe' : ''; - const filename: string = util.format('buildx-v%s.%s-amd64%s', version, platform, ext); const targetFile: string = context.osPlat == 'win32' ? 'docker-buildx.exe' : 'docker-buildx'; - - const downloadUrl = util.format('https://github.com/docker/buildx/releases/download/v%s/%s', version, filename); + const downloadUrl = util.format( + 'https://github.com/docker/buildx/releases/download/v%s/%s', + version, + await filename(version) + ); let downloadPath: string; try { @@ -111,3 +110,29 @@ async function download(version: string): Promise { return await tc.cacheFile(downloadPath, targetFile, 'buildx', version); } + +async function filename(version: string): Promise { + let arch: string; + switch (context.osArch) { + case 'x64': { + arch = 'amd64'; + break; + } + case 'ppc64': { + arch = 'ppc64le'; + break; + } + case 'arm': { + const arm_version = (process.config.variables as any).arm_version; + arch = arm_version ? 'arm-v' + arm_version : 'arm'; + break; + } + default: { + arch = context.osArch; + break; + } + } + const platform: string = context.osPlat == 'win32' ? 'windows' : context.osPlat; + const ext: string = context.osPlat == 'win32' ? '.exe' : ''; + return util.format('buildx-v%s.%s-%s%s', version, platform, arch, ext); +} diff --git a/src/context.ts b/src/context.ts index b8a3d9b..acc57e2 100644 --- a/src/context.ts +++ b/src/context.ts @@ -2,6 +2,7 @@ import * as os from 'os'; import * as core from '@actions/core'; export const osPlat: string = os.platform(); +export const osArch: string = os.arch(); export interface Inputs { version: string;