mirror of
				https://github.com/docker/setup-qemu-action.git
				synced 2025-10-31 01:00:11 +08:00 
			
		
		
		
	Merge pull request #130 from crazy-max/cache-image
cache-image input to enable/disable caching of binfmt image
This commit is contained in:
		
						commit
						fdbeaac5ff
					
				
							
								
								
									
										23
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -79,3 +79,26 @@ jobs: | |||||||
|             echo "::error::Should have failed" |             echo "::error::Should have failed" | ||||||
|             exit 1 |             exit 1 | ||||||
|           fi |           fi | ||||||
|  | 
 | ||||||
|  |   cache-image: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         cache: | ||||||
|  |           - true | ||||||
|  |           - false | ||||||
|  |     steps: | ||||||
|  |       - | ||||||
|  |         name: Checkout | ||||||
|  |         uses: actions/checkout@v4 | ||||||
|  |       - | ||||||
|  |         name: Set up QEMU | ||||||
|  |         id: qemu | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           image: tonistiigi/binfmt:master | ||||||
|  |           cache-image: ${{ matrix.cache }} | ||||||
|  |       - | ||||||
|  |         name: Available platforms | ||||||
|  |         run: echo ${{ steps.qemu.outputs.platforms }} | ||||||
|  | |||||||
| @ -41,10 +41,11 @@ jobs: | |||||||
| 
 | 
 | ||||||
| The following inputs can be used as `step.with` keys: | The following inputs can be used as `step.with` keys: | ||||||
| 
 | 
 | ||||||
| | Name        | Type   | Default                                                                       | Description                                      | | | Name          | Type   | Default                                                                       | Description                                        | | ||||||
| |-------------|--------|-------------------------------------------------------------------------------|--------------------------------------------------| | |---------------|--------|-------------------------------------------------------------------------------|----------------------------------------------------| | ||||||
| | `image`     | String | [`tonistiigi/binfmt:latest`](https://hub.docker.com/r/tonistiigi/binfmt/tags) | QEMU static binaries Docker image                | | | `image`       | String | [`tonistiigi/binfmt:latest`](https://hub.docker.com/r/tonistiigi/binfmt/tags) | QEMU static binaries Docker image                  | | ||||||
| | `platforms` | String | `all`                                                                         | Platforms to install (e.g., `arm64,riscv64,arm`) | | | `platforms`   | String | `all`                                                                         | Platforms to install (e.g., `arm64,riscv64,arm`)   | | ||||||
|  | | `cache-image` | Bool   | `true`                                                                        | Cache binfmt image to GitHub Actions cache backend | | ||||||
| 
 | 
 | ||||||
| ### outputs | ### outputs | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -16,10 +16,13 @@ describe('getInputs', () => { | |||||||
|   test.each([ |   test.each([ | ||||||
|     [ |     [ | ||||||
|       0, |       0, | ||||||
|       new Map<string, string>([]), |       new Map<string, string>([ | ||||||
|  |         ['cache-image', 'true'], | ||||||
|  |       ]), | ||||||
|       { |       { | ||||||
|         image: 'docker.io/tonistiigi/binfmt:latest', |         image: 'docker.io/tonistiigi/binfmt:latest', | ||||||
|         platforms: 'all', |         platforms: 'all', | ||||||
|  |         cacheImage: true, | ||||||
|       } as context.Inputs |       } as context.Inputs | ||||||
|     ], |     ], | ||||||
|     [ |     [ | ||||||
| @ -27,20 +30,24 @@ describe('getInputs', () => { | |||||||
|       new Map<string, string>([ |       new Map<string, string>([ | ||||||
|         ['image', 'docker/binfmt:latest'], |         ['image', 'docker/binfmt:latest'], | ||||||
|         ['platforms', 'arm64,riscv64,arm'], |         ['platforms', 'arm64,riscv64,arm'], | ||||||
|  |         ['cache-image', 'false'], | ||||||
|       ]), |       ]), | ||||||
|       { |       { | ||||||
|         image: 'docker/binfmt:latest', |         image: 'docker/binfmt:latest', | ||||||
|         platforms: 'arm64,riscv64,arm', |         platforms: 'arm64,riscv64,arm', | ||||||
|  |         cacheImage: false, | ||||||
|       } as context.Inputs |       } as context.Inputs | ||||||
|     ], |     ], | ||||||
|     [ |     [ | ||||||
|       2, |       2, | ||||||
|       new Map<string, string>([ |       new Map<string, string>([ | ||||||
|         ['platforms', 'arm64, riscv64, arm '], |         ['platforms', 'arm64, riscv64, arm '], | ||||||
|  |         ['cache-image', 'true'], | ||||||
|       ]), |       ]), | ||||||
|       { |       { | ||||||
|         image: 'docker.io/tonistiigi/binfmt:latest', |         image: 'docker.io/tonistiigi/binfmt:latest', | ||||||
|         platforms: 'arm64,riscv64,arm', |         platforms: 'arm64,riscv64,arm', | ||||||
|  |         cacheImage: true, | ||||||
|       } as context.Inputs |       } as context.Inputs | ||||||
|     ] |     ] | ||||||
|   ])( |   ])( | ||||||
|  | |||||||
| @ -15,6 +15,10 @@ inputs: | |||||||
|     description: 'Platforms to install (e.g. arm64,riscv64,arm)' |     description: 'Platforms to install (e.g. arm64,riscv64,arm)' | ||||||
|     default: 'all' |     default: 'all' | ||||||
|     required: false |     required: false | ||||||
|  |   cache-image: | ||||||
|  |     description: 'Cache binfmt image to GitHub Actions cache backend' | ||||||
|  |     default: 'true' | ||||||
|  |     required: false | ||||||
| 
 | 
 | ||||||
| outputs: | outputs: | ||||||
|   platforms: |   platforms: | ||||||
| @ -23,3 +27,4 @@ outputs: | |||||||
| runs: | runs: | ||||||
|   using: 'node20' |   using: 'node20' | ||||||
|   main: 'dist/index.js' |   main: 'dist/index.js' | ||||||
|  |   post: 'dist/index.js' | ||||||
|  | |||||||
							
								
								
									
										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
											
										
									
								
							| @ -4,11 +4,13 @@ import {Util} from '@docker/actions-toolkit/lib/util'; | |||||||
| export interface Inputs { | export interface Inputs { | ||||||
|   image: string; |   image: string; | ||||||
|   platforms: string; |   platforms: string; | ||||||
|  |   cacheImage: boolean; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function getInputs(): Inputs { | export function getInputs(): Inputs { | ||||||
|   return { |   return { | ||||||
|     image: core.getInput('image') || 'docker.io/tonistiigi/binfmt:latest', |     image: core.getInput('image') || 'docker.io/tonistiigi/binfmt:latest', | ||||||
|     platforms: Util.getInputList('platforms').join(',') || 'all' |     platforms: Util.getInputList('platforms').join(',') || 'all', | ||||||
|  |     cacheImage: core.getBooleanInput('cache-image') | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -20,13 +20,7 @@ actionsToolkit.run( | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     await core.group(`Pulling binfmt Docker image`, async () => { |     await core.group(`Pulling binfmt Docker image`, async () => { | ||||||
|       await Docker.getExecOutput(['pull', input.image], { |       await Docker.pull(input.image, input.cacheImage); | ||||||
|         ignoreReturnCode: true |  | ||||||
|       }).then(res => { |  | ||||||
|         if (res.stderr.length > 0 && res.exitCode != 0) { |  | ||||||
|           throw new Error(res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'); |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     await core.group(`Image info`, async () => { |     await core.group(`Image info`, async () => { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tõnis Tiigi
						Tõnis Tiigi