diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 68cd413..ac0d0e0 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -6,8 +6,15 @@ jobs: tests: strategy: matrix: - os: [ubuntu-22.04, ubuntu-latest] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + os: [ubuntu-latest] + python-version: ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + exclude: + # Python 3.6 is not available in GitHub Actions Ubuntu 22.04 + - os: ubuntu-latest + python-version: '3.6' + # Python 3.7 is not available in GitHub Actions Ubuntu 22.04 + - os: ubuntu-latest + python-version: '3.7' runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 45eb938..a3f233e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,6 @@ ### Unreleased -# v14.0.0 -- Support Docker compose v2 -- Drop Python 3.7 support - # v13.14.2 - Collect additional parameters provided to kubetools cronjob spec and attach to k8s cronjob spec diff --git a/kubetools/__init__.py b/kubetools/__init__.py index 602b6aa..172f505 100644 --- a/kubetools/__init__.py +++ b/kubetools/__init__.py @@ -1,3 +1,3 @@ from importlib import metadata -__version__ = metadata.version("kubetools") +__version__ = metadata.version('kubetools') diff --git a/kubetools/dev/backends/docker_compose/config.py b/kubetools/dev/backends/docker_compose/config.py index c7e08d0..4c1498d 100644 --- a/kubetools/dev/backends/docker_compose/config.py +++ b/kubetools/dev/backends/docker_compose/config.py @@ -248,8 +248,9 @@ def create_compose_config(kubetools_config): if dev_network: compose_config['networks'] = { 'default': { - 'name': 'dev', - 'external': True, + 'external': { + 'name': 'dev', + }, }, } diff --git a/kubetools/dev/backends/docker_compose/docker_util.py b/kubetools/dev/backends/docker_compose/docker_util.py index 6c95151..42caf91 100644 --- a/kubetools/dev/backends/docker_compose/docker_util.py +++ b/kubetools/dev/backends/docker_compose/docker_util.py @@ -1,3 +1,5 @@ +import sys + from functools import lru_cache import docker @@ -136,8 +138,8 @@ def get_containers_status( if not env: env = compose_project.replace(docker_name, '') - # Get the service name from the Docker Compose label (works with both v1 and v2) - name = container.labels['com.docker.compose.service'] + # Where the name is compose-name_container_N, get container + name = container.name.split('_')[1] status = container.status == 'running' ports = [] @@ -202,7 +204,8 @@ def run_compose_process(kubetools_config, command_args, **kwargs): create_compose_config(kubetools_config) compose_command = [ - 'docker', 'compose', + # Use current interpreter to run the docker-compose module installed in the same venv + sys.executable, '-m', 'compose', # Force us to look at the current directory, not relative to the compose # filename (ie .kubetools/compose-name.yml). '--project-directory', '.', diff --git a/setup.py b/setup.py index 6e73b88..14cab4e 100644 --- a/setup.py +++ b/setup.py @@ -55,9 +55,12 @@ def get_readme_content(): 'pyyaml>=3,<6', 'requests>=2,<2.29.0', # https://github.com/docker/docker-py/issues/3113 'pyretry', + 'packaging', # To support CronJob api versions 'batch/v1beta1' & 'batch/v1' 'kubernetes>=21.7.0,<25.0.0', 'tabulate<1', + # compose v2 has broken container naming + 'docker-compose<2', ), extras_require={ 'dev': (