2021-03-13 23:44:01 +00:00
|
|
|
import * as core from '@actions/core';
|
2021-05-23 04:08:40 +00:00
|
|
|
import { Action, BuildParameters, Cache, Docker, ImageTag, Kubernetes, Output, RemoteBuilder } from './model';
|
2021-03-13 23:44:01 +00:00
|
|
|
|
|
|
|
async function run() {
|
|
|
|
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;
|
|
|
|
|
|
|
|
switch (buildParameters.remoteBuildCluster) {
|
|
|
|
case 'k8s':
|
|
|
|
core.info('Building with Kubernetes');
|
|
|
|
await Kubernetes.runBuildJob(buildParameters, baseImage);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'aws':
|
|
|
|
core.info('Building with AWS');
|
2021-05-23 04:08:40 +00:00
|
|
|
await RemoteBuilder.build(buildParameters, baseImage);
|
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) {
|
|
|
|
core.setFailed(error.message);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
run();
|