| 
									
										
										
										
											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'; | 
					
						
							| 
									
										
										
										
											2022-01-26 04:59:41 +00:00
										 |  |  | import MacBuilder from './model/mac-builder'; | 
					
						
							| 
									
										
										
										
											2022-01-25 21:18:15 +00:00
										 |  |  | import PlatformSetup from './model/platform-setup'; | 
					
						
							| 
									
										
										
										
											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'); | 
					
						
							| 
									
										
										
										
											2022-01-26 08:17:10 +00:00
										 |  |  |         await PlatformSetup.setup(buildParameters, actionFolder); | 
					
						
							| 
									
										
										
										
											2022-01-26 04:59:41 +00:00
										 |  |  |         if (process.platform === 'darwin') { | 
					
						
							|  |  |  |           MacBuilder.run(actionFolder, workspace, buildParameters); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |           builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage }); | 
					
						
							|  |  |  |           await Docker.run(builtImage, { workspace, ...buildParameters }); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |         break; | 
					
						
							| 
									
										
										
										
											2021-03-13 23:44:01 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Set output
 | 
					
						
							|  |  |  |     await Output.setBuildVersion(buildParameters.buildVersion); | 
					
						
							|  |  |  |   } catch (error) { | 
					
						
							|  |  |  |     core.setFailed(error.message); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | run(); |