Skip to content

Commit

Permalink
Fix check for reusing multi-platform images without re-tagging
Browse files Browse the repository at this point in the history
  • Loading branch information
shanejbrown committed Jan 10, 2024
1 parent 5156089 commit aac3c36
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
1 change: 1 addition & 0 deletions buildrunner/validation/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ def validate_multiplatform_are_not_retagged():
for src_image in step_images_info.source_image:
if (
src_image in other_step_info.dest_images
and step_images_info.dest_images
and other_step_info.is_multi_platform
):
retagged_images.append(src_image)
Expand Down
3 changes: 0 additions & 3 deletions tests/test-files/test-multi-platform-image-reuse.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ steps:
tags: [ 'latest', '0.0.1' ]
- repository: user2/buildrunner-test-multi-platform
tags: [ 'latest', '0.0.1' ]
run:
image: user1/buildrunner-test-multi-platform:0.0.1
cmd: echo "Hello World"

use-built-image1:
run:
Expand Down
32 changes: 32 additions & 0 deletions tests/test_config_validation/test_retagging.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,3 +246,35 @@ def test_invalid_multiplatform_from_dockerfile_in_filesystem():
assert isinstance(errors, Errors)
assert errors.count() == 1
assert RETAG_ERROR_MESSAGE in errors.errors[0].message


def test_reusing_multi_platform_images():
# Reuse multi-platform images is valid if the image isn't committed or pushed
config_yaml = """
steps:
build-container-multi-platform:
build:
dockerfile: |
FROM {{ DOCKER_REGISTRY }}/busybox
platforms:
- linux/amd64
- linux/arm64/v8
push:
- repository: user1/buildrunner-test-multi-platform
tags: [ 'latest', '0.0.1' ]
- repository: user2/buildrunner-test-multi-platform
tags: [ 'latest', '0.0.1' ]
use-built-image1:
run:
image: user1/buildrunner-test-multi-platform:0.0.1
cmd: echo "Hello World"
use-built-image2:
run:
image: user2/buildrunner-test-multi-platform:0.0.1
cmd: echo "Hello World"
"""
config = yaml.load(config_yaml, Loader=yaml.Loader)
errors = validate_config(**config)
assert errors is None

0 comments on commit aac3c36

Please sign in to comment.