X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fautorelease%2Fnotify-build-failure.sh;h=6eafef7b4383d1bf4687aec1876b03cc9d62ef4a;hb=d734a0763fca5fe35937860739a8a00f2124a746;hp=61651964dab65afe94f41a36d38225761d1a52e6;hpb=6c77d3c7aaeaa94683dfc8d2d2ce33eab826bb6b;p=releng%2Fbuilder.git diff --git a/jjb/autorelease/notify-build-failure.sh b/jjb/autorelease/notify-build-failure.sh index 61651964d..6eafef7b4 100644 --- a/jjb/autorelease/notify-build-failure.sh +++ b/jjb/autorelease/notify-build-failure.sh @@ -1,5 +1,5 @@ -#!/bin/bash -# @License EPL-1.0 +#!/bin/bash -l +# SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # @@ -11,6 +11,8 @@ # This script parses the console log to discover which project has caused a # build failure and notify the project as appropriate. +echo "---> notify-build-failure.sh" + NEWLINE=$'\n' RELEASE_EMAIL="release@lists.opendaylight.org" ARCHIVES_DIR="$JENKINS_HOSTNAME/$JOB_NAME/$BUILD_NUMBER" @@ -36,9 +38,11 @@ REACTOR_INFO=$(awk '/Reactor Summary:/ { flag=1 } # check for project format if [[ ${REACTOR_INFO} =~ .*::*.*::*. ]]; then # extract project and artifactId from full format - ODL=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $1); print $1 }') - PROJECT_=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2 }') - NAME=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+$/, "", $3); print $3 }') + # Ex: REACTOR_INFO="ODL::sfc::odl-sfc-pot-netconf-renderer 072 " is broken down into + # NAME="ODL", PROJECT_="sfc" and NAME="odl-sfc-pot-netconf-renderer" + ODL=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+[0-9]+[ \t]+$|[ \t]+$/, "", $1); print $1}') + PROJECT_=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+[0-9]+[ \t]+$|[ \t]+$/, "", $2); print $2}') + NAME=$(echo "${REACTOR_INFO}" | awk -F'::' '{ gsub(/^[ \t]+|[ \t]+[0-9]+[ \t]+$|[ \t]+$/, "", $3); print $3}') else # set project from partial format ODL="" @@ -56,7 +60,7 @@ ARTIFACT_ID=$(awk -F: '/\[ERROR\].*mvn -rf :/ { print $2}' $CONSOLE_LOG) # project.groupId is not set but IS inherited from project.parent.groupId # else # exclude project mailing list -if [ ! -z "$ARTIFACT_ID" ]; then +if [ -n "$ARTIFACT_ID" ]; then grouplist=() while IFS="" read -r p; do GROUP=$(xmlstarlet sel\ @@ -68,7 +72,8 @@ if [ ! -z "$ARTIFACT_ID" ]; then -v "/x:project/x:parent/x:groupId"\ --else -o ""\ "$p" 2>/dev/null) - if [ ! -z "${GROUP}" ]; then + if [ -n "${GROUP}" ]; then + # shellcheck disable=SC2207 grouplist+=($(echo "${GROUP}" | awk -F'.' '{ print $3 }')) fi done < <(find . -name "pom.xml") @@ -78,11 +83,11 @@ if [ ! -z "$ARTIFACT_ID" ]; then elif [ "${#grouplist[@]}" -gt 1 ]; then GROUPLIST="NOTE: The artifactId: $ARTIFACT_ID matches multiple groups: ${grouplist[*]}" else - echo "Failed to determine project.groupId using xpaths" + echo "Unable to determine project.groupId using xpaths" fi else - echo "Failed to determine ARTIFACT_ID" - exit 1 + echo "Unable to determine failed ARTIFACT_ID. Build likely successful or bug in this script." + exit 0 fi # Construct email subject & body @@ -117,7 +122,8 @@ ODL releng/autorelease team BUILD_STATUS=$(awk '/\[INFO\] Remote staging finished/{flag=1;next}/Total time:/{flag=0}flag' $CONSOLE_LOG \ | grep '\] BUILD' | awk '{print $3}') -if ([ ! -z "${NAME}" ] || [ ! -z "${ARTIFACT_ID}" ]) && [[ "${BUILD_STATUS}" != "SUCCESS" ]]; then +# shellcheck disable=SC2235 +if ([ -n "${NAME}" ] || [ -n "${ARTIFACT_ID}" ]) && [[ "${BUILD_STATUS}" != "SUCCESS" ]]; then # project search pattern should handle both scenarios # 1. Full format: ODL :: $PROJECT :: $ARTIFACT_ID # 2. Partial format: Building $ARTIFACT_ID