X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=shell%2Fcommon-variables.sh;h=deb105891fa06bbf0860d245ef1d7da49ac38def;hb=c3150dcea8069e284ec52bf487541576a62687ab;hp=7bbc36feaaff9a5499646b067597c8861f99dc5e;hpb=cc00605631e750be1698bd247442172c483a7e9b;p=releng%2Fglobal-jjb.git diff --git a/shell/common-variables.sh b/shell/common-variables.sh index 7bbc36fe..deb10589 100644 --- a/shell/common-variables.sh +++ b/shell/common-variables.sh @@ -24,6 +24,68 @@ echo "$MAVEN_OPTIONS" # Activates the lftools virtualenv lftools_activate() { virtualenv --quiet "/tmp/v/lftools" + set +u # Ignore unbound variables in activate # shellcheck source=/tmp/v/lftools/bin/activate disable=SC1091 source "/tmp/v/lftools/bin/activate" + set -u # Restore unbound variable checking +} + +# Check maven-metadata.xml for any unexpected timestamp mismatches +maven_metadata_validate() { + stage_dir="$1" + + if [ -z "$1" ]; then + echo "Usage: maven_metadata_validate STAGE_REPO_DIR" + exit 1 + fi + + error_detected=0 + mapfile -t files < <(find "$stage_dir" -name maven-metadata.xml | grep SNAPSHOT) + + for f in "${files[@]}"; do + timestamp=$(xmlstarlet sel \ + -t -v "/metadata/versioning/snapshot/timestamp" "$f") + + # Scan all snapshot versions but ignore javadoc and source jars + mapfile -t ext_timestamps < <(xmlstarlet sel \ + -t -m "/metadata/versioning/snapshotVersions/snapshotVersion" \ + -n \ + --if "classifier='javadoc'" \ + -o "" \ + --elif "classifier='sources'" \ + -o "" \ + --else \ + -o "extension:" -v extension \ + -o " value:" -v value \ + -o " updated:" -v updated \ + "$f") + + for t in "${ext_timestamps[@]}"; do + # Ignore blank timestamps caused by xmlstarlet ignores + if [[ -z "$t" ]]; then + continue + fi + + timestamp_error=0 + if [[ $t != *"$timestamp"* ]]; then + echo "Metadata $f 'value:$timestamp' mismatch vs '$t'" + timestamp_error=1 + fi + # Updated is timestamp without the dot character + if [[ $t != *"${timestamp//\./}"* ]]; then + echo "Metadata $f 'updated:${timestamp//\./}' mismatch vs '$t'" + timestamp_error=1 + fi + + if [[ $timestamp_error != 0 ]]; then + error_detected=1 + cat "$f" + fi + done + done + + if [ $error_detected -ne 0 ]; then + echo "ERROR: Mismatches in maven-metadata discovered. Quitting..." + exit 1 + fi }