Skip the images build when no images changed

Implements #743
This commit is contained in:
Laurent Goderre 2018-05-17 14:27:45 -04:00
parent 538ac6bcf5
commit aad561a10d
4 changed files with 58 additions and 17 deletions

View File

@ -12,6 +12,9 @@ addons:
packages:
- docker-ce
before_install:
- source functions.sh && images_updated $TRAVIS_COMMIT_RANGE || tests_updated $TRAVIS_COMMIT_RANGE || travis_terminate
script: ./test-build.sh $NODE_VERSION $VARIANT
stages:

View File

@ -239,3 +239,54 @@ function sort_versions() {
echo "${sorted[@]}"
}
function commit_range() {
local commit_id_end=${1}
shift
local commit_id_start=${1}
if [ -z "${commit_id_start}" ]; then
if [ -z "${commit_id_end}" ]; then
echo "HEAD~1..HEAD"
elif [[ "${commit_id_end}" =~ .. ]]; then
echo "${commit_id_end}"
else
echo "${commit_id_end}~1..${commit_id_end}"
fi
else
echo "${commit_id_end}..${commit_id_start}"
fi
}
function images_updated() {
local commit_range
local versions
local images_changed
commit_range="$(commit_range "$@")"
IFS=' ' read -ra versions <<<"$(
IFS=','
get_versions
)"
images_changed=$(git diff --name-only "${commit_range}" "${versions[@]}")
if [ -z "${images_changed}" ]; then
return 1
fi
return 0
}
function tests_updated() {
local commit_range
local test_changed
commit_range="$(commit_range "$@")"
test_changed=$(git diff --name-only "${commit_range}" test*)
if [ -z "${test_changed}" ]; then
return 1
fi
return 0
}

View File

@ -31,22 +31,6 @@ UPSTREAM_SLUG="docker-library/${REPO_NAME}"
DOCKER_SLUG="nodejs/docker-node"
gitpath="../${REPO_NAME}"
function updated() {
local versions
local images_changed
IFS=' ' read -ra versions <<<"$(
IFS=','
get_versions
)"
images_changed=$(git diff --name-only "${COMMIT_ID}".."${COMMIT_ID}"~1 "${versions[@]}")
if [ -z "${images_changed}" ]; then
return 1
fi
return 0
}
function auth_header() {
echo "Authorization: token ${GITHUB_API_TOKEN}"
}
@ -104,7 +88,7 @@ function comment_payload() {
}"
}
if updated; then
if images_updated "${COMMIT_ID}"; then
permission_check

View File

@ -10,6 +10,9 @@ addons:
packages:
- docker-ce
before_install:
- source functions.sh && images_updated $TRAVIS_COMMIT_RANGE || tests_updated $TRAVIS_COMMIT_RANGE || travis_terminate
script: ./test-build.sh $NODE_VERSION $VARIANT
stages: