lib/login.js (56 lines of code) (raw):

"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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.run = void 0; const core = require("@actions/core"); const io = require("@actions/io"); const path = require("path"); const fs = require("fs"); function run() { return __awaiter(this, void 0, void 0, function* () { let username = core.getInput('username', { required: true }); let password = core.getInput('password', { required: true }); let loginServer = core.getInput('login-server', { required: true }); let authenticationToken = Buffer.from(`${username}:${password}`).toString('base64'); let config; const runnerTempDirectory = process.env['RUNNER_TEMP']; // Using process.env until the core libs are updated const dirPath = process.env['DOCKER_CONFIG'] || path.join(runnerTempDirectory, `docker_login_${Date.now()}`); yield io.mkdirP(dirPath); const dockerConfigPath = path.join(dirPath, `config.json`); if (fs.existsSync(dockerConfigPath)) { try { config = JSON.parse(fs.readFileSync(dockerConfigPath, 'utf8')); if (!config.auths) { config.auths = {}; } config.auths[loginServer] = { auth: authenticationToken }; } catch (err) { // if the file is invalid, just overwrite it config = undefined; } } if (!config) { config = { "auths": { [loginServer]: { auth: authenticationToken } } }; } core.debug(`Writing docker config contents to ${dockerConfigPath}`); fs.writeFileSync(dockerConfigPath, JSON.stringify(config)); core.exportVariable('DOCKER_CONFIG', dirPath); console.log('DOCKER_CONFIG environment variable is set'); }); } exports.run = run; run().catch(core.setFailed);