2021-03-13 23:44:01 +00:00
|
|
|
import * as core from '@actions/core';
|
2021-12-13 22:21:26 +00:00
|
|
|
import { Action, BuildParameters, Cache, Docker, ImageTag, Output, CloudRunner, Input } from './model';
|
|
|
|
|
import { Command } from 'commander-ts';
|
2021-12-19 01:45:55 +00:00
|
|
|
import { RemoteClientCli } from './model/cloud-runner/remote-client';
|
2021-12-13 22:21:26 +00:00
|
|
|
async function runMain() {
|
2021-03-13 23:44:01 +00:00
|
|
|
try {
|
|
|
|
|
Action.checkCompatibility();
|
|
|
|
|
Cache.verify();
|
|
|
|
|
|
|
|
|
|
const { dockerfile, workspace, actionFolder } = Action;
|
|
|
|
|
|
|
|
|
|
const buildParameters = await BuildParameters.create();
|
|
|
|
|
const baseImage = new ImageTag(buildParameters);
|
2021-04-20 20:46:37 +00:00
|
|
|
let builtImage;
|
|
|
|
|
|
2021-08-17 22:13:46 +00:00
|
|
|
switch (buildParameters.cloudRunnerCluster) {
|
2021-04-20 20:46:37 +00:00
|
|
|
case 'aws':
|
2021-06-19 20:06:11 +00:00
|
|
|
case 'k8s':
|
2021-12-06 20:56:40 +00:00
|
|
|
await CloudRunner.run(buildParameters, baseImage.toString());
|
2021-04-20 20:46:37 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
// default and local case
|
|
|
|
|
default:
|
|
|
|
|
core.info('Building locally');
|
|
|
|
|
builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage });
|
|
|
|
|
await Docker.run(builtImage, { workspace, ...buildParameters });
|
|
|
|
|
break;
|
2021-03-13 23:44:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set output
|
|
|
|
|
await Output.setBuildVersion(buildParameters.buildVersion);
|
|
|
|
|
} catch (error) {
|
2021-09-08 22:17:23 +00:00
|
|
|
core.setFailed((error as Error).message);
|
2021-03-13 23:44:01 +00:00
|
|
|
}
|
|
|
|
|
}
|
2021-12-13 22:21:26 +00:00
|
|
|
async function runCli() {
|
|
|
|
|
options.versioning = 'None';
|
|
|
|
|
Input.cliOptions = options;
|
|
|
|
|
const buildParameter = await BuildParameters.create();
|
2021-12-19 01:45:55 +00:00
|
|
|
const baseImage = new ImageTag(buildParameter);
|
|
|
|
|
await CloudRunner.run(buildParameter, baseImage.toString());
|
2021-12-13 22:21:26 +00:00
|
|
|
}
|
2021-12-22 02:25:18 +00:00
|
|
|
Input.githubEnabled = false;
|
2021-12-13 22:21:26 +00:00
|
|
|
const program = new Command();
|
|
|
|
|
program.version('0.0.1');
|
2021-12-19 22:28:07 +00:00
|
|
|
const properties = Object.getOwnPropertyNames(Input);
|
2021-12-19 22:36:14 +00:00
|
|
|
core.info(`\r\n`);
|
2021-12-19 22:28:07 +00:00
|
|
|
core.info(`INPUT:`);
|
|
|
|
|
for (const element of properties) {
|
|
|
|
|
program.option(`--${element} <${element}>`, 'default description');
|
2021-12-22 01:12:36 +00:00
|
|
|
if (Input[element] !== undefined && Input[element] !== '') {
|
|
|
|
|
core.info(`${element} ${Input[element]}`);
|
|
|
|
|
}
|
2021-12-19 22:28:07 +00:00
|
|
|
}
|
2021-12-19 22:36:14 +00:00
|
|
|
core.info(`\r\n`);
|
2021-12-13 22:21:26 +00:00
|
|
|
program.option('-m, --mode <mode>', 'cli or default');
|
|
|
|
|
program.parse(process.argv);
|
2021-03-13 23:44:01 +00:00
|
|
|
|
2021-12-13 22:21:26 +00:00
|
|
|
const options = program.opts();
|
|
|
|
|
|
2021-07-07 22:34:24 +00:00
|
|
|
// eslint-disable-next-line no-console
|
2021-12-19 01:45:55 +00:00
|
|
|
console.log(`Entrypoint: ${options.mode}`);
|
2021-12-13 22:21:26 +00:00
|
|
|
|
|
|
|
|
switch (options.mode) {
|
|
|
|
|
case 'cli':
|
|
|
|
|
runCli();
|
|
|
|
|
break;
|
|
|
|
|
case 'remote-cli':
|
2021-12-19 23:46:04 +00:00
|
|
|
RemoteClientCli.RunRemoteClient(options);
|
2021-12-13 22:21:26 +00:00
|
|
|
break;
|
|
|
|
|
default:
|
2021-12-19 21:38:59 +00:00
|
|
|
Input.githubEnabled = true;
|
2021-12-13 22:21:26 +00:00
|
|
|
runMain();
|
|
|
|
|
break;
|
|
|
|
|
}
|