pungi-fedora/nightly-modular.sh
Adam Williamson e0fb303122 Bail after failed compose in nightly-modular.sh
When nightly-modular.sh was added, it wasn't set to check the
exit code from pungi-koji, as nightly.sh does. This was I guess
because it didn't do much after the compose finished at that
time, and the author thought it was OK for the few things it
*did* do to happen on both successful and failed composes.

However, it now does more stuff after compose completion, like
nightly.sh, including trying to generate changelog files and
send out a compose report email. But because the pungi-koji
exit code check is missing, it tries to do these things even
for failed composes. Changelog generation will fail when the
compose failed, and the email that gets sent out will have a
missing compose ID (because NEWCOMPOSE_ID and SHORTCOMPOSE_ID
can't be set properly and will be blank), and will be empty
because the changelog file that's supposed to be read in as the
content of the email isn't there. This is why we are getting
an empty mail with subject "Fedora Modular bikeshed compose
report:  changes" every time a compose fails.

So, let's put that check in just like nightly.sh does.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2017-12-04 14:08:15 -08:00

110 lines
4.2 KiB
Bash
Executable File

#!/bin/sh
#set -x
export LC_ALL=C
CONFIG="fedora-modular.conf"
TARGET_DIR="/mnt/koji/compose/"
#OLD_COMPOSES_DIR="--old-composes=/mnt/fedora_koji/compose/f23 --old-composes=$TARGET_DIR"
NIGHTLY="--nightly"
SKIP_PHASES="--skip-phase=productimg"
DEST=$(pwd)
DATE=$(date "+%Y%m%d")
DIST="bikeshed"
BRANCHED="Modular-Bikeshed"
BRANCH="rawhide"
GIT_BRANCH="master"
TMPDIR=`mktemp -d /tmp/$DIST.$DATE.XXXX`
TOMAIL="devel@lists.fedoraproject.org test@lists.fedoraproject.org"
FROM="Fedora Rawhide Report <rawhide@fedoraproject.org>"
RSYNCPREFIX="sudo -u ftpsync"
ATOMIC=$(mktemp -d /tmp/atomic.${DIST}.$DATE.XXXX)
ATOMICREPO="/mnt/koji/compose/atomic/$BRANCHED/"
ATOMICDEST="/mnt/koji/atomic/$BRANCHED/"
OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-Fedora-Modular-Bikeshed/COMPOSE_ID)
# assume a releng dir is a git checkout of the releng repo
# if it does not exist clone it
if [ -d releng ]; then
pushd releng
git pull --rebase
popd
else
git clone https://pagure.io/releng.git
fi
# Set up our fedmsg function, using the releng repo definition
FEDMSG_MODNAME="compose"
FEDMSG_CERTPREFIX="releng"
. ./releng/scripts/fedmsg-functions.sh
# Announce that we are starting, even though we don't know the compose_id yet..
fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s"}' "$BRANCHED" "$ARCH")
send_fedmsg "${fedmsg_json_start}" ${DIST} start
CMD="pungi-koji --notification-script=/usr/bin/pungi-fedmsg-notification --config=$CONFIG --old-composes=$TARGET_DIR $OLD_COMPOSES_DIR $NIGHTLY $SKIP_PHASES"
if [ -z "$COMPOSE_ID" ]; then
CMD="$CMD --target-dir=$TARGET_DIR"
else
CMD="$CMD --debug-mode --compose-dir=$TARGET_DIR/$COMPOSE_ID"
fi
time $CMD "$@"
if [ "$?" != "0" ]; then
exit 1
fi
NEWCOMPOSE_ID=$(cat $TARGET_DIR/latest-Fedora-Modular-Bikeshed/COMPOSE_ID)
SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-Modular.*-||g')
fedmsg_json_start=$(printf '{"log": "start", "branch": "%s", "arch": "%s", "compose_id": "%s"}' "$BRANCHED" "$ARCH" "$NEWCOMPOSE_ID")
fedmsg_json_done=$(printf '{"log": "done", "branch": "%s", "arch": "%s", "compose_id": "%s"}' "$BRANCHED" "$ARCH" "$NEWCOMPOSE_ID")
# Set this to use later for a few items include depcheck
DESTDIR=$TARGET_DIR/$NEWCOMPOSE_ID
compose-changelog -p $TARGET_DIR/$NEWCOMPOSE_ID/logs/ $TARGET_DIR/$OLDCOMPOSE_ID/ $TARGET_DIR/$NEWCOMPOSE_ID/
# Figure out a version for broken deps e-mail that goes to package maintainers.
# In Rawhide it's just rawhide, for branched versions we prepend F- to the number.
if [ "$BRANCHED" = "Modular-Bikeshed" ]; then
TREENAME="$BRANCHED"
else
TREENAME="F-$BRANCHED"
fi
/usr/share/mash/spam-o-matic --nomail --treename="$TREENAME" "$DESTDIR/compose/Server/" >"$DESTDIR/logs/depcheck"
# Tell interested persons that the rsync is starting (zomg!)
send_fedmsg "${fedmsg_json_start}" ${DIST} rsync.start
# Sync the content to /pub/fedora
if [ ! -d /pub/fedora/linux/modular/development/$DIST ]; then
mkdir /pub/fedora/linux/modular/development/$DIST
fi
$RSYNCPREFIX compose-partial-copy --arch=armhfp --arch=x86_64 --arch=aarch64 --arch=ppc64 --arch=ppc64le --arch=s390x --arch src \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/fedora/linux/modular/development/$DIST/ \
--variant Server \
--exclude=repodata
$RSYNCPREFIX compose-partial-copy --arch=armhfp --arch=x86_64 --arch=aarch64 --arch=ppc64 --arch=ppc64le --arch=s390x --arch src \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/fedora/linux/modular/development/$DIST/ \
--variant Server \
--delete-after
$RSYNCPREFIX rm /pub/fedora/linux/modular/development/$DIST/.composeinfo
$RSYNCPREFIX ./releng/scripts/build_composeinfo /pub/fedora/linux/modular/development/$DIST/ --name "$NEWCOMPOSE_ID"
# Tell interested persons that the rsync is done.
send_fedmsg "${fedmsg_json_done}" ${DIST} rsync.complete
# Tell everyone by fedmsg about the compose
send_fedmsg "${fedmsg_json_done}" ${DIST} complete
# Tell everyone by email about the compose
SUBJECT='Fedora Modular '$DIST' compose report: '$SHORTCOMPOSE_ID' changes'
for tomail in $TOMAIL ; do
cat $TARGET_DIR/$NEWCOMPOSE_ID/logs/*verbose | \
mutt -e "set from=\"$FROM\"" -e 'set envelope_from=yes' -s "$SUBJECT" $tomail
done
# Remove old composes older than 14 days
find $TARGET_DIR/Fedora-Modular-Bikeshed* -xdev -depth -maxdepth 2 -mtime +14 -exec rm -rf {} \;