diff --git a/services/matter_examples/buildfail.sh b/services/matter_examples/buildfail.sh new file mode 100755 index 000000000..332223d06 --- /dev/null +++ b/services/matter_examples/buildfail.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +if [ "${MATTER_PORTAGE_REPOSITORY}" = "gentoo" ]; then + BUGZILLA_URL="https://bugs.gentoo.org" + BUGZILLA_USER="lxnay@gentoo.org" + BUGZILLA_PASSWORD="" + #BUGZILLA_KEYWORDS="TINDERBOX" + BUGZILLA_PRODUCT="Gentoo Linux" + BUGZILLA_COMPONENT="Ebuilds" + BUGZILLA_PRIORITY="Low" + BUGZILLA_SEVERITY="QA" +elif [ "${MATTER_PORTAGE_REPOSITORY}" = "sabayon" ]; then + BUGZILLA_URL="https://bugs.sabayon.org" + BUGZILLA_USER="lxnay@sabayon.org" + BUGZILLA_PASSWORD="" + BUGZILLA_KEYWORDS="TINDERBOX" + BUGZILLA_PRODUCT="Entropy" + BUGZILLA_COMPONENT="Package" + BUGZILLA_PRIORITY="Low" + BUGZILLA_SEVERITY="normal" +else + # don't file a bug then + exit 0 +fi + +if [ ! -x "/usr/bin/bugz" ]; then + echo "ouch, pybugz not installed" + exit 1 +fi + +BUG_TEXT="Hello, +this is an automated report. So, please forgive me. +Package in subject has shown build failures on Sabayon Tinderbox. +Please find emerge --info =${MATTER_PORTAGE_FAILED_PACKAGE_NAME} below. +And hopefully the build log attached" + +BUILD_LOG=$(echo -n "${MATTER_PORTAGE_BUILD_LOG_DIR}/${MATTER_PORTAGE_FAILED_PACKAGE_NAME}"*.log) +if [ -z "${BUILD_LOG}" ]; then + echo "cannot find build log, wtf??" + exit 1 +fi +if [ ! -f "${BUILD_LOG}" ]; then + echo "cannot find build log file" + exit 1 +fi + +TINDERBOX_ID="$(date +%s)-${RANDOM}" +echo "Submitting bug with tinderbox_id: ${TINDERBOX_ID}" + +/usr/bin/bugz -u "${BUGZILLA_USER}" -p "${BUGZILLA_PASSWORD}" --forget -b "${BUGZILLA_URL}" post \ + -t "${MATTER_PORTAGE_FAILED_PACKAGE_NAME} build failure [tinderbox_id:${TINDERBOX_ID}]" -d "${BUG_TEXT}" \ + --product "${BUGZILLA_PRODUCT}" --component "${BUGZILLA_COMPONENT}" \ + --append-command "emerge --info =${MATTER_PORTAGE_FAILED_PACKAGE_NAME}" \ + --priority "${BUGZILLA_PRIORITY}" --severity "${BUGZILLA_SEVERITY}" \ + --keywords ${BUGZILLA_KEYWORDS} --batch --default-confirm Y +if [ "${?}" != "0" ]; then + echo "ouch, cannot report bug" + exit 1 +fi + +# workaround the fact that pybugz doesn't return the newly created bug id in a reliable way +# use tinderbox_id +tmp_file=$(mktemp) +/usr/bin/bugz -q -u "${BUGZILLA_USER}" -p "${BUGZILLA_PASSWORD}" --forget -b "${BUGZILLA_URL}" search "tinderbox_id:${TINDERBOX_ID}" | \ + cut -d" " -f 1 | sed -r "s/\x1b\[\?1034h//" > "${tmp_file}" +if [ "${?}" != "0" ]; then + echo "cannot execute search and retrieve submitted bug id" + rm "${tmp_file}" + exit 1 +fi +submitted_bug_id=$(cat "${tmp_file}" | cut -d" " -f 1) +rm "${tmp_file}" +echo "Realized bug id: ${submitted_bug_id}" +if [ -z "${submitted_bug_id}" ]; then + echo "cannot find submitted bug id, cannot attach build log" + exit 1 +fi + +echo "Submitted bug to ${BUGZILLA_URL}, bug id: ${submitted_bug_id}" + +# now attach the build log +/usr/bin/bugz -u "${BUGZILLA_USER}" -p "${BUGZILLA_PASSWORD}" --forget -b "${BUGZILLA_URL}" \ + attach "${submitted_bug_id}" "${BUILD_LOG}" -d "build log" +exit ${?} diff --git a/services/matter_examples/fail.particle b/services/matter_examples/fail.particle index fc9211fce..62b904f58 100644 --- a/services/matter_examples/fail.particle +++ b/services/matter_examples/fail.particle @@ -76,7 +76,7 @@ removed-useflags: yes # comes from # MATTER_PORTAGE_BUILD_LOG_DIR = directory containing all the build logs of # the failed package -# buildfail: /home/fabio/repos/entropy/services/matter_examples/buildfail.sh +buildfail: /home/fabio/repos/entropy/services/matter_examples/buildfail.sh # For more info regarding exported environment variables, please see: # matter --help