Add subdirectory for Git context
Since v0.9.0 of BuildKit (BuildX v0.7.0) you can provide a subdirectory to the default Git context. Closes #460 Closes #528 Signed-off-by: Jim Brännlund <jimbrannlund@fastmail.com>
This commit is contained in:
		
							parent
							
								
									b1aeb1103e
								
							
						
					
					
						commit
						fc5a732e0c
					
				
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							| @ -43,6 +43,19 @@ By default, this action uses the [Git context](#git-context) so you don't need t | ||||
| done directly by buildkit. The git reference will be based on the [event that triggered your workflow](https://docs.github.com/en/actions/reference/events-that-trigger-workflows) | ||||
| and will result in the following context: `https://github.com/<owner>/<repo>.git#<ref>`. | ||||
| 
 | ||||
| You can provide a subdirectory to the [Git context](#git-context) by using the following [Handlebars template](https://handlebarsjs.com/guide/) expression `{{defaultContext}}`: | ||||
| 
 | ||||
| ```yaml | ||||
|       - | ||||
|         name: Build and push | ||||
|         id: docker_build | ||||
|         uses: docker/build-push-action@v2 | ||||
|         with: | ||||
|           context: {{defaultContext}}:docker | ||||
|           push: true | ||||
|           tags: user/app:latest | ||||
| ``` | ||||
| 
 | ||||
| Be careful because **any file mutation in the steps that precede the build step will be ignored, including processing of the `.dockerignore` file** since | ||||
| the context is based on the git reference. However, you can use the [Path context](#path-context) using the | ||||
| [`context` input](#inputs) alongside the [`actions/checkout`](https://github.com/actions/checkout/) action to remove | ||||
|  | ||||
| @ -491,6 +491,24 @@ nproc=3`], | ||||
|         '.' | ||||
|       ] | ||||
|     ], | ||||
|     [ | ||||
|       15, | ||||
|       '0.7.0', | ||||
|       new Map<string, string>([ | ||||
|         ['context', '{{defaultContext}}:docker'], | ||||
|         ['load', 'false'], | ||||
|         ['no-cache', 'false'], | ||||
|         ['push', 'false'], | ||||
|         ['pull', 'false'], | ||||
|       ]), | ||||
|       [ | ||||
|         'buildx', | ||||
|         'build', | ||||
|         '--iidfile', '/tmp/.docker-build-push-jest/iidfile', | ||||
|         '--metadata-file', '/tmp/.docker-build-push-jest/metadata-file', | ||||
|         'https://github.com/docker/build-push-action.git#refs/heads/test-jest:docker' | ||||
|       ] | ||||
|     ], | ||||
|   ])( | ||||
|     '[%d] given %p with %p as inputs, returns %p', | ||||
|     async (num: number, buildxVersion: string, inputs: Map<string, any>, expected: Array<string>) => { | ||||
|  | ||||
							
								
								
									
										8376
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8376
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -32,6 +32,7 @@ | ||||
|     "@actions/exec": "^1.1.0", | ||||
|     "@actions/github": "^5.0.0", | ||||
|     "csv-parse": "^4.16.3", | ||||
|     "handlebars": "^4.7.7", | ||||
|     "semver": "^7.3.5", | ||||
|     "tmp": "^0.2.1" | ||||
|   }, | ||||
|  | ||||
| @ -9,6 +9,7 @@ import {issueCommand} from '@actions/core/lib/command'; | ||||
| import * as github from '@actions/github'; | ||||
| 
 | ||||
| import * as buildx from './buildx'; | ||||
| import * as handlebars from 'handlebars'; | ||||
| 
 | ||||
| let _defaultContext, _tmpDir: string; | ||||
| 
 | ||||
| @ -97,7 +98,7 @@ export async function getArgs(inputs: Inputs, defaultContext: string, buildxVers | ||||
|   let args: Array<string> = ['buildx']; | ||||
|   args.push.apply(args, await getBuildArgs(inputs, defaultContext, buildxVersion)); | ||||
|   args.push.apply(args, await getCommonArgs(inputs, buildxVersion)); | ||||
|   args.push(inputs.context); | ||||
|   args.push(handlebars.compile(inputs.context)({defaultContext})); | ||||
|   return args; | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										27
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								yarn.lock
									
									
									
									
									
								
							| @ -1696,6 +1696,18 @@ growly@^1.3.0: | ||||
|   resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" | ||||
|   integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= | ||||
| 
 | ||||
| handlebars@^4.7.7: | ||||
|   version "4.7.7" | ||||
|   resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" | ||||
|   integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== | ||||
|   dependencies: | ||||
|     minimist "^1.2.5" | ||||
|     neo-async "^2.6.0" | ||||
|     source-map "^0.6.1" | ||||
|     wordwrap "^1.0.0" | ||||
|   optionalDependencies: | ||||
|     uglify-js "^3.1.4" | ||||
| 
 | ||||
| has-flag@^3.0.0: | ||||
|   version "3.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" | ||||
| @ -2711,6 +2723,11 @@ natural-compare@^1.4.0: | ||||
|   resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" | ||||
|   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= | ||||
| 
 | ||||
| neo-async@^2.6.0: | ||||
|   version "2.6.2" | ||||
|   resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" | ||||
|   integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== | ||||
| 
 | ||||
| nice-try@^1.0.4: | ||||
|   version "1.0.5" | ||||
|   resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" | ||||
| @ -3549,6 +3566,11 @@ typescript@^4.3.4: | ||||
|   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" | ||||
|   integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== | ||||
| 
 | ||||
| uglify-js@^3.1.4: | ||||
|   version "3.14.5" | ||||
|   resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.5.tgz#cdabb7d4954231d80cb4a927654c4655e51f4859" | ||||
|   integrity sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ== | ||||
| 
 | ||||
| union-value@^1.0.0: | ||||
|   version "1.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" | ||||
| @ -3685,6 +3707,11 @@ word-wrap@~1.2.3: | ||||
|   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" | ||||
|   integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== | ||||
| 
 | ||||
| wordwrap@^1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" | ||||
|   integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= | ||||
| 
 | ||||
| wrap-ansi@^6.2.0: | ||||
|   version "6.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jim Brännlund
						Jim Brännlund