Compare commits

..

12 Commits

Author SHA1 Message Date
aiordache
509cfb9979 "Bump 1.27.1"
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-10 15:22:57 +02:00
aiordache
4d8d0769a4 Merge branch 'master' into 1.27.x 2020-09-10 15:08:45 +02:00
aiordache
46fb338812 Fix release notest for 1.27.0 - add removal of python2 support
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-10 14:15:40 +02:00
Anca Iordache
bf3002771e Merge pull request #7745 from ulyssessouza/maintain-version
Preserve the version when specified in the file
2020-09-10 14:14:15 +02:00
Anca Iordache
6b435bf723 Merge pull request #7744 from aiordache/driver_wa
Allow driver property for external networks
2020-09-10 14:13:33 +02:00
Ulysses Souza
fde1c681a7 Preserve the version when specified in the file
Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
2020-09-10 13:10:33 +02:00
aiordache
6979a337e0 Set service scale to 1 for oneoff containers
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-10 12:45:23 +02:00
Ulysses Souza
9f47d4e5d7 Pin docker-compose config's version to 3.9
This avoids bugs on using it's output on swarm

Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
2020-09-10 10:30:26 +02:00
aiordache
884a1c4286 Allow driver property for external networks
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-10 09:56:49 +02:00
aiordache
b111ef6322 Re-enable 0 scale/deploy.replicas
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-09 11:11:42 +02:00
aiordache
3ee52f2f28 Add 1.26.2 release notes to changelog
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-08 11:20:42 +02:00
aiordache
060e4e05da Add 1.27.0 release notes to changelog and bump dev version
Signed-off-by: aiordache <anca.iordache@docker.com>
2020-09-08 11:20:42 +02:00
9 changed files with 52 additions and 34 deletions

View File

@@ -1,6 +1,19 @@
Change log
==========
1.27.1 (2020-09-10)
-------------------
### Bugs
- Fix `compose run` when `service.scale` is specified
- Allow `driver` property for external networks as temporary workaround for swarm network propagation issue
- Pin new internal schema version to `3.9` as the default
- Preserve the version when configured in the compose file
1.27.0 (2020-09-07)
-------------------
@@ -36,6 +49,8 @@ Change log
### Miscellaneous
- Drop support for Python 2.7
- Bump `docker-py` to 4.3.1
- Bump `tox` to 3.19.0
@@ -44,6 +59,13 @@ Change log
- Add script for docs syncronization
1.26.2 (2020-07-02)
-------------------
### Bugs
- Enforce `docker-py` 4.2.2 as minimum version when installing with pip
1.26.1 (2020-06-30)
-------------------

View File

@@ -1 +1 @@
__version__ = '1.27.0'
__version__ = '1.27.1'

View File

@@ -1304,6 +1304,7 @@ def run_one_off_container(container_options, project, service, options, toplevel
native_builder = toplevel_environment.get_boolean('COMPOSE_DOCKER_CLI_BUILD')
detach = options.get('--detach')
use_network_aliases = options.get('--use-aliases')
service.scale_num = 1
containers = project.up(
service_names=[service.name],
start_deps=not options['--no-deps'],

View File

@@ -224,8 +224,6 @@ class ConfigFile(namedtuple('_ConfigFile', 'filename config')):
if version.startswith("1"):
version = V1
else:
version = VERSION
if version == V1:
raise ConfigurationError(
@@ -441,6 +439,8 @@ def load_mapping(config_files, get_func, entity_type, working_dir=None):
def validate_external(entity_type, name, config, version):
for k in config.keys():
if entity_type == 'Network' and k == 'driver':
continue
if k not in ['external', 'name']:
raise ConfigurationError(
"{} {} declared as external but specifies additional attributes "

View File

@@ -24,7 +24,7 @@ SECRETS_PATH = '/run/secrets'
WINDOWS_LONGPATH_PREFIX = '\\\\?\\'
COMPOSEFILE_V1 = ComposeVersion('1')
COMPOSE_SPEC = ComposeVersion('3')
COMPOSE_SPEC = ComposeVersion('3.9')
# minimum DOCKER ENGINE API version needed to support
# features for each compose schema version

View File

@@ -311,12 +311,12 @@ class Project:
return 1 if scale is None else scale
replicas = deploy_dict.get('replicas', None)
if scale and replicas:
if scale is not None and replicas is not None:
raise ConfigurationError(
"Both service.scale and service.deploy.replicas are set."
" Only one of them must be set."
)
if replicas:
if replicas is not None:
scale = replicas
if scale is None:
return 1

View File

@@ -15,7 +15,7 @@
set -e
VERSION="1.27.0"
VERSION="1.27.1"
IMAGE="docker/compose:$VERSION"

View File

@@ -284,7 +284,7 @@ services:
output = yaml.safe_load(result.stdout)
expected = {
'version': str(VERSION),
'version': '2',
'volumes': {'data': {'driver': 'local'}},
'networks': {'front': {}},
'services': {
@@ -308,7 +308,7 @@ services:
self.base_dir = 'tests/fixtures/restart'
result = self.dispatch(['config'])
assert yaml.safe_load(result.stdout) == {
'version': str(VERSION),
'version': '2',
'services': {
'never': {
'image': 'busybox',
@@ -354,12 +354,12 @@ services:
result = self.dispatch(['config'])
json_result = yaml.safe_load(result.stdout)
assert json_result == {
'version': str(VERSION),
'version': '2.4',
'services': {
'web': {
'command': 'true',
'image': 'alpine:latest',
'ports': [{'target': 5643}, {'target': 9999}]
'ports': ['5643/tcp', '9999/tcp']
}
}
}
@@ -369,12 +369,12 @@ services:
result = self.dispatch(['--env-file', '.env2', 'config'])
json_result = yaml.safe_load(result.stdout)
assert json_result == {
'version': str(VERSION),
'version': '2.4',
'services': {
'web': {
'command': 'false',
'image': 'alpine:latest',
'ports': [{'target': 5644}, {'target': 9998}]
'ports': ['5644/tcp', '9998/tcp']
}
}
}
@@ -384,12 +384,12 @@ services:
result = self.dispatch(['--project-directory', 'alt/', 'config'])
json_result = yaml.safe_load(result.stdout)
assert json_result == {
'version': str(VERSION),
'version': '2.4',
'services': {
'web': {
'command': 'echo uwu',
'image': 'alpine:3.10.1',
'ports': [{'target': 3341}, {'target': 4449}]
'ports': ['3341/tcp', '4449/tcp']
}
}
}
@@ -501,7 +501,7 @@ services:
self.base_dir = 'tests/fixtures/v3-full'
result = self.dispatch(['config'])
assert yaml.safe_load(result.stdout) == {
'version': str(VERSION),
'version': '3.5',
'volumes': {
'foobar': {
'labels': {

View File

@@ -160,25 +160,20 @@ class ConfigTest(unittest.TestCase):
}
def test_valid_versions(self):
for version in ['2', '2.0']:
cfg = config.load(
build_config_details({
'services': {
'foo': {'image': 'busybox'},
'bar': {'image': 'busybox', 'environment': ['FOO=1']},
}
})
)
assert cfg.version == VERSION
for version in ['2', '2.0', '2.1', '2.2', '2.3',
'3', '3.0', '3.1', '3.2', '3.3', '3.4', '3.5', '3.6', '3.7', '3.8']:
cfg = config.load(build_config_details({'version': version}))
assert cfg.version == VERSION
cfg = config.load(build_config_details({'version': '2.1'}))
assert cfg.version == VERSION
cfg = config.load(build_config_details({'version': '2.2'}))
assert cfg.version == VERSION
cfg = config.load(build_config_details({'version': '2.3'}))
assert cfg.version == VERSION
for version in ['3', '3.0']:
cfg = config.load(build_config_details({'version': version}))
assert cfg.version == VERSION
cfg = config.load(build_config_details({'version': '3.1'}))
assert cfg.version == VERSION
assert cfg.version == version
def test_v1_file_version(self):
cfg = config.load(build_config_details({'web': {'image': 'busybox'}}))