Skip to content

Commit

Permalink
Fix #184 allow buildx on linux hosts
Browse files Browse the repository at this point in the history
  • Loading branch information
khizunov committed Jan 22, 2025
1 parent 9e010ce commit 3a41f5e
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 31 deletions.
14 changes: 11 additions & 3 deletions skipper/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,10 @@ def handle_volumes_bind_mount(docker_cmd, homedir, volumes, workspace):
f'{homedir}/.gitconfig:{homedir}/.gitconfig:ro'])

# required for docker credentials
docker_config_folder = f'{homedir}/.docker/config.json'
if not any(f'{docker_config_folder}:' in volume for volume in volumes):
_add_path_if_exists(docker_config_folder, f'{DOCKER_CONFIG}/config.json', 'rw', volumes)
suffix = get_docker_config_volume_suffix()
docker_config_volume = f'{homedir}{suffix}'
if not any(f'{docker_config_volume}:' in volume for volume in volumes):
_add_path_if_exists(docker_config_volume, f'{DOCKER_CONFIG}{suffix}', 'rw', volumes)

# required for docker certificates
_add_path_if_exists('/etc/docker', '/etc/docker', 'ro', volumes)
Expand Down Expand Up @@ -251,3 +252,10 @@ def _network_exists(net):
cmd = ['network', 'ls', "-f", f"NAME={net}"]
result = utils.run_container_command(cmd)
return net in result


def get_docker_config_volume_suffix():
if sys.platform == "darwin":
return '/config.json'

return ''
31 changes: 15 additions & 16 deletions tests/test_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ def get_volume_mapping(volume_mapping):
return volume_mapping


def get_docker_config_volume():
suffix = runner.get_docker_config_volume_suffix()
return get_volume_mapping(
f'{HOME_DIR}{suffix}:{DOCKER_CONFIG}{suffix}:rw'
)


@mock.patch('skipper.runner._network_exists', mock.MagicMock(autospec=True, return_value=True))
class TestRunner(unittest.TestCase):

Expand Down Expand Up @@ -96,8 +103,7 @@ def test_run_simple_command_nested_network_exist(self, resource_filename_mock, c
'-e', 'SKIPPER_DOCKER_GID=978',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down Expand Up @@ -145,8 +151,7 @@ def test_run_simple_command_nested_network_not_exist(self, resource_filename_moc
'-e', 'SKIPPER_DOCKER_GID=978',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down Expand Up @@ -195,8 +200,7 @@ def test_run_simple_command_nested_with_env(self, resource_filename_mock, check_
'-e', 'SKIPPER_DOCKER_GID=978',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down Expand Up @@ -254,8 +258,7 @@ def test_run_simple_command_nested_with_env_file(
homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(
homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down Expand Up @@ -314,8 +317,7 @@ def test_run_simple_command_nested_with_multiple_env_files(
homedir=HOME_DIR),
'-v', '%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(
homedir=HOME_DIR),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', '/etc/docker:/etc/docker:ro',
'-v', '%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR),
'-v', '/var/run/docker.sock:/var/run/docker.sock:rw',
Expand Down Expand Up @@ -366,8 +368,7 @@ def test_run_simple_command_nested_interactive(self, resource_filename_mock,
'-e', 'SKIPPER_DOCKER_GID=978',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down Expand Up @@ -414,8 +415,7 @@ def test_run_complex_command_nested(self, resource_filename_mock, check_output_m
'-e', 'SKIPPER_DOCKER_GID=978',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down Expand Up @@ -466,8 +466,7 @@ def test_run_complex_command_nested_with_env(self, resource_filename_mock, check
'-e', 'SKIPPER_DOCKER_GID=978',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('/var/run/docker.sock:/var/run/docker.sock:rw'),
Expand Down
18 changes: 6 additions & 12 deletions tests/test_runner_podman.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
from skipper import utils
from skipper import runner
from skipper.runner import get_default_net
from skipper.utils import PODMAN, DOCKER_CONFIG
from tests.test_runner import get_volume_mapping
from tests.test_runner import get_volume_mapping, get_docker_config_volume

USER_ID = 1000
GROUP_ID = 2000
Expand Down Expand Up @@ -86,8 +85,7 @@ def test_run_simple_command_nested_network_exist(self, resource_filename_mock, c
'--group-add', 'keep-groups',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('entrypoint.sh:/opt/skipper/skipper-entrypoint.sh:rw'),
Expand Down Expand Up @@ -129,8 +127,7 @@ def test_run_simple_command_nested_network_not_exist(self, resource_filename_moc
'--group-add', 'keep-groups',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('entrypoint.sh:/opt/skipper/skipper-entrypoint.sh:rw'),
Expand Down Expand Up @@ -172,8 +169,7 @@ def test_run_complex_command_nested(self, resource_filename_mock, check_output_m
'--group-add', 'keep-groups',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('entrypoint.sh:/opt/skipper/skipper-entrypoint.sh:rw'),
Expand Down Expand Up @@ -219,8 +215,7 @@ def test_run_non_existent_unauthorized_volume(self, resource_filename_mock,
'--group-add', 'keep-groups',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('entrypoint.sh:/opt/skipper/skipper-entrypoint.sh:rw'),
Expand Down Expand Up @@ -264,8 +259,7 @@ def test_run_complex_command_nested_with_env(self, resource_filename_mock, check
'--group-add', 'keep-groups',
'-v', get_volume_mapping('%(homedir)s/.netrc:%(homedir)s/.netrc:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.gitconfig:%(homedir)s/.gitconfig:ro' % dict(homedir=HOME_DIR)),
'-v', get_volume_mapping('%(homedir)s/.docker/config.json:%(docker_config)s/config.json:rw' % dict(
homedir=HOME_DIR, docker_config=DOCKER_CONFIG)),
'-v', get_docker_config_volume(),
'-v', get_volume_mapping('/etc/docker:/etc/docker:ro'),
'-v', get_volume_mapping('%(workdir)s:%(workdir)s:rw' % dict(workdir=WORKDIR)),
'-v', get_volume_mapping('entrypoint.sh:/opt/skipper/skipper-entrypoint.sh:rw'),
Expand Down

0 comments on commit 3a41f5e

Please sign in to comment.