49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import * as core from '@actions/core';
 | |
| import { Action, BuildParameters, Cache, Docker, ImageTag, Kubernetes, Output, RemoteBuilder } from './model';
 | |
| import MacBuilder from './model/mac-builder';
 | |
| import PlatformSetup from './model/platform-setup';
 | |
| 
 | |
| async function run() {
 | |
|   try {
 | |
|     Action.checkCompatibility();
 | |
|     Cache.verify();
 | |
| 
 | |
|     const { dockerfile, workspace, actionFolder } = Action;
 | |
| 
 | |
|     const buildParameters = await BuildParameters.create();
 | |
|     const baseImage = new ImageTag(buildParameters);
 | |
|     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');
 | |
|         await RemoteBuilder.build(buildParameters, baseImage);
 | |
|         break;
 | |
| 
 | |
|       // default and local case
 | |
|       default:
 | |
|         core.info('Building locally');
 | |
|         await PlatformSetup.setup(buildParameters, actionFolder);
 | |
|         if (process.platform === 'darwin') {
 | |
|           MacBuilder.run(actionFolder, workspace, buildParameters);
 | |
|         } else {
 | |
|           builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage });
 | |
|           await Docker.run(builtImage, { workspace, ...buildParameters });
 | |
|         }
 | |
|         break;
 | |
|     }
 | |
| 
 | |
|     // Set output
 | |
|     await Output.setBuildVersion(buildParameters.buildVersion);
 | |
|   } catch (error) {
 | |
|     core.setFailed(error.message);
 | |
|   }
 | |
| }
 | |
| 
 | |
| run();
 |