pungi-fedora/nightly.sh
Lubomír Sedlář 968f8fdf52 Wait for ostree to be signed before using it
Images should include signed bits, so we need to block the compose until
the commit is signed.

Related: https://pagure.io/pungi/issue/650
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
2017-09-21 07:52:33 +02:00

176 lines
7.2 KiB
Bash
Executable File

#!/bin/sh
export LC_ALL=C
CONFIG="fedora.conf"
TARGET_DIR="/mnt/koji/compose/rawhide"
#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="rawhide"
BRANCHED="rawhide"
BRANCH="rawhide"
COMPSFILE="comps-rawhide.xml"
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)
ATOMICHOSTREPO="/mnt/koji/compose/atomic/$BRANCHED/"
ATOMICWSREPO="/mnt/koji/compose/ostree/$BRANCHED/"
ATOMICHOSTDEST="/mnt/koji/atomic/$BRANCHED/"
OLDCOMPOSE_ID=$(cat $TARGET_DIR/latest-Fedora-Rawhide/COMPOSE_ID)
# uncomment and edit for resuming a failed compose
#COMPOSE_ID="Fedora-23-20150530.n.0"
# 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
pushd $TMPDIR
git clone https://pagure.io/fedora-comps.git && {
pushd fedora-comps
make "${COMPSFILE}"
cp "${COMPSFILE}" $DEST/
popd
}
popd
./releng/scripts/block_retired.py
./releng/scripts/block_retired.py --namespace=docker
./releng/scripts/block_retired.py --namespace=container
CMD="pungi-koji --notification-script=/usr/bin/pungi-fedmsg-notification --notification-script=pungi-wait-for-signed-ostree-handler --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-Rawhide/COMPOSE_ID)
SHORTCOMPOSE_ID=$(echo $NEWCOMPOSE_ID|sed -e 's|Fedora-.*-||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" = "rawhide" ]; then
TREENAME="$BRANCHED"
else
TREENAME="F-$BRANCHED"
fi
/usr/share/mash/spam-o-matic --treename="$TREENAME" "$DESTDIR/compose/Everything/" >"$DESTDIR/logs/depcheck"
[ -z "$ARCH" ] && {
./releng/scripts/critpath.py --url file://$DESTDIR/compose/Everything/ -o $DESTDIR/logs/critpath.txt rawhide &> $DESTDIR/logs/critpath.log
}
# prune atomic host and atomic workstation repos
ostree prune --repo=$ATOMICHOSTREPO --keep-younger-than="14 days ago" --refs-only
ostree prune --repo=$ATOMICWSREPO --keep-younger-than="14 days ago" --refs-only
# 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/development/$DIST ]; then
mkdir /pub/fedora/linux/development/$DIST
fi
$RSYNCPREFIX compose-partial-copy --arch=armhfp --arch=x86_64 --arch src \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/fedora/linux/development/$DIST/ \
--variant Everything --variant Atomic --variant CloudImages --variant Docker --variant Server --variant Spins --variant Workstation \
--link-dest=/pub/fedora/linux/development/$DIST/Everything --exclude=repodata
$RSYNCPREFIX compose-partial-copy --arch=armhfp --arch=x86_64 --arch src \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/fedora/linux/development/$DIST/ \
--variant Everything --variant Atomic --variant CloudImages --variant Docker --variant Server --variant Spins --variant Workstation \
--link-dest=/pub/fedora/linux/development/$DIST/Everything --delete-after
$RSYNCPREFIX rm /pub/fedora/linux/development/$DIST/.composeinfo
$RSYNCPREFIX ./releng/scripts/build_composeinfo /pub/fedora/linux/development/$DIST/ --name "$NEWCOMPOSE_ID"
# Sync the content to /pub/alt
if [ ! -d /pub/alt/development/$DIST ]; then
mkdir /pub/alt/development/$DIST
fi
$RSYNCPREFIX compose-partial-copy --arch=armhfp --arch=x86_64 \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/alt/development/$DIST/ \
--variant Cloud --variant Labs \
--link-dest=/pub/fedora/linux/development/$DIST/Everything/ --exclude=repodata
$RSYNCPREFIX compose-partial-copy --arch=armhfp --arch=x86_64 \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/alt/development/$DIST/ \
--variant Cloud --variant Labs \
--link-dest=/pub/fedora/linux/development/$DIST/Everything/ --delete-after
$RSYNCPREFIX rm /pub/alt/development/$DIST/.composeinfo
$RSYNCPREFIX ./releng/scripts/build_composeinfo /pub/alt/development/$DIST/ --name "$NEWCOMPOSE_ID"
# Sync the content to /pub/fedora-secondary
if [ ! -d /pub/fedora-secondary/development/$DIST ]; then
mkdir /pub/fedora-secondary/development/$DIST
fi
$RSYNCPREFIX compose-partial-copy --arch=aarch64 --arch=i386 --arch=ppc64 --arch=ppc64le --arch=s390x \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/fedora-secondary/development/$DIST/ \
--link-dest=/pub/fedora/linux/development/$DIST/Everything/ --exclude=repodata
$RSYNCPREFIX compose-partial-copy --arch=aarch64 --arch=i386 --arch=ppc64 --arch=ppc64le --arch=s390x \
"$TARGET_DIR/$NEWCOMPOSE_ID" /pub/fedora-secondary/development/$DIST/ \
--link-dest=/pub/fedora/linux/development/$DIST/Everything/ --delete-after
$RSYNCPREFIX rm /pub/fedora-secondary/development/$DIST/.composeinfo
$RSYNCPREFIX ./releng/scripts/build_composeinfo /pub/fedora-secondary/development/$DIST/ --name "$NEWCOMPOSE_ID"
$RSYNCPREFIX rsync -avhH --delete-after $ATOMICHOSTREPO $ATOMICHOSTDEST
# 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 '$DIST' compose report: '$SHORTCOMPOSE_ID' changes'
for tomail in $TOMAIL ; do
cat $TARGET_DIR/$NEWCOMPOSE_ID/logs/*verbose $DESTDIR/logs/depcheck | \
mutt -e "set from=\"$FROM\"" -e 'set envelope_from=yes' -s "$SUBJECT" $tomail
done
for koji in arm ppc s390
do
if [ "$koji" = "arm" ]; then
arches=aarch64
elif [ "$koji" = "ppc" ]; then
arches=ppc64,ppc64le
elif [ "$koji" = "s390" ]; then
arches=s390x
fi
./releng/scripts/srpm-excluded-arch.py -a $arches --path $DESTDIR/compose/Everything/source/tree/Packages/ >$DESTDIR/logs/excludearch-$koji.log
done
find $TARGET_DIR -xdev -depth -maxdepth 2 -mtime +14 -exec rm -rf {} \;