Expose the docker build_arg to build.py

With this implement, we can add variables at building stage.
For example, add HTTP_PROXY and NO_PROXY when needed like below.

    build.py --build-args \
        HTTP_PROXY:http://127.0.0.1:8080,NO_PROXY:127.0.0.1

More info about build_arg, pls check[0]

[0] https://docs.docker.com/engine/reference/commandline/build/#set-build-time-variables-build-arg

DocImpact

Implements: bp add-buildargs
Change-Id: I29ed7f536670fef59d697603dc562a69d90743c9
This commit is contained in:
Jeffrey Zhang 2016-01-08 10:13:39 +08:00 committed by Paul Bourke
parent d4490ea2bc
commit 7093d37f18
3 changed files with 23 additions and 2 deletions

View File

@ -261,7 +261,8 @@ class WorkerThread(Thread):
nocache=self.nocache,
rm=True,
pull=pull,
forcerm=self.forcerm):
forcerm=self.forcerm,
buildargs=self.conf.build_args):
stream = json.loads(response.decode('utf-8'))
if 'stream' in stream:

View File

@ -63,6 +63,8 @@ _CLI_OPTS = [
cfg.BoolOpt('debug', short='d', default=False,
deprecated_group='kolla-build',
help='Turn on debugging log level'),
cfg.DictOpt('build-args',
help='Set docker build time variables'),
cfg.StrOpt('include-header', short='i',
deprecated_group='kolla-build',
help=('Path to custom file to be added at '

View File

@ -45,4 +45,22 @@ class WorkerThreadTest(base.TestCase):
mock_client().build.assert_called_once_with(
path=FAKE_IMAGE['path'], tag=FAKE_IMAGE['fullname'],
nocache=False, rm=True, pull=True, forcerm=True)
nocache=False, rm=True, pull=True, forcerm=True,
buildargs=None)
@mock.patch('docker.Client')
def test_build_image_with_build_arg(self, mock_client):
build_args = {
'HTTP_PROXY': 'http://localhost:8080',
'NO_PROXY': '127.0.0.1'
}
self.conf.set_override('build_args', build_args)
worker = build.WorkerThread(mock.Mock(),
mock.Mock(),
self.conf)
worker.builder(FAKE_IMAGE)
mock_client().build.assert_called_once_with(
path=FAKE_IMAGE['path'], tag=FAKE_IMAGE['fullname'],
nocache=False, rm=True, pull=True, forcerm=True,
buildargs=build_args)