mirror of
				https://github.com/docker/setup-qemu-action.git
				synced 2025-10-31 09:10:10 +08:00 
			
		
		
		
	
						commit
						bfc44eaf57
					
				| @ -13,6 +13,7 @@ ___ | |||||||
| * [Usage](#usage) | * [Usage](#usage) | ||||||
| * [Customizing](#customizing) | * [Customizing](#customizing) | ||||||
|   * [inputs](#inputs) |   * [inputs](#inputs) | ||||||
|  |   * [outputs](#outputs) | ||||||
| * [Contributing](#contributing) | * [Contributing](#contributing) | ||||||
| 
 | 
 | ||||||
| ## Usage | ## Usage | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										19
									
								
								src/context.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/context.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | import * as core from '@actions/core'; | ||||||
|  | import {issueCommand} from '@actions/core/lib/command'; | ||||||
|  | 
 | ||||||
|  | export interface Inputs { | ||||||
|  |   image: string; | ||||||
|  |   platforms: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function getInputs(): Inputs { | ||||||
|  |   return { | ||||||
|  |     image: core.getInput('image') || 'tonistiigi/binfmt:latest', | ||||||
|  |     platforms: core.getInput('platforms') || 'all' | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // FIXME: Temp fix https://github.com/actions/toolkit/issues/777
 | ||||||
|  | export function setOutput(name: string, value: unknown): void { | ||||||
|  |   issueCommand('set-output', {name}, value); | ||||||
|  | } | ||||||
							
								
								
									
										76
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
|  | import * as context from './context'; | ||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
| import * as exec from '@actions/exec'; | import * as exec from '@actions/exec'; | ||||||
| import {issueCommand} from '@actions/core/lib/command'; |  | ||||||
| 
 | 
 | ||||||
| interface Platforms { | interface Platforms { | ||||||
|   supported: string[]; |   supported: string[]; | ||||||
| @ -9,49 +9,47 @@ interface Platforms { | |||||||
| 
 | 
 | ||||||
| async function run(): Promise<void> { | async function run(): Promise<void> { | ||||||
|   try { |   try { | ||||||
|     core.startGroup(`Docker info`); |     const input: context.Inputs = context.getInputs(); | ||||||
|     await exec.exec('docker', ['version']); |  | ||||||
|     await exec.exec('docker', ['info']); |  | ||||||
|     core.endGroup(); |  | ||||||
| 
 | 
 | ||||||
|     const image: string = core.getInput('image') || 'tonistiigi/binfmt:latest'; |     await core.group(`Docker info`, async () => { | ||||||
|     const platforms: string = core.getInput('platforms') || 'all'; |       await exec.exec('docker', ['version'], { | ||||||
| 
 |         failOnStdErr: false | ||||||
|     core.startGroup(`Pulling binfmt Docker image`); |  | ||||||
|     await exec.exec('docker', ['pull', image]); |  | ||||||
|     core.endGroup(); |  | ||||||
| 
 |  | ||||||
|     core.startGroup(`Image info`); |  | ||||||
|     await exec.exec('docker', ['image', 'inspect', image]); |  | ||||||
|     core.endGroup(); |  | ||||||
| 
 |  | ||||||
|     core.startGroup(`Installing QEMU static binaries`); |  | ||||||
|     await exec.exec('docker', ['run', '--rm', '--privileged', image, '--install', platforms]); |  | ||||||
|     core.endGroup(); |  | ||||||
| 
 |  | ||||||
|     core.startGroup(`Extracting available platforms`); |  | ||||||
|     await exec |  | ||||||
|       .getExecOutput('docker', ['run', '--rm', '--privileged', image], { |  | ||||||
|         ignoreReturnCode: true, |  | ||||||
|         silent: true |  | ||||||
|       }) |  | ||||||
|       .then(res => { |  | ||||||
|         if (res.stderr.length > 0 && res.exitCode != 0) { |  | ||||||
|           throw new Error(res.stderr.trim()); |  | ||||||
|         } |  | ||||||
|         const platforms: Platforms = JSON.parse(res.stdout.trim()); |  | ||||||
|         core.info(`${platforms.supported.join(',')}`); |  | ||||||
|         setOutput('platforms', platforms.supported.join(',')); |  | ||||||
|       }); |       }); | ||||||
|     core.endGroup(); |       await exec.exec('docker', ['info'], { | ||||||
|  |         failOnStdErr: false | ||||||
|  |       }); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     await core.group(`Pulling binfmt Docker image`, async () => { | ||||||
|  |       await exec.exec('docker', ['pull', input.image]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     await core.group(`Image info`, async () => { | ||||||
|  |       await exec.exec('docker', ['image', 'inspect', input.image]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     await core.group(`Installing QEMU static binaries`, async () => { | ||||||
|  |       await exec.exec('docker', ['run', '--rm', '--privileged', input.image, '--install', input.platforms]); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     await core.group(`Extracting available platforms`, async () => { | ||||||
|  |       await exec | ||||||
|  |         .getExecOutput('docker', ['run', '--rm', '--privileged', input.image], { | ||||||
|  |           ignoreReturnCode: true, | ||||||
|  |           silent: true | ||||||
|  |         }) | ||||||
|  |         .then(res => { | ||||||
|  |           if (res.stderr.length > 0 && res.exitCode != 0) { | ||||||
|  |             throw new Error(res.stderr.trim()); | ||||||
|  |           } | ||||||
|  |           const platforms: Platforms = JSON.parse(res.stdout.trim()); | ||||||
|  |           core.info(`${platforms.supported.join(',')}`); | ||||||
|  |           context.setOutput('platforms', platforms.supported.join(',')); | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|   } catch (error) { |   } catch (error) { | ||||||
|     core.setFailed(error.message); |     core.setFailed(error.message); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // FIXME: Temp fix https://github.com/actions/toolkit/issues/777
 |  | ||||||
| function setOutput(name: string, value: unknown): void { |  | ||||||
|   issueCommand('set-output', {name}, value); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| run(); | run(); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 CrazyMax
						CrazyMax