diff --git a/CHANGELOG.md b/CHANGELOG.md index 92ab0f90f..d1a6fae32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,18 @@ Change log ========== -1.25.0-rc4 (2019-10-28) +1.25.0 (2019-11-18) ------------------- ### Features -- Add BuildKit support, use `DOCKER_BUILDKIT=1` and `COMPOSE_NATIVE_BUILDER=1` +- Set no-colors to true if CLICOLOR env variable is set to 0 + +- Add working dir, config files and env file in service labels + +- Add dependencies for ARM build + +- Add BuildKit support, use `DOCKER_BUILDKIT=1` and `COMPOSE_DOCKER_CLI_BUILD=1` - Bump paramiko to 2.6.0 @@ -54,6 +60,14 @@ Change log ### Bugfixes +- Make container service color deterministic, remove red from chosen colors + +- Fix non ascii chars error. Python2 only + +- Format image size as decimal to be align with Docker CLI + +- Use Python Posix support to get tty size + - Fix same file 'extends' optimization - Use python POSIX support to get tty size @@ -76,7 +90,7 @@ Change log - Fixed race condition after pulling image -- Fixed error on duplicate mount points. +- Fixed error on duplicate mount points - Fixed merge on networks section @@ -84,6 +98,13 @@ Change log - Fixed the presentation of failed services on 'docker-compose start' when containers are not available +1.24.1 (2019-06-24) +------------------- + +### Bugfixes + +- Fixed acceptance tests + 1.24.0 (2019-03-28) ------------------- diff --git a/README.md b/README.md index c9b87daba..fd643f174 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ see [the list of features](https://github.com/docker/docker.github.io/blob/maste Compose is great for development, testing, and staging environments, as well as CI workflows. You can learn more about each case in -[Common Use Cases](https://github.com/docker/docker.github.io/blob/master/compose/overview.md#common-use-cases). +[Common Use Cases](https://github.com/docker/docker.github.io/blob/master/compose/index.md#common-use-cases). Using Compose is basically a three-step process. diff --git a/compose/__init__.py b/compose/__init__.py index 4bd8d724c..d35e818c7 100644 --- a/compose/__init__.py +++ b/compose/__init__.py @@ -1,4 +1,4 @@ from __future__ import absolute_import from __future__ import unicode_literals -__version__ = '1.25.0-rc4' +__version__ = '1.25.0' diff --git a/compose/cli/colors.py b/compose/cli/colors.py index cb30e3615..ea45198e0 100644 --- a/compose/cli/colors.py +++ b/compose/cli/colors.py @@ -41,9 +41,9 @@ for (name, code) in get_pairs(): def rainbow(): - cs = ['cyan', 'yellow', 'green', 'magenta', 'red', 'blue', + cs = ['cyan', 'yellow', 'green', 'magenta', 'blue', 'intense_cyan', 'intense_yellow', 'intense_green', - 'intense_magenta', 'intense_red', 'intense_blue'] + 'intense_magenta', 'intense_blue'] for c in cs: yield globals()[c] diff --git a/compose/cli/log_printer.py b/compose/cli/log_printer.py index 6940a74c8..a4b70a672 100644 --- a/compose/cli/log_printer.py +++ b/compose/cli/log_printer.py @@ -134,7 +134,10 @@ def build_thread(container, presenter, queue, log_args): def build_thread_map(initial_containers, presenters, thread_args): return { container.id: build_thread(container, next(presenters), *thread_args) - for container in initial_containers + # Container order is unspecified, so they are sorted by name in order to make + # container:presenter (log color) assignment deterministic when given a list of containers + # with the same names. + for container in sorted(initial_containers, key=lambda c: c.name) } diff --git a/compose/cli/main.py b/compose/cli/main.py index 9e01b5396..fde4fd035 100644 --- a/compose/cli/main.py +++ b/compose/cli/main.py @@ -6,6 +6,7 @@ import contextlib import functools import json import logging +import os import pipes import re import subprocess @@ -102,9 +103,9 @@ def dispatch(): options, handler, command_options = dispatcher.parse(sys.argv[1:]) setup_console_handler(console_handler, options.get('--verbose'), - options.get('--no-ansi'), + set_no_color_if_clicolor(options.get('--no-ansi')), options.get("--log-level")) - setup_parallel_logger(options.get('--no-ansi')) + setup_parallel_logger(set_no_color_if_clicolor(options.get('--no-ansi'))) if options.get('--no-ansi'): command_options['--no-color'] = True return functools.partial(perform_command, options, handler, command_options) @@ -666,7 +667,7 @@ class TopLevelCommand(object): log_printer_from_project( self.project, containers, - options['--no-color'], + set_no_color_if_clicolor(options['--no-color']), log_args, event_stream=self.project.events(service_names=options['SERVICE'])).run() @@ -1124,7 +1125,7 @@ class TopLevelCommand(object): log_printer = log_printer_from_project( self.project, attached_containers, - options['--no-color'], + set_no_color_if_clicolor(options['--no-color']), {'follow': True}, cascade_stop, event_stream=self.project.events(service_names=service_names)) @@ -1602,3 +1603,7 @@ def warn_for_swarm_mode(client): "To deploy your application across the swarm, " "use `docker stack deploy`.\n" ) + + +def set_no_color_if_clicolor(no_color_flag): + return no_color_flag or os.environ.get('CLICOLOR') == "0" diff --git a/compose/service.py b/compose/service.py index ae4e7665c..d329be979 100644 --- a/compose/service.py +++ b/compose/service.py @@ -1806,6 +1806,9 @@ class _CLIBuilder(object): line = p.stdout.readline() if not line: break + # Fix non ascii chars on Python2. To remove when #6890 is complete. + if six.PY2: + magic_word = str(magic_word) if line.startswith(magic_word): appear = True yield json.dumps({"stream": line}) diff --git a/script/release/release.py b/script/release/release.py index a9c05eb78..82bc9a0a6 100755 --- a/script/release/release.py +++ b/script/release/release.py @@ -204,7 +204,8 @@ def resume(args): gh_release = create_release_draft(repository, args.release, pr_data, files) delete_assets(gh_release) upload_assets(gh_release, files) - img_manager = ImageManager(args.release) + tag_as_latest = is_tag_latest(args.release) + img_manager = ImageManager(args.release, tag_as_latest) img_manager.build_images(repository) except ScriptError as e: print(e) @@ -244,7 +245,8 @@ def start(args): files = downloader.download_all(args.release) gh_release = create_release_draft(repository, args.release, pr_data, files) upload_assets(gh_release, files) - img_manager = ImageManager(args.release) + tag_as_latest = is_tag_latest(args.release) + img_manager = ImageManager(args.release, tag_as_latest) img_manager.build_images(repository) except ScriptError as e: print(e) diff --git a/script/run/run.sh b/script/run/run.sh index cb2fb8ca9..ffeec59a2 100755 --- a/script/run/run.sh +++ b/script/run/run.sh @@ -15,7 +15,7 @@ set -e -VERSION="1.25.0-rc4" +VERSION="1.25.0" IMAGE="docker/compose:$VERSION"