From aad561a10db6758f9e8eca006b13d69ec9467e3f Mon Sep 17 00:00:00 2001 From: Laurent Goderre Date: Thu, 17 May 2018 14:27:45 -0400 Subject: [PATCH 1/2] Skip the images build when no images changed Implements #743 --- .travis.yml | 3 +++ functions.sh | 51 ++++++++++++++++++++++++++++++++++++++++ generate-stackbrew-pr.sh | 18 +------------- travis.yml.template | 3 +++ 4 files changed, 58 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 85a49c849..cce4de8ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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: diff --git a/functions.sh b/functions.sh index 732eb8157..795126e2f 100755 --- a/functions.sh +++ b/functions.sh @@ -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 +} diff --git a/generate-stackbrew-pr.sh b/generate-stackbrew-pr.sh index 924842762..894ae8121 100755 --- a/generate-stackbrew-pr.sh +++ b/generate-stackbrew-pr.sh @@ -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 diff --git a/travis.yml.template b/travis.yml.template index 03716eded..292951a00 100644 --- a/travis.yml.template +++ b/travis.yml.template @@ -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: From bffff57751a276096a35d9a3041c4412986d6e12 Mon Sep 17 00:00:00 2001 From: Laurent Goderre Date: Sat, 26 May 2018 23:01:32 -0400 Subject: [PATCH 2/2] Speed up the skipping of the build --- .travis.yml | 7 ------- travis.yml.template | 7 ------- 2 files changed, 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index cce4de8ea..de06d4329 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,13 +5,6 @@ sudo: false language: generic -services: - - docker -addons: - apt: - packages: - - docker-ce - before_install: - source functions.sh && images_updated $TRAVIS_COMMIT_RANGE || tests_updated $TRAVIS_COMMIT_RANGE || travis_terminate diff --git a/travis.yml.template b/travis.yml.template index 292951a00..955e3ee06 100644 --- a/travis.yml.template +++ b/travis.yml.template @@ -3,13 +3,6 @@ sudo: false language: generic -services: - - docker -addons: - apt: - packages: - - docker-ce - before_install: - source functions.sh && images_updated $TRAVIS_COMMIT_RANGE || tests_updated $TRAVIS_COMMIT_RANGE || travis_terminate