From a42786a465d0c6a6beed06baff59048d9af9210f Mon Sep 17 00:00:00 2001 From: Milan Vit Date: Thu, 10 Dec 2020 08:17:11 +0900 Subject: [PATCH 1/2] Fixes tags:deploy command for images that contain ONBUILD directive Fixes #4226 --- plugins/builder-dockerfile/builder-release | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/builder-dockerfile/builder-release b/plugins/builder-dockerfile/builder-release index 5f078cf8b..3cfff9af0 100755 --- a/plugins/builder-dockerfile/builder-release +++ b/plugins/builder-dockerfile/builder-release @@ -15,7 +15,11 @@ trigger-builder-dockerfile-builder-release() { plugn trigger pre-release-dockerfile "$APP" "$IMAGE_TAG" local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") - echo "FROM $IMAGE" | suppress_output "$DOCKER_BIN" image build --label=com.dokku.image-stage=release --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku -t "$IMAGE" - + if "$DOCKER_BIN" image history --format "{{ json . }}" "$IMAGE" | grep -q "ONBUILD"; then + dokku_log_warn "Image contains ONBUILD directive(s), skipping re-labeling" + else + echo "FROM $IMAGE" | suppress_output "$DOCKER_BIN" image build --label=com.dokku.image-stage=release --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku -t "$IMAGE" - + fi plugn trigger post-release-dockerfile "$APP" "$IMAGE_TAG" } From f2a3cfc0b410cc44f3b37b6b7af83518fe0d0621 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 12 Dec 2020 16:33:39 -0500 Subject: [PATCH 2/2] tests: add unit test for label skipping --- plugins/builder-dockerfile/builder-release | 2 +- tests/unit/tags.bats | 37 +++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/plugins/builder-dockerfile/builder-release b/plugins/builder-dockerfile/builder-release index 3cfff9af0..976c27a86 100755 --- a/plugins/builder-dockerfile/builder-release +++ b/plugins/builder-dockerfile/builder-release @@ -16,7 +16,7 @@ trigger-builder-dockerfile-builder-release() { local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG") if "$DOCKER_BIN" image history --format "{{ json . }}" "$IMAGE" | grep -q "ONBUILD"; then - dokku_log_warn "Image contains ONBUILD directive(s), skipping re-labeling" + dokku_log_warn "Image contains one or more ONBUILD directives, skipping label injection" else echo "FROM $IMAGE" | suppress_output "$DOCKER_BIN" image build --label=com.dokku.image-stage=release --label=com.dokku.app-name=$APP --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=dokku -t "$IMAGE" - fi diff --git a/tests/unit/tags.bats b/tests/unit/tags.bats index 43c44cdc5..4cdc4d77d 100644 --- a/tests/unit/tags.bats +++ b/tests/unit/tags.bats @@ -4,7 +4,7 @@ load test_helper setup() { global_setup - deploy_app + create_app } teardown() { @@ -20,10 +20,16 @@ teardown() { } @test "(tags) tags:create, tags, tags:destroy" { + run deploy_app + echo "output: $output" + echo "status: $status" + assert_success + run /bin/bash -c "dokku tags:create $TEST_APP v0.9.0" echo "output: $output" echo "status: $status" assert_success + run /bin/bash -c "dokku tags $TEST_APP | grep -q -E 'v0.9.0'" echo "output: $output" echo "status: $status" @@ -40,6 +46,11 @@ teardown() { } @test "(tags) tags:deploy" { + run deploy_app + echo "output: $output" + echo "status: $status" + assert_success + run /bin/bash -c "dokku tags:create $TEST_APP v0.9.0" echo "output: $output" echo "status: $status" @@ -64,3 +75,27 @@ teardown() { echo "status: $status" assert_failure } + +@test "(tags) tags:deploy (onbuild)" { + run /bin/bash -c "docker image pull gliderlabs/logspout:v3.2.13" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "docker image tag gliderlabs/logspout:v3.2.13 dokku/$TEST_APP:3.2.13" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku storage:mount $TEST_APP /var/run/docker.sock:/var/run/docker.sock" + echo "output: $output" + echo "status: $status" + assert_success + + run /bin/bash -c "dokku tags:deploy $TEST_APP 3.2.13" + echo "output: $output" + echo "status: $status" + assert_output_contains "Image contains one or more ONBUILD directives, skipping label injection" + assert_output_contains "COPY failed" 0 + assert_success +}