local-docker provider use docker with commands

pull/461/head
Frostebite 2022-09-17 09:05:43 +01:00
parent 307bea209b
commit 8031bac31f
4 changed files with 34 additions and 28 deletions

34
dist/index.js vendored
View File

@ -3554,12 +3554,22 @@ exports["default"] = KubernetesTaskRunner;
"use strict"; "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 __importDefault = (this && this.__importDefault) || function (mod) { var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
const cloud_runner_system_1 = __nccwpck_require__(99393);
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855)); const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
const docker_1 = __importDefault(__nccwpck_require__(16934));
const model_1 = __nccwpck_require__(41359);
class LocalDockerCloudRunner { class LocalDockerCloudRunner {
inspect() { inspect() {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
@ -3604,13 +3614,13 @@ class LocalDockerCloudRunner {
environment, environment,
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
secrets) { secrets) {
cloud_runner_logger_1.default.log(buildGuid); return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log(commands); cloud_runner_logger_1.default.log(buildGuid);
return cloud_runner_system_1.CloudRunnerSystem.Run(`docker run \ cloud_runner_logger_1.default.log(commands);
--workdir /github/workspace \ const { workspace, actionFolder } = model_1.Action;
--rm \ yield docker_1.default.run(image, Object.assign({ workspace, actionFolder }, model_1.CloudRunner.buildParameters), false, commands);
${image} \ return '';
/bin/bash -c ${commands}`, false, false); });
} }
} }
exports["default"] = LocalDockerCloudRunner; exports["default"] = LocalDockerCloudRunner;
@ -5032,12 +5042,12 @@ const image_environment_factory_1 = __importDefault(__nccwpck_require__(25145));
const fs_1 = __nccwpck_require__(57147); const fs_1 = __nccwpck_require__(57147);
const path_1 = __importDefault(__nccwpck_require__(71017)); const path_1 = __importDefault(__nccwpck_require__(71017));
class Docker { class Docker {
static run(image, parameters, silent = false) { static run(image, parameters, silent = false, overrideCommands = '') {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
let runCommand = ''; let runCommand = '';
switch (process.platform) { switch (process.platform) {
case 'linux': case 'linux':
runCommand = this.getLinuxCommand(image, parameters); runCommand = this.getLinuxCommand(image, parameters, overrideCommands);
break; break;
case 'win32': case 'win32':
runCommand = this.getWindowsCommand(image, parameters); runCommand = this.getWindowsCommand(image, parameters);
@ -5045,7 +5055,7 @@ class Docker {
yield exec_1.exec(runCommand, undefined, { silent }); yield exec_1.exec(runCommand, undefined, { silent });
}); });
} }
static getLinuxCommand(image, parameters) { static getLinuxCommand(image, parameters, overrideCommands = '') {
const { workspace, actionFolder, runnerTempPath, sshAgent, gitPrivateToken } = parameters; const { workspace, actionFolder, runnerTempPath, sshAgent, gitPrivateToken } = parameters;
const githubHome = path_1.default.join(runnerTempPath, '_github_home'); const githubHome = path_1.default.join(runnerTempPath, '_github_home');
if (!fs_1.existsSync(githubHome)) if (!fs_1.existsSync(githubHome))
@ -5070,7 +5080,7 @@ class Docker {
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \ ${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
${sshAgent ? '--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro' : ''} \ ${sshAgent ? '--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro' : ''} \
${image} \ ${image} \
/bin/bash -c /entrypoint.sh`; /bin/bash -c ${overrideCommands !== '' ? overrideCommands : `/entrypoint.sh`}`;
} }
static getWindowsCommand(image, parameters) { static getWindowsCommand(image, parameters) {
const { workspace, actionFolder, unitySerial, gitPrivateToken } = parameters; const { workspace, actionFolder, unitySerial, gitPrivateToken } = parameters;

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,10 @@
import BuildParameters from '../../../build-parameters'; import BuildParameters from '../../../build-parameters';
import { CloudRunnerSystem } from '../../services/cloud-runner-system';
import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable'; import CloudRunnerEnvironmentVariable from '../../services/cloud-runner-environment-variable';
import CloudRunnerLogger from '../../services/cloud-runner-logger'; import CloudRunnerLogger from '../../services/cloud-runner-logger';
import { ProviderInterface } from '../provider-interface'; import { ProviderInterface } from '../provider-interface';
import CloudRunnerSecret from '../../services/cloud-runner-secret'; import CloudRunnerSecret from '../../services/cloud-runner-secret';
import Docker from '../../../docker';
import { Action, CloudRunner } from '../../../../model';
class LocalDockerCloudRunner implements ProviderInterface { class LocalDockerCloudRunner implements ProviderInterface {
inspect(): Promise<string> { inspect(): Promise<string> {
@ -43,7 +44,7 @@ class LocalDockerCloudRunner implements ProviderInterface {
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[], defaultSecretsArray: { ParameterKey: string; EnvironmentVariable: string; ParameterValue: string }[],
) {} ) {}
public runTask( public async runTask(
buildGuid: string, buildGuid: string,
image: string, image: string,
commands: string, commands: string,
@ -59,15 +60,10 @@ class LocalDockerCloudRunner implements ProviderInterface {
CloudRunnerLogger.log(buildGuid); CloudRunnerLogger.log(buildGuid);
CloudRunnerLogger.log(commands); CloudRunnerLogger.log(commands);
return CloudRunnerSystem.Run( const { workspace, actionFolder } = Action;
`docker run \ await Docker.run(image, { workspace, actionFolder, ...CloudRunner.buildParameters }, false, commands);
--workdir /github/workspace \
--rm \ return '';
${image} \
/bin/bash -c ${commands}`,
false,
false,
);
} }
} }
export default LocalDockerCloudRunner; export default LocalDockerCloudRunner;

View File

@ -4,11 +4,11 @@ import { existsSync, mkdirSync } from 'fs';
import path from 'path'; import path from 'path';
class Docker { class Docker {
static async run(image, parameters, silent = false) { static async run(image, parameters, silent = false, overrideCommands = '') {
let runCommand = ''; let runCommand = '';
switch (process.platform) { switch (process.platform) {
case 'linux': case 'linux':
runCommand = this.getLinuxCommand(image, parameters); runCommand = this.getLinuxCommand(image, parameters, overrideCommands);
break; break;
case 'win32': case 'win32':
runCommand = this.getWindowsCommand(image, parameters); runCommand = this.getWindowsCommand(image, parameters);
@ -16,7 +16,7 @@ class Docker {
await exec(runCommand, undefined, { silent }); await exec(runCommand, undefined, { silent });
} }
static getLinuxCommand(image, parameters): string { static getLinuxCommand(image, parameters, overrideCommands = ''): string {
const { workspace, actionFolder, runnerTempPath, sshAgent, gitPrivateToken } = parameters; const { workspace, actionFolder, runnerTempPath, sshAgent, gitPrivateToken } = parameters;
const githubHome = path.join(runnerTempPath, '_github_home'); const githubHome = path.join(runnerTempPath, '_github_home');
@ -41,7 +41,7 @@ class Docker {
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \ ${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
${sshAgent ? '--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro' : ''} \ ${sshAgent ? '--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro' : ''} \
${image} \ ${image} \
/bin/bash -c /entrypoint.sh`; /bin/bash -c ${overrideCommands !== '' ? overrideCommands : `/entrypoint.sh`}`;
} }
static getWindowsCommand(image: any, parameters: any): string { static getWindowsCommand(image: any, parameters: any): string {