Handle push without buildx
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									f0ffce7351
								
							
						
					
					
						commit
						ea0c8ed90e
					
				
							
								
								
									
										63
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										63
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							| @ -1015,10 +1015,12 @@ function run() { | ||||
|             } | ||||
|             const inputs = yield context_helper_1.loadInputs(); | ||||
|             let buildArgs = []; | ||||
|             const buildxEnabled = yield context_helper_1.mustBuildx(inputs); | ||||
|             // Check buildx
 | ||||
|             if (yield context_helper_1.mustBuildx(inputs)) { | ||||
|             if (buildxEnabled) { | ||||
|                 if (yield !buildx.isAvailable()) { | ||||
|                     throw new Error(`Buildx is required but not available`); | ||||
|                     core.setFailed(`Buildx is required but not available`); | ||||
|                     return; | ||||
|                 } | ||||
|                 core.info(`🚀 Buildx will be used to build your image`); | ||||
|                 buildArgs.push('buildx', 'build'); | ||||
| @ -1026,6 +1028,7 @@ function run() { | ||||
|             else { | ||||
|                 buildArgs.push('build'); | ||||
|             } | ||||
|             // Global options
 | ||||
|             if (inputs.file) { | ||||
|                 buildArgs.push('--file', inputs.file); | ||||
|             } | ||||
| @ -1047,31 +1050,45 @@ function run() { | ||||
|             if (inputs.noCache) { | ||||
|                 buildArgs.push('--no-cache'); | ||||
|             } | ||||
|             if (inputs.builder) { | ||||
|                 core.info(`📌 Using build instance ${inputs.builder}`); | ||||
|                 yield buildx.use(inputs.builder); | ||||
|             // Buildx options
 | ||||
|             if (buildxEnabled) { | ||||
|                 if (inputs.builder) { | ||||
|                     core.info(`📌 Using build instance ${inputs.builder}`); | ||||
|                     yield buildx.use(inputs.builder); | ||||
|                 } | ||||
|                 if (inputs.platforms) { | ||||
|                     buildArgs.push('--platform', inputs.platforms); | ||||
|                 } | ||||
|                 if (inputs.load) { | ||||
|                     buildArgs.push('--load'); | ||||
|                 } | ||||
|                 if (inputs.push) { | ||||
|                     buildArgs.push('--push'); | ||||
|                 } | ||||
|                 yield asyncForEach(inputs.outputs, (output) => __awaiter(this, void 0, void 0, function* () { | ||||
|                     buildArgs.push('--output', output); | ||||
|                 })); | ||||
|                 yield asyncForEach(inputs.cacheFrom, (cacheFrom) => __awaiter(this, void 0, void 0, function* () { | ||||
|                     buildArgs.push('--cache-from', cacheFrom); | ||||
|                 })); | ||||
|                 yield asyncForEach(inputs.cacheTo, (cacheTo) => __awaiter(this, void 0, void 0, function* () { | ||||
|                     buildArgs.push('--cache-from', cacheTo); | ||||
|                 })); | ||||
|             } | ||||
|             if (inputs.platforms) { | ||||
|                 buildArgs.push('--platform', inputs.platforms); | ||||
|             } | ||||
|             if (inputs.load) { | ||||
|                 buildArgs.push('--load'); | ||||
|             } | ||||
|             if (inputs.push) { | ||||
|                 buildArgs.push('--push'); | ||||
|             } | ||||
|             yield asyncForEach(inputs.outputs, (output) => __awaiter(this, void 0, void 0, function* () { | ||||
|                 buildArgs.push('--output', output); | ||||
|             })); | ||||
|             yield asyncForEach(inputs.cacheFrom, (cacheFrom) => __awaiter(this, void 0, void 0, function* () { | ||||
|                 buildArgs.push('--cache-from', cacheFrom); | ||||
|             })); | ||||
|             yield asyncForEach(inputs.cacheTo, (cacheTo) => __awaiter(this, void 0, void 0, function* () { | ||||
|                 buildArgs.push('--cache-from', cacheTo); | ||||
|             })); | ||||
|             buildArgs.push(inputs.context); | ||||
|             core.info(`🏃 Starting build...`); | ||||
|             yield exec.exec('docker', buildArgs); | ||||
|             if (!buildxEnabled && inputs.push) { | ||||
|                 let pushRepos = []; | ||||
|                 yield asyncForEach(inputs.tags, (tag) => __awaiter(this, void 0, void 0, function* () { | ||||
|                     const repo = tag.split(':', -1)[0]; | ||||
|                     if (!pushRepos.includes(repo)) { | ||||
|                         pushRepos.push(repo); | ||||
|                         core.info(`⬆️ Pushing ${repo}...`); | ||||
|                         yield exec.exec('docker', ['push', repo]); | ||||
|                     } | ||||
|                 })); | ||||
|             } | ||||
|         } | ||||
|         catch (error) { | ||||
|             core.setFailed(error.message); | ||||
|  | ||||
							
								
								
									
										67
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -13,11 +13,13 @@ async function run(): Promise<void> { | ||||
| 
 | ||||
|     const inputs: Inputs = await loadInputs(); | ||||
|     let buildArgs: Array<string> = []; | ||||
|     const buildxEnabled = await mustBuildx(inputs); | ||||
| 
 | ||||
|     // Check buildx
 | ||||
|     if (await mustBuildx(inputs)) { | ||||
|     if (buildxEnabled) { | ||||
|       if (await !buildx.isAvailable()) { | ||||
|         throw new Error(`Buildx is required but not available`); | ||||
|         core.setFailed(`Buildx is required but not available`); | ||||
|         return; | ||||
|       } | ||||
|       core.info(`🚀 Buildx will be used to build your image`); | ||||
|       buildArgs.push('buildx', 'build'); | ||||
| @ -25,6 +27,7 @@ async function run(): Promise<void> { | ||||
|       buildArgs.push('build'); | ||||
|     } | ||||
| 
 | ||||
|     // Global options
 | ||||
|     if (inputs.file) { | ||||
|       buildArgs.push('--file', inputs.file); | ||||
|     } | ||||
| @ -46,32 +49,50 @@ async function run(): Promise<void> { | ||||
|     if (inputs.noCache) { | ||||
|       buildArgs.push('--no-cache'); | ||||
|     } | ||||
|     if (inputs.builder) { | ||||
|       core.info(`📌 Using build instance ${inputs.builder}`); | ||||
|       await buildx.use(inputs.builder); | ||||
| 
 | ||||
|     // Buildx options
 | ||||
|     if (buildxEnabled) { | ||||
|       if (inputs.builder) { | ||||
|         core.info(`📌 Using build instance ${inputs.builder}`); | ||||
|         await buildx.use(inputs.builder); | ||||
|       } | ||||
|       if (inputs.platforms) { | ||||
|         buildArgs.push('--platform', inputs.platforms); | ||||
|       } | ||||
|       if (inputs.load) { | ||||
|         buildArgs.push('--load'); | ||||
|       } | ||||
|       if (inputs.push) { | ||||
|         buildArgs.push('--push'); | ||||
|       } | ||||
|       await asyncForEach(inputs.outputs, async output => { | ||||
|         buildArgs.push('--output', output); | ||||
|       }); | ||||
|       await asyncForEach(inputs.cacheFrom, async cacheFrom => { | ||||
|         buildArgs.push('--cache-from', cacheFrom); | ||||
|       }); | ||||
|       await asyncForEach(inputs.cacheTo, async cacheTo => { | ||||
|         buildArgs.push('--cache-from', cacheTo); | ||||
|       }); | ||||
|     } | ||||
|     if (inputs.platforms) { | ||||
|       buildArgs.push('--platform', inputs.platforms); | ||||
|     } | ||||
|     if (inputs.load) { | ||||
|       buildArgs.push('--load'); | ||||
|     } | ||||
|     if (inputs.push) { | ||||
|       buildArgs.push('--push'); | ||||
|     } | ||||
|     await asyncForEach(inputs.outputs, async output => { | ||||
|       buildArgs.push('--output', output); | ||||
|     }); | ||||
|     await asyncForEach(inputs.cacheFrom, async cacheFrom => { | ||||
|       buildArgs.push('--cache-from', cacheFrom); | ||||
|     }); | ||||
|     await asyncForEach(inputs.cacheTo, async cacheTo => { | ||||
|       buildArgs.push('--cache-from', cacheTo); | ||||
|     }); | ||||
| 
 | ||||
|     buildArgs.push(inputs.context); | ||||
| 
 | ||||
|     core.info(`🏃 Starting build...`); | ||||
|     await exec.exec('docker', buildArgs); | ||||
| 
 | ||||
|     if (!buildxEnabled && inputs.push) { | ||||
|       let pushRepos: Array<string> = []; | ||||
|       await asyncForEach(inputs.tags, async tag => { | ||||
|         const repo = tag.split(':', -1)[0]; | ||||
|         if (!pushRepos.includes(repo)) { | ||||
|           pushRepos.push(repo); | ||||
| 
 | ||||
|           core.info(`⬆️ Pushing ${repo}...`); | ||||
|           await exec.exec('docker', ['push', repo]); | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|   } catch (error) { | ||||
|     core.setFailed(error.message); | ||||
|   } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user