Merge pull request #4697 from docker/bump-1.12.0

Bump 1.12.0
This commit is contained in:
Joffrey F 2017-04-05 11:21:50 -07:00 committed by GitHub
commit c3662697d7
12 changed files with 90 additions and 19 deletions

View File

@ -1,7 +1,7 @@
Change log
==========
1.12.0 (2017-03-21)
1.12.0 (2017-04-04)
-------------------
### New features
@ -74,6 +74,9 @@ Change log
- Fixed a bug where override files containing port lists would cause a
TypeError to be raised
- Fixed a bug where the `deploy` key would be missing from the output of
`docker-compose config`
- Fixed a bug where scaling services up or down would sometimes re-use
obsolete containers

View File

@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import unicode_literals
__version__ = '1.12.0-rc2'
__version__ = '1.12.0'

View File

@ -879,6 +879,7 @@ def merge_service_dicts(base, override, version):
md.merge_mapping('depends_on', parse_depends_on)
md.merge_sequence('links', ServiceLink.parse)
md.merge_sequence('secrets', types.ServiceSecret.parse)
md.merge_mapping('deploy', parse_deploy)
for field in ['volumes', 'devices']:
md.merge_field(field, merge_path_mappings)
@ -1003,6 +1004,7 @@ parse_sysctls = functools.partial(parse_dict_or_list, split_kv, 'sysctls')
parse_depends_on = functools.partial(
parse_dict_or_list, lambda k: (k, {'condition': 'service_started'}), 'depends_on'
)
parse_deploy = functools.partial(parse_dict_or_list, split_kv, 'deploy')
def parse_ulimits(ulimits):

View File

@ -4,8 +4,8 @@ from __future__ import unicode_literals
VERSION_EXPLANATION = (
'You might be seeing this error because you\'re using the wrong Compose file version. '
'Either specify a supported version ("2.0", "2.1", "3.0", "3.1") and place your '
'service definitions under the `services` key, or omit the `version` key '
'Either specify a supported version ("2.0", "2.1", "3.0", "3.1", "3.2") and place '
'your service definitions under the `services` key, or omit the `version` key '
'and place your service definitions at the root of the file to use '
'version 1.\nFor more on the Compose file format versions, see '
'https://docs.docker.com/compose/compose-file/')

View File

@ -142,7 +142,7 @@ _docker_compose_bundle() {
_docker_compose_config() {
COMPREPLY=( $( compgen -W "--help --quiet -q --services" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--help --quiet -q --resolve-image-digests --services --volumes" -- "$cur" ) )
}
@ -341,7 +341,7 @@ _docker_compose_ps() {
_docker_compose_pull() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--help --ignore-pull-failures" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--help --ignore-pull-failures --parallel" -- "$cur" ) )
;;
*)
__docker_compose_services_from_image
@ -498,6 +498,10 @@ _docker_compose_unpause() {
_docker_compose_up() {
case "$prev" in
--exit-code-from)
__docker_compose_services_all
return
;;
--timeout|-t)
return
;;
@ -505,7 +509,7 @@ _docker_compose_up() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--exit-code-from --abort-on-container-exit --build -d --force-recreate --help --no-build --no-color --no-deps --no-recreate --timeout -t --remove-orphans" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--abort-on-container-exit --build -d --exit-code-from --force-recreate --help --no-build --no-color --no-deps --no-recreate --timeout -t --remove-orphans" -- "$cur" ) )
;;
*)
__docker_compose_services_all

View File

@ -3,11 +3,6 @@
# Description
# -----------
# zsh completion for docker-compose
# https://github.com/sdurrheimer/docker-compose-zsh-completion
# -------------------------------------------------------------------------
# Version
# -------
# 1.5.0
# -------------------------------------------------------------------------
# Authors
# -------
@ -199,6 +194,7 @@ __docker-compose_subcommand() {
(build)
_arguments \
$opts_help \
"*--build-arg=[Set build-time variables for one service.]:<varname>=<value>: " \
'--force-rm[Always remove intermediate containers.]' \
'--no-cache[Do not use cache when building the image.]' \
'--pull[Always attempt to pull a newer version of the image.]' \
@ -214,7 +210,9 @@ __docker-compose_subcommand() {
_arguments \
$opts_help \
'(--quiet -q)'{--quiet,-q}"[Only validate the configuration, don't print anything.]" \
'--services[Print the service names, one per line.]' && ret=0
'--resolve-image-digests[Pin image tags to digests.]' \
'--services[Print the service names, one per line.]' \
'--volumes[Print the volume names, one per line.]' && ret=0
;;
(create)
_arguments \
@ -253,6 +251,12 @@ __docker-compose_subcommand() {
(help)
_arguments ':subcommand:__docker-compose_commands' && ret=0
;;
(images)
_arguments \
$opts_help \
'-q[Only display IDs]' \
'*:services:__docker-compose_services_all' && ret=0
;;
(kill)
_arguments \
$opts_help \
@ -309,16 +313,17 @@ __docker-compose_subcommand() {
(run)
_arguments \
$opts_help \
$opts_no_deps \
'-d[Detached mode: Run container in the background, print new container name.]' \
'*-e[KEY=VAL Set an environment variable (can be used multiple times)]:environment variable KEY=VAL: ' \
'--entrypoint[Overwrite the entrypoint of the image.]:entry point: ' \
'--name=[Assign a name to the container]:name: ' \
$opts_no_deps \
'(-p --publish)'{-p,--publish=}"[Publish a container's port(s) to the host]" \
'--rm[Remove container after run. Ignored in detached mode.]' \
"--service-ports[Run command with the service's ports enabled and mapped to the host.]" \
'-T[Disable pseudo-tty allocation. By default `docker-compose run` allocates a TTY.]' \
'(-u --user)'{-u,--user=}'[Run as specified username or uid]:username or uid:_users' \
'(-v --volume)*'{-v,--volume=}'[Bind mount a volume]:volume: ' \
'(-w --workdir)'{-w,--workdir=}'[Working directory inside the container]:workdir: ' \
'(-):services:__docker-compose_services' \
'(-):command: _command_names -e' \

View File

@ -42,6 +42,11 @@ exe = EXE(pyz,
'compose/config/config_schema_v3.1.json',
'DATA'
),
(
'compose/config/config_schema_v3.2.json',
'compose/config/config_schema_v3.2.json',
'DATA'
),
(
'compose/GITSHA',
'compose/GITSHA',

View File

@ -2,7 +2,7 @@ PyYAML==3.11
backports.ssl-match-hostname==3.5.0.1; python_version < '3'
cached-property==1.2.0
colorama==0.3.7
docker==2.1.0
docker==2.2.1
dockerpty==0.4.1
docopt==0.6.1
enum34==1.0.4; python_version < '3.4'

View File

@ -1,6 +1,6 @@
#!/bin/bash
#
# Backwards compatiblity for jenkins
# Backwards compatibility for jenkins
#
# TODO: remove this script after all current PRs and jenkins are updated with
# the new script/test/ci change

View File

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

View File

@ -37,7 +37,7 @@ install_requires = [
'requests >= 2.6.1, != 2.11.0, < 2.12',
'texttable >= 0.8.1, < 0.9',
'websocket-client >= 0.32.0, < 1.0',
'docker >= 2.1.0, < 3.0',
'docker >= 2.2.1, < 3.0',
'dockerpty >= 0.4.1, < 0.5',
'six >= 1.3.0, < 2',
'jsonschema >= 2.5.1, < 3',

View File

@ -1950,6 +1950,57 @@ class ConfigTest(unittest.TestCase):
actual = config.merge_service_dicts(base, override, V3_1)
assert actual['secrets'] == override['secrets']
def test_merge_deploy(self):
base = {
'image': 'busybox',
}
override = {
'deploy': {
'mode': 'global',
'restart_policy': {
'condition': 'on-failure'
}
}
}
actual = config.merge_service_dicts(base, override, V3_0)
assert actual['deploy'] == override['deploy']
def test_merge_deploy_override(self):
base = {
'image': 'busybox',
'deploy': {
'mode': 'global',
'restart_policy': {
'condition': 'on-failure'
},
'placement': {
'constraints': [
'node.role == manager'
]
}
}
}
override = {
'deploy': {
'mode': 'replicated',
'restart_policy': {
'condition': 'any'
}
}
}
actual = config.merge_service_dicts(base, override, V3_0)
assert actual['deploy'] == {
'mode': 'replicated',
'restart_policy': {
'condition': 'any'
},
'placement': {
'constraints': [
'node.role == manager'
]
}
}
def test_external_volume_config(self):
config_details = build_config_details({
'version': '2',
@ -2249,7 +2300,8 @@ class PortsTest(unittest.TestCase):
]
INVALID_PORT_MAPPINGS = [
["8000-8001:8000"],
["8000-8004:8000-8002"],
["4242:4242-4244"],
]
VALID_SINGLE_PORTS = [