Skip to content

Commit

Permalink
docker conan version check added
Browse files Browse the repository at this point in the history
  • Loading branch information
davidsanfal committed Mar 13, 2024
1 parent 2a5f8c8 commit 9a2a05a
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 6 deletions.
4 changes: 2 additions & 2 deletions conan/internal/runner/__init__.py
@@ -1,6 +1,6 @@
class RunnerExection(Exception):
class RunnerException(Exception):
def __init__(self, *args, **kwargs):
self.command = kwargs.pop("command", None)
self.stdout_log = kwargs.pop("stdout_log", None)
self.stderr_log = kwargs.pop("stderr_log", None)
super(RunnerExection, self).__init__(*args, **kwargs)
super(RunnerException, self).__init__(*args, **kwargs)
15 changes: 12 additions & 3 deletions conan/internal/runner/docker.py
Expand Up @@ -6,9 +6,10 @@
from conan.api.output import ConanOutput
from conan.api.conan_api import ConfigAPI
from conan.cli import make_abs_path
from conan.internal.runner import RunnerExection
from conan.internal.runner import RunnerException
from conans.client.profile_loader import ProfileLoader
from conans.errors import ConanException
from conans.model.version import Version


def docker_info(msg):
Expand Down Expand Up @@ -88,7 +89,9 @@ def run(self):
self.init_container()
self.run_command(self.command)
self.update_local_cache()
except RunnerExection as e:
except ConanException as e:
raise e
except RunnerException as e:
raise ConanException(f'"{e.command}" inside docker fail'
f'\n\nLast command output: {str(e.stdout_log)}')
finally:
Expand Down Expand Up @@ -140,7 +143,8 @@ def run_command(self, command, log=True):
raise e
exit_metadata = self.docker_api.exec_inspect(exec_instance['Id'])
if exit_metadata['Running'] or exit_metadata['ExitCode'] > 0:
raise RunnerExection(command=command, stdout_log=stdout_log, stderr_log=stderr_log)
raise RunnerException(command=command, stdout_log=stdout_log, stderr_log=stderr_log)
return stdout_log, stderr_log

def create_runner_environment(self):
volumes = {self.abs_host_path: {'bind': self.abs_docker_path, 'mode': 'rw'}}
Expand All @@ -164,6 +168,11 @@ def create_runner_environment(self):
return volumes, environment

def init_container(self):
min_conan_version = '2.1'
stdout, _ = self.run_command('conan --version', log=False)
docker_conan_version = str(stdout.replace('Conan version ', '').replace('\n', '').replace('\r', '')) # Remove all characters and color
if Version(docker_conan_version) <= Version(min_conan_version):
raise ConanException( f'conan version inside the container must be greater than {min_conan_version}')
if self.cache != 'shared':
self.run_command('mkdir -p ${HOME}/.conan2/profiles', log=False)
self.run_command('cp -r "'+self.abs_docker_path+'/.conanrunner/profiles/." ${HOME}/.conan2/profiles/.', log=False)
Expand Down
2 changes: 1 addition & 1 deletion conans/requirements_dev.txt
Expand Up @@ -4,4 +4,4 @@ parameterized>=0.6.3
mock>=1.3.0, <1.4.0
WebTest>=2.0.18, <2.1.0
bottle
docker>=5.0.0, <6.0.0
docker

0 comments on commit 9a2a05a

Please sign in to comment.