diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile index feec019e5df158c7cf4860ad1915a55cec8474a8..0dceb1c8de665016198a1f79a02ed7f51a431094 100755 --- a/.ci/Jenkinsfile +++ b/.ci/Jenkinsfile @@ -123,7 +123,7 @@ pipeline { post { failure { script { - cache_failed = sh(script: "bash lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim() + cache_failed = sh(script: "bash bin/yashchiki_create_temporary_build_cache_after_failure.sh", returnStdout: true).trim() if (isTriggeredByGerrit()) { sh "bash bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\"" } diff --git a/.ci/Jenkinsfile_asic b/.ci/Jenkinsfile_asic index 84edfcb425980ac2070f3feba5ae1f17a3859d7e..9fd0e7eda932a51a7951c65c7af2b43b094db7bf 100755 --- a/.ci/Jenkinsfile_asic +++ b/.ci/Jenkinsfile_asic @@ -124,7 +124,7 @@ pipeline { post { failure { script { - cache_failed = sh(script: "lib/yashchiki/create_temporary_build_cache_after_failure.sh", returnStdout: true).trim() + cache_failed = sh(script: "bin/yashchiki_create_temporary_build_cache_after_failure.sh", returnStdout: true).trim() if (isTriggeredByGerrit()) { sh "bash bin/yashchiki_notify_gerrit.sh -v -1 -t Build -m \"Successfully built packages stored in cache. Resume by issuing:\nWITH_CACHE_NAME=${cache_failed}\n\nIn your next gerrit comment, NOT commit message!\"" } diff --git a/lib/yashchiki/create_temporary_build_cache_after_failure.sh b/bin/yashchiki_create_temporary_build_cache_after_failure.sh similarity index 69% rename from lib/yashchiki/create_temporary_build_cache_after_failure.sh rename to bin/yashchiki_create_temporary_build_cache_after_failure.sh index 376a181400c1e9c89135f1bb63c28f83d99aad42..c9c28799ca03e2e6ccef5d257b8811fe5873690b 100755 --- a/lib/yashchiki/create_temporary_build_cache_after_failure.sh +++ b/bin/yashchiki_create_temporary_build_cache_after_failure.sh @@ -13,13 +13,13 @@ if [ "${CONTAINER_BUILD_TYPE}" = "stable" ]; then exit 1 fi -SOURCE_DIR="$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")" -source "${SOURCE_DIR}/commons.sh" +ROOT_DIR="$(dirname "$(dirname "$(readlink -m "${BASH_SOURCE[0]}")")")" +source "${ROOT_DIR}/lib/yashchiki/get_change_name.sh" build_num=1 change_num="$(get_change_name)" -while [ -d "${PRESERVED_PACKAGES_OUTSIDE}/${change_num}_${build_num}" ]; do +while [ -d "${YASHCHIKI_CACHES_ROOT}/preserved_packages/${change_num}_${build_num}" ]; do (( build_num++ )) done # `build_num` is used to indicate if no preserved packages were found: After @@ -29,8 +29,8 @@ done # store in the failed cache. (( build_num-- )) -preserved_packages="${PRESERVED_PACKAGES_OUTSIDE}/${change_num}_${build_num}" -failed_build_cache="${BASE_BUILD_CACHE_FAILED_OUTSIDE}/${change_num}_${build_num}" +preserved_packages="${YASHCHIKI_CACHES_ROOT}/preserved_packages/${change_num}_${build_num}" +failed_build_cache="${YASHCHIKI_CACHES_ROOT}/build_caches/failed/${change_num}_${build_num}" # expects input to be \0-printed link_into_failed_buildcache() { @@ -41,7 +41,7 @@ link_into_failed_buildcache() { # ensure that we have preserved packages and that these packages have not # already been pushed to a failed build cache if (( build_num > 0 )) && \ - [ ! -d "${BASE_BUILD_CACHE_FAILED_OUTSIDE}/${change_num}_${build_num}" ]; then + [ ! -d "${YASHCHIKI_CACHES_ROOT}/build_caches/failed/${change_num}_${build_num}" ]; then mkdir -vp "${failed_build_cache}" >&2 @@ -50,10 +50,10 @@ if (( build_num > 0 )) && \ find "${preserved_packages}" -name "*.tar.gz" -print0 | link_into_failed_buildcache # link everything not present in preserved packages that is in build cache - find "${BUILD_CACHE_OUTSIDE}" -name "*.tar.gz" -print0 | link_into_failed_buildcache + find "${YASHCHIKI_CACHES_ROOT}/build_caches/${BUILD_CACHE_NAME}" -name "*.tar.gz" -print0 | link_into_failed_buildcache # echo created failed buildcache - echo "${failed_build_cache#${BASE_BUILD_CACHE_OUTSIDE}/}" + echo "${failed_build_cache#${YASHCHIKI_CACHES_ROOT}/build_caches/}" else echo "<no preserved packages found>" fi diff --git a/lib/yashchiki/get_change_name.sh b/lib/yashchiki/get_change_name.sh new file mode 100755 index 0000000000000000000000000000000000000000..ac8f64addda8f5079d09fe974ec84ac2a02c3f28 --- /dev/null +++ b/lib/yashchiki/get_change_name.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -euo pipefail +shopt -s inherit_errexit 2>/dev/null || true + +get_change_name() { + local change_num + local patch_level + + local gerrit_change_number + local gerrit_patchset_number + local gerrit_refspec + + gerrit_change_number="${GERRIT_CHANGE_NUMBER}" + gerrit_patchset_number="${GERRIT_PATCHSET_NUMBER}" + gerrit_refspec="${GERRIT_REFSPEC}" + + if [ -z "${gerrit_change_number:-}" ]; then + if [ -n "${gerrit_refspec:-}" ]; then + # extract gerrit change number from refspec + change_num="$(echo "${gerrit_refspec}" | cut -f 4 -d / )" + patch_level="$(echo "${gerrit_refspec}" | cut -f 5 -d / )" + fi + else + change_num="${gerrit_change_number}" + patch_level="${gerrit_patchset_number}" + fi + echo -n "c${change_num}p${patch_level}" +}