Skip to content

Commit 26e65ac

Browse files
ygalblumeranco74
authored andcommitted
Add support for Containerfile in addition to Dockerfile
Also fix autocomplete Adjust unit tests Signed-off-by: Ygal Blum <[email protected]>
1 parent 46c1562 commit 26e65ac

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

skipper/cli.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def build(ctx, images_to_build, container_context, cache):
111111
utils.logger.info('Building image: %s', image)
112112

113113
if not os.path.exists(dockerfile):
114-
utils.logger.warning('Dockerfile %s does not exist! Skipping...', dockerfile)
114+
utils.logger.warning('File %s does not exist! Skipping...', dockerfile)
115115
continue
116116

117117
fqdn_image = image + ':' + tag
@@ -415,6 +415,9 @@ def runner_run(command):
415415
utils.logger.info("No build container tag was provided")
416416

417417
docker_file = utils.image_to_dockerfile(image)
418+
if docker_file is None:
419+
sys.exit(f'Could not find any dockerfile for {image}')
420+
418421
utils.logger.info("Building image using docker file: %s", docker_file)
419422
if container_context is not None:
420423
build_context = container_context

skipper/data/skipper-complete.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ __contains_word () {
8888

8989

9090
_get_images_from_dockerfiles() {
91-
local dockerfiles=$( ls Dockerfile.* )
92-
for dockerfile in $dockerfiles; do
93-
echo ${dockerfile##*.};
91+
local dockerfiles=$( find * -type f -regex "\(Docker\|Container\)file\..*" )
92+
for dockerfile in $dockerfiles; do
93+
echo ${dockerfile##*.};
9494
done
9595
}
9696

@@ -156,7 +156,7 @@ _skipper_completion() {
156156
if [[ $cur == -* ]]; then
157157
COMPREPLY=( $(compgen -W "${OPTS[RUN]}" -- $cur) )
158158
else
159-
if [[ $prev == -f ]]; then
159+
if [[ $prev == -f ]]; then
160160
COMPREPLY=( $(compgen -f -X '!*[mM]akefile' -- $cur) )
161161
else
162162
makefile=$(_get_makefile ${COMP_WORDS[*]})
@@ -172,12 +172,12 @@ _skipper_completion() {
172172
command sed -nf <(_make_target_extract_script $mode "$cur") ) )
173173
fi
174174
fi
175-
175+
176176
else
177177
if [[ $cur == -* ]]; then
178178
COMPREPLY=( $(compgen -W "${OPTS[GLOBAL]}" -- $cur) )
179179
else
180-
COMPREPLY=( $(compgen -W "$COMMANDS" -- $cur) )
180+
COMPREPLY=( $(compgen -W "$COMMANDS" -- $cur) )
181181
fi
182182
fi
183183

skipper/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,15 @@ def generate_fqdn_image(registry, namespace, image, tag='latest'):
142142

143143

144144
def image_to_dockerfile(image):
145-
return 'Dockerfile.' + image
145+
prefixes = ['Docker', 'Container']
146+
docker_files = [file for file in [prefix + "file." + image for prefix in prefixes] if os.path.exists(file)]
147+
if len(docker_files) > 1:
148+
logger.warning('Found more than one dockerfile for %s. Using %s', image, docker_files[0])
149+
return docker_files[0] if len(docker_files) else None
146150

147151

148152
def dockerfile_to_image(dockerfile):
149-
return dockerfile.replace('Dockerfile.', '')
153+
return dockerfile.split('.', 1)[-1]
150154

151155

152156
def is_tool(name):

tests/test_cli.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,6 +1393,7 @@ def test_run_non_interactive(self, skipper_runner_run_mock):
13931393
env_file=())
13941394

13951395
@mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value=''))
1396+
@mock.patch('skipper.utils.image_to_dockerfile', mock.MagicMock(autospec=True, side_effect=lambda x: 'Dockerfile.'+x))
13961397
@mock.patch('skipper.runner.run', autospec=True, return_value=0)
13971398
def test_run_without_build_container_tag(self, skipper_runner_run_mock):
13981399
global_params = self.global_params[:-2]
@@ -1414,6 +1415,7 @@ def test_run_without_build_container_tag(self, skipper_runner_run_mock):
14141415
skipper_runner_run_mock.assert_has_calls(expected_commands)
14151416

14161417
@mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value=''))
1418+
@mock.patch('skipper.utils.image_to_dockerfile', mock.MagicMock(autospec=True, side_effect=lambda x: 'Dockerfile.'+x))
14171419
@mock.patch('skipper.runner.run', autospec=True, return_value=0)
14181420
def test_run_without_build_container_tag_cached(self, skipper_runner_run_mock):
14191421
global_params = self.global_params[:-2]
@@ -1796,6 +1798,7 @@ def test_make_with_defaults_from_config_file(self, skipper_runner_run_mock):
17961798
env_file=())
17971799

17981800
@mock.patch('subprocess.check_output', mock.MagicMock(autospec=True, return_value=''))
1801+
@mock.patch('skipper.utils.image_to_dockerfile', mock.MagicMock(autospec=True, side_effect=lambda x: 'Dockerfile.'+x))
17991802
@mock.patch('skipper.runner.run', autospec=True, return_value=0)
18001803
def test_make_without_build_container_tag(self, skipper_runner_run_mock):
18011804
global_params = self.global_params[:-2]

0 commit comments

Comments
 (0)