diff --git a/config/docker-new/README.md b/config/docker-new/README.md index 8a44426995..a37301e2b3 100644 --- a/config/docker-new/README.md +++ b/config/docker-new/README.md @@ -73,3 +73,7 @@ installed, as well as the KernelCI core tools: $ ./kci_docker build clang-14 --prefix=my-stuff/ --fragment=kselftest --fragment=kernelci Building my-stuff/clang-14:kselftest-kernelci + +Build the `kernelci` image with a particular revision using `--build-arg`: + + ./kci_docker build kernelci --build-arg core_rev=staging-20220728.1 diff --git a/config/docker-new/kci_docker b/config/docker-new/kci_docker index bda244714a..27171cb141 100755 --- a/config/docker-new/kci_docker +++ b/config/docker-new/kci_docker @@ -31,10 +31,12 @@ def _gen_dockerfile(img_name, params): return template.render(params) -def _build_image(dockerfile, tag_name): +def _build_image(dockerfile, tag_name, buildargs): client = docker.from_env() dockerfile_obj = io.BytesIO(dockerfile.encode()) - return client.images.build(fileobj=dockerfile_obj, tag=tag_name) + return client.images.build( + fileobj=dockerfile_obj, tag=tag_name, buildargs=buildargs + ) def _dump_dockerfile(dockerfile): @@ -79,7 +81,12 @@ def main(args): _dump_dockerfile(dockerfile) print(f"Building {name}") - _, build_log = _build_image(dockerfile, name) + buildargs = { + name: value for (name, value) in ( + barg.split('=') for barg in args.build_arg + ) + } + _, build_log = _build_image(dockerfile, name, buildargs) if args.verbose: _dump_log(build_log) @@ -98,5 +105,7 @@ if __name__ == '__main__': help="Extra fragments, e.g. kernelci") parser.add_argument('--verbose', action='store_true', help="Verbose output") + parser.add_argument('--build-arg', action='append', + help="Build argument to pass to docker build") main(parser.parse_args()) sys.exit(0)