mirror of
https://github.com/docker/compose.git
synced 2025-07-21 20:54:32 +02:00
Move build labels parsing to config module
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
0d0da0760c
commit
f680d46d9a
@ -707,16 +707,16 @@ def process_service(service_config):
|
|||||||
if 'build' in service_dict:
|
if 'build' in service_dict:
|
||||||
if isinstance(service_dict['build'], six.string_types):
|
if isinstance(service_dict['build'], six.string_types):
|
||||||
service_dict['build'] = resolve_build_path(working_dir, service_dict['build'])
|
service_dict['build'] = resolve_build_path(working_dir, service_dict['build'])
|
||||||
elif isinstance(service_dict['build'], dict) and 'context' in service_dict['build']:
|
elif isinstance(service_dict['build'], dict):
|
||||||
path = service_dict['build']['context']
|
if 'context' in service_dict['build']:
|
||||||
service_dict['build']['context'] = resolve_build_path(working_dir, path)
|
path = service_dict['build']['context']
|
||||||
|
service_dict['build']['context'] = resolve_build_path(working_dir, path)
|
||||||
|
if 'labels' in service_dict['build']:
|
||||||
|
service_dict['build']['labels'] = parse_labels(service_dict['build']['labels'])
|
||||||
|
|
||||||
if 'volumes' in service_dict and service_dict.get('volume_driver') is None:
|
if 'volumes' in service_dict and service_dict.get('volume_driver') is None:
|
||||||
service_dict['volumes'] = resolve_volume_paths(working_dir, service_dict)
|
service_dict['volumes'] = resolve_volume_paths(working_dir, service_dict)
|
||||||
|
|
||||||
if 'labels' in service_dict:
|
|
||||||
service_dict['labels'] = parse_labels(service_dict['labels'])
|
|
||||||
|
|
||||||
if 'sysctls' in service_dict:
|
if 'sysctls' in service_dict:
|
||||||
service_dict['sysctls'] = build_string_dict(parse_sysctls(service_dict['sysctls']))
|
service_dict['sysctls'] = build_string_dict(parse_sysctls(service_dict['sysctls']))
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ from . import const
|
|||||||
from . import progress_stream
|
from . import progress_stream
|
||||||
from .config import DOCKER_CONFIG_KEYS
|
from .config import DOCKER_CONFIG_KEYS
|
||||||
from .config import merge_environment
|
from .config import merge_environment
|
||||||
from .config.config import parse_labels
|
|
||||||
from .config.errors import DependencyError
|
from .config.errors import DependencyError
|
||||||
from .config.types import ServicePort
|
from .config.types import ServicePort
|
||||||
from .config.types import VolumeSpec
|
from .config.types import VolumeSpec
|
||||||
@ -917,7 +916,7 @@ class Service(object):
|
|||||||
nocache=no_cache,
|
nocache=no_cache,
|
||||||
dockerfile=build_opts.get('dockerfile', None),
|
dockerfile=build_opts.get('dockerfile', None),
|
||||||
cache_from=build_opts.get('cache_from', None),
|
cache_from=build_opts.get('cache_from', None),
|
||||||
labels=parse_labels(build_opts.get('labels', None)),
|
labels=build_opts.get('labels', None),
|
||||||
buildargs=build_args,
|
buildargs=build_args,
|
||||||
network_mode=build_opts.get('network', None),
|
network_mode=build_opts.get('network', None),
|
||||||
target=build_opts.get('target', None),
|
target=build_opts.get('target', None),
|
||||||
|
@ -761,7 +761,7 @@ class ServiceTest(DockerClientTestCase):
|
|||||||
assert service.image()
|
assert service.image()
|
||||||
assert "build_version=2" in service.image()['ContainerConfig']['Cmd']
|
assert "build_version=2" in service.image()['ContainerConfig']['Cmd']
|
||||||
|
|
||||||
def test_build_with_build_labels_dict(self):
|
def test_build_with_build_labels(self):
|
||||||
base_dir = tempfile.mkdtemp()
|
base_dir = tempfile.mkdtemp()
|
||||||
self.addCleanup(shutil.rmtree, base_dir)
|
self.addCleanup(shutil.rmtree, base_dir)
|
||||||
|
|
||||||
@ -778,23 +778,6 @@ class ServiceTest(DockerClientTestCase):
|
|||||||
assert service.image()
|
assert service.image()
|
||||||
assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
|
assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
|
||||||
|
|
||||||
def test_build_with_build_labels_list(self):
|
|
||||||
base_dir = tempfile.mkdtemp()
|
|
||||||
self.addCleanup(shutil.rmtree, base_dir)
|
|
||||||
|
|
||||||
with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
|
|
||||||
f.write('FROM busybox\n')
|
|
||||||
|
|
||||||
service = self.create_service('buildlabels', build={
|
|
||||||
'context': text_type(base_dir),
|
|
||||||
'labels': ['com.docker.compose.test=true']
|
|
||||||
})
|
|
||||||
service.build()
|
|
||||||
self.addCleanup(self.client.remove_image, service.image_name)
|
|
||||||
|
|
||||||
assert service.image()
|
|
||||||
assert service.image()['Config']['Labels']['com.docker.compose.test'] == 'true'
|
|
||||||
|
|
||||||
@no_cluster('Container networks not on Swarm')
|
@no_cluster('Container networks not on Swarm')
|
||||||
def test_build_with_network(self):
|
def test_build_with_network(self):
|
||||||
base_dir = tempfile.mkdtemp()
|
base_dir = tempfile.mkdtemp()
|
||||||
|
@ -892,7 +892,7 @@ class ConfigTest(unittest.TestCase):
|
|||||||
assert service['build']['args']['opt1'] == '42'
|
assert service['build']['args']['opt1'] == '42'
|
||||||
assert service['build']['args']['opt2'] == 'foobar'
|
assert service['build']['args']['opt2'] == 'foobar'
|
||||||
|
|
||||||
def test_load_with_build_labels(self):
|
def test_load_build_labels_dict(self):
|
||||||
service = config.load(
|
service = config.load(
|
||||||
build_config_details(
|
build_config_details(
|
||||||
{
|
{
|
||||||
@ -919,6 +919,28 @@ class ConfigTest(unittest.TestCase):
|
|||||||
assert service['build']['labels']['label1'] == 42
|
assert service['build']['labels']['label1'] == 42
|
||||||
assert service['build']['labels']['label2'] == 'foobar'
|
assert service['build']['labels']['label2'] == 'foobar'
|
||||||
|
|
||||||
|
def test_load_build_labels_list(self):
|
||||||
|
base_file = config.ConfigFile(
|
||||||
|
'base.yml',
|
||||||
|
{
|
||||||
|
'version': '2.3',
|
||||||
|
'services': {
|
||||||
|
'web': {
|
||||||
|
'build': {
|
||||||
|
'context': '.',
|
||||||
|
'labels': ['foo=bar', 'baz=true', 'foobar=1']
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
details = config.ConfigDetails('.', [base_file])
|
||||||
|
service = config.load(details).services[0]
|
||||||
|
assert service['build']['labels'] == {
|
||||||
|
'foo': 'bar', 'baz': 'true', 'foobar': '1'
|
||||||
|
}
|
||||||
|
|
||||||
def test_build_args_allow_empty_properties(self):
|
def test_build_args_allow_empty_properties(self):
|
||||||
service = config.load(
|
service = config.load(
|
||||||
build_config_details(
|
build_config_details(
|
||||||
|
@ -473,7 +473,7 @@ class ServiceTest(unittest.TestCase):
|
|||||||
nocache=False,
|
nocache=False,
|
||||||
rm=True,
|
rm=True,
|
||||||
buildargs={},
|
buildargs={},
|
||||||
labels={},
|
labels=None,
|
||||||
cache_from=None,
|
cache_from=None,
|
||||||
network_mode=None,
|
network_mode=None,
|
||||||
target=None,
|
target=None,
|
||||||
@ -514,7 +514,7 @@ class ServiceTest(unittest.TestCase):
|
|||||||
nocache=False,
|
nocache=False,
|
||||||
rm=True,
|
rm=True,
|
||||||
buildargs={},
|
buildargs={},
|
||||||
labels={},
|
labels=None,
|
||||||
cache_from=None,
|
cache_from=None,
|
||||||
network_mode=None,
|
network_mode=None,
|
||||||
target=None,
|
target=None,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user