mirror of
				https://gitea.com/docker/build-push-action.git
				synced 2025-10-31 00:58:18 +07:00 
			
		
		
		
	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(); |             const inputs = yield context_helper_1.loadInputs(); | ||||||
|             let buildArgs = []; |             let buildArgs = []; | ||||||
|  |             const buildxEnabled = yield context_helper_1.mustBuildx(inputs); | ||||||
|             // Check buildx
 |             // Check buildx
 | ||||||
|             if (yield context_helper_1.mustBuildx(inputs)) { |             if (buildxEnabled) { | ||||||
|                 if (yield !buildx.isAvailable()) { |                 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`); |                 core.info(`🚀 Buildx will be used to build your image`); | ||||||
|                 buildArgs.push('buildx', 'build'); |                 buildArgs.push('buildx', 'build'); | ||||||
| @ -1026,6 +1028,7 @@ function run() { | |||||||
|             else { |             else { | ||||||
|                 buildArgs.push('build'); |                 buildArgs.push('build'); | ||||||
|             } |             } | ||||||
|  |             // Global options
 | ||||||
|             if (inputs.file) { |             if (inputs.file) { | ||||||
|                 buildArgs.push('--file', inputs.file); |                 buildArgs.push('--file', inputs.file); | ||||||
|             } |             } | ||||||
| @ -1047,31 +1050,45 @@ function run() { | |||||||
|             if (inputs.noCache) { |             if (inputs.noCache) { | ||||||
|                 buildArgs.push('--no-cache'); |                 buildArgs.push('--no-cache'); | ||||||
|             } |             } | ||||||
|             if (inputs.builder) { |             // Buildx options
 | ||||||
|                 core.info(`📌 Using build instance ${inputs.builder}`); |             if (buildxEnabled) { | ||||||
|                 yield buildx.use(inputs.builder); |                 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); |             buildArgs.push(inputs.context); | ||||||
|             core.info(`🏃 Starting build...`); |             core.info(`🏃 Starting build...`); | ||||||
|             yield exec.exec('docker', buildArgs); |             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) { |         catch (error) { | ||||||
|             core.setFailed(error.message); |             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(); |     const inputs: Inputs = await loadInputs(); | ||||||
|     let buildArgs: Array<string> = []; |     let buildArgs: Array<string> = []; | ||||||
|  |     const buildxEnabled = await mustBuildx(inputs); | ||||||
| 
 | 
 | ||||||
|     // Check buildx
 |     // Check buildx
 | ||||||
|     if (await mustBuildx(inputs)) { |     if (buildxEnabled) { | ||||||
|       if (await !buildx.isAvailable()) { |       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`); |       core.info(`🚀 Buildx will be used to build your image`); | ||||||
|       buildArgs.push('buildx', 'build'); |       buildArgs.push('buildx', 'build'); | ||||||
| @ -25,6 +27,7 @@ async function run(): Promise<void> { | |||||||
|       buildArgs.push('build'); |       buildArgs.push('build'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     // Global options
 | ||||||
|     if (inputs.file) { |     if (inputs.file) { | ||||||
|       buildArgs.push('--file', inputs.file); |       buildArgs.push('--file', inputs.file); | ||||||
|     } |     } | ||||||
| @ -46,32 +49,50 @@ async function run(): Promise<void> { | |||||||
|     if (inputs.noCache) { |     if (inputs.noCache) { | ||||||
|       buildArgs.push('--no-cache'); |       buildArgs.push('--no-cache'); | ||||||
|     } |     } | ||||||
|     if (inputs.builder) { | 
 | ||||||
|       core.info(`📌 Using build instance ${inputs.builder}`); |     // Buildx options
 | ||||||
|       await buildx.use(inputs.builder); |     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); |     buildArgs.push(inputs.context); | ||||||
| 
 | 
 | ||||||
|     core.info(`🏃 Starting build...`); |     core.info(`🏃 Starting build...`); | ||||||
|     await exec.exec('docker', buildArgs); |     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) { |   } catch (error) { | ||||||
|     core.setFailed(error.message); |     core.setFailed(error.message); | ||||||
|   } |   } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user