Skip to content

Commit

Permalink
Merge pull request buildkite-plugins#216 from pauldthomson/master
Browse files Browse the repository at this point in the history
Check if prebuilt image exists before doing "get"
  • Loading branch information
toolmantim authored Apr 11, 2019
2 parents 5085379 + c48d94c commit aab453f
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 17 deletions.
13 changes: 11 additions & 2 deletions lib/metadata.bash
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
#!/bin/bash

# Check agent meta-data exists
function plugin_check_metadata_exists() {
buildkite-agent meta-data exists "$1"
}

# Read agent metadata for the plugin
function plugin_get_metadata() {
local key="docker-compose-plugin-$1"
plugin_prompt buildkite-agent meta-data get "$key"
buildkite-agent meta-data get "$key"
if plugin_check_metadata_exists "$key"; then
plugin_prompt buildkite-agent meta-data get "$key"
buildkite-agent meta-data get "$key"
else
exit 1
fi
}

# Write agent metadata for the plugin
Expand Down
26 changes: 25 additions & 1 deletion tests/metadata.bats
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/usr/bin/env bats

# export BUILDKITE_AGENT_STUB_DEBUG=/dev/tty

load '/usr/local/lib/bats/load.bash'
load '../lib/shared'
load '../lib/metadata'
Expand Down Expand Up @@ -28,4 +30,26 @@ load '../lib/metadata'

assert_success
assert_output "built-image-tag-service-tests/composefiles/docker-compose.v2.0.yml-tests/composefiles/docker-compose.v2.1.yml"
}
}

@test "Check if image exists in metadata before trying to retrieve" {
# Only expect the 'exists' command to be called, not the 'get'
stub buildkite-agent "meta-data exists docker-compose-plugin-built-image-tag-test : exit 1"

run get_prebuilt_image "test"

assert_failure
unstub buildkite-agent
}

@test "Only get prebuilt image from metadata if 'exists' check returns true" {
stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-test : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-test : exit 0"

run get_prebuilt_image "test"

assert_success
assert_output --partial "buildkite-agent meta-data get docker-compose-plugin-built-image-tag-test"
unstub buildkite-agent
}
12 changes: 8 additions & 4 deletions tests/push.bats
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ load '../lib/shared'
export BUILDKITE_BUILD_NUMBER=1

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-app : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-app : exit 1"

stub docker-compose \
"-f docker-compose.yml -p buildkite1111 config : cat $PWD/tests/composefiles/docker-compose.config.v3.2.yml" \
Expand Down Expand Up @@ -56,8 +56,8 @@ load '../lib/shared'
"push my.repository/myservice2:llamas : echo pushing myservice2 image"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice1 : exit 1" \
"meta-data get docker-compose-plugin-built-image-tag-myservice2 : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice1 : exit 1" \
"meta-data exists docker-compose-plugin-built-image-tag-myservice2 : exit 1"

run $PWD/hooks/command

Expand Down Expand Up @@ -87,6 +87,7 @@ load '../lib/shared'
"-f docker-compose.yml -p buildkite1111 config : echo blah"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -126,8 +127,11 @@ load '../lib/shared'
"-f docker-compose.yml -p buildkite1111 config : echo blah"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo prebuilt" \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo prebuilt" \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo prebuilt"

run $PWD/hooks/command
Expand All @@ -152,7 +156,7 @@ load '../lib/shared'
export BUILDKITE_BUILD_NUMBER=1

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-helper : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-helper : exit 1"

stub docker-compose \
"-f docker-compose.yml -p buildkite1111 config : cat $PWD/tests/composefiles/docker-compose.config.v3.2.yml" \
Expand Down
36 changes: 26 additions & 10 deletions tests/run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ load '../lib/run'
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'echo hello world' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand All @@ -49,7 +49,7 @@ load '../lib/run'
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand All @@ -76,7 +76,7 @@ load '../lib/run'
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --workdir=/test_workdir --rm myservice : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand All @@ -102,7 +102,7 @@ load '../lib/run'
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'sh -c \'echo hello world\'' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand Down Expand Up @@ -130,7 +130,7 @@ cmd3"
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'cmd1\ncmd2\ncmd3' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand Down Expand Up @@ -158,7 +158,7 @@ cmd3"
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice echo hello world' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand Down Expand Up @@ -189,7 +189,7 @@ cmd3"
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 -e MYENV=0 -e MYENV -e MYENV=2 -e MYENV -e ANOTHER=this\ is\ a\ long\ string\ with\ spaces\;\ and\ semi-colons --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand All @@ -214,6 +214,7 @@ cmd3"
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand All @@ -240,6 +241,7 @@ cmd3"
"-f tests/composefiles/docker-compose.v2.0.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice-tests/composefiles/docker-compose.v2.0.yml : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice-tests/composefiles/docker-compose.v2.0.yml : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -267,6 +269,7 @@ export BUILDKITE_JOB_ID=1111
"-f tests/composefiles/docker-compose.v2.0.yml -f tests/composefiles/docker-compose.v2.1.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice-tests/composefiles/docker-compose.v2.0.yml-tests/composefiles/docker-compose.v2.1.yml : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice-tests/composefiles/docker-compose.v2.0.yml-tests/composefiles/docker-compose.v2.1.yml : echo myimage"

run $PWD/hooks/command
Expand All @@ -290,6 +293,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml pull myservice : exit 2"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -317,6 +321,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -344,6 +349,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 -T --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice without tty"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand All @@ -369,6 +375,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --no-deps --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice without dependencies"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand All @@ -395,6 +402,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --no-ansi --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice without ansi output"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand All @@ -421,6 +429,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 --use-aliases --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice with use aliases output"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -448,6 +457,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 -v $PWD/dist:/app/dist -v $PWD/pkg:/app/pkg --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice with volumes"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand All @@ -474,6 +484,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 -v buildkite:/buildkite --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice with volumes"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -503,6 +514,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 -v buildkite:/buildkite -v $PWD/dist:/app/dist --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice with volumes"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand All @@ -529,6 +541,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 -v buildkite:/buildkite -v $PWD/dist:/app/dist --rm myservice /bin/sh -e -c 'pwd' : echo ran myservice with volumes"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down Expand Up @@ -557,7 +570,7 @@ export BUILDKITE_JOB_ID=1111
"-f llamas1.yml -f llamas2.yml -f llamas3.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'echo hello world' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice-llamas1.yml-llamas2.yml-llamas3.yml : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice-llamas1.yml-llamas2.yml-llamas3.yml : exit 1"

run $PWD/hooks/command

Expand All @@ -583,7 +596,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --rm myservice /bin/sh -e -c 'pwd' : exit 2"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand Down Expand Up @@ -611,7 +624,9 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice1_build_1 --rm myservice1 /bin/sh -e -c 'pwd' : echo ran myservice1"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice1 : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice1 : echo myimage1" \
"meta-data exists docker-compose-plugin-built-image-tag-myservice2 : exit 0" \
"meta-data get docker-compose-plugin-built-image-tag-myservice2 : echo myimage2"

run $PWD/hooks/command
Expand Down Expand Up @@ -639,7 +654,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 run --name buildkite1111_myservice_build_1 --user=1000 myservice /bin/sh -e -c 'sh -c \'whoami\'' : echo ran myservice"

stub buildkite-agent \
"meta-data get docker-compose-plugin-built-image-tag-myservice : exit 1"
"meta-data exists docker-compose-plugin-built-image-tag-myservice : exit 1"

run $PWD/hooks/command

Expand All @@ -666,6 +681,7 @@ export BUILDKITE_JOB_ID=1111
"-f docker-compose.yml -p buildkite1111 -f docker-compose.buildkite-1-override.yml run --name buildkite1111_myservice_build_1 myservice /bin/sh -e -c 'pwd' : echo ran myservice without tty"

stub buildkite-agent \
"meta-data exists docker-compose-plugin-built-image-tag-myservice : echo myimage" \
"meta-data get docker-compose-plugin-built-image-tag-myservice : echo myimage"

run $PWD/hooks/command
Expand Down

0 comments on commit aab453f

Please sign in to comment.