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