From ed43d568651fc6c68e7aebd95680486ee95bc6f4 Mon Sep 17 00:00:00 2001 From: MarkKoz Date: Fri, 21 Feb 2020 21:25:31 -0800 Subject: CI: create a function to check if an image can be pulled --- scripts/check_dockerfiles.sh | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) (limited to 'scripts/check_dockerfiles.sh') diff --git a/scripts/check_dockerfiles.sh b/scripts/check_dockerfiles.sh index a0294b1..f2b8512 100755 --- a/scripts/check_dockerfiles.sh +++ b/scripts/check_dockerfiles.sh @@ -32,6 +32,31 @@ get_build() { fi } +can_pull() { + local image="${1:?"can_pull: argument 1 'image' is unset"}" + + local master_commit + if master_commit="$( + get_build "refs/heads/master" \ + | jq -re '.value[0].sourceVersion' + )" \ + && git diff --quiet "${master_commit}" -- "${@:2}" + then + printf \ + '%s\n' \ + "Can pull ${image} image from Docker Hub; no changes since master." + + printf '%s\n' "##vso[task.setvariable variable=${image^^}_PULL]True" + else + printf \ + '%s\n' \ + "Cannot pull ${image} image from Docker Hub due to detected " \ + "changes; the ${image} image will be built." + + return 1 + fi +} + # Get the previous commit if [[ "${BUILD_REASON}" = "PullRequest" ]]; then if ! prev_commit="$( @@ -80,17 +105,5 @@ else "the venv image will be built." # Though base image hasn't changed, it's still needed to build the venv. - if master_commit="$( - get_build "refs/heads/master" \ - | jq -re '.value[0].sourceVersion' - )" \ - && git diff --quiet "${master_commit}" -- docker/base.Dockerfile - then - echo "Can pull base image from Docker Hub; no changes since master." - echo "##vso[task.setvariable variable=BASE_PULL]True" - else - echo \ - "Cannot pull base image from Docker Hub due to detected changes;" \ - "the base image will be built." - fi + can_pull base docker/base.Dockerfile fi -- cgit v1.2.3