Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #184 allow buildx on linux hosts #185

Merged
merged 1 commit into from
Jan 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading