|
Packit |
bbb0ff |
#!/bin/bash
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
UPLOAD_URL="ssh://fedorahosted.org/beakerlib"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
doOrDie(){
|
|
Packit |
bbb0ff |
local MESSAGE="$1"
|
|
Packit |
bbb0ff |
local COMMAND="$2"
|
|
Packit |
bbb0ff |
local STDOUT="$(mktemp)" # no-reboot
|
|
Packit |
bbb0ff |
local STDERR="$(mktemp)" # no-reboot
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
echo -n "$MESSAGE: "
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if eval "$COMMAND" >"$STDOUT" 2>"$STDERR"
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
echo "PASS"
|
|
Packit |
bbb0ff |
rm -f "$STDOUT" "$STDERR"
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
echo "FAIL"
|
|
Packit |
bbb0ff |
echo "=== STDOUT ==="
|
|
Packit |
bbb0ff |
cat "$STDOUT"
|
|
Packit |
bbb0ff |
echo "=== STDERR ==="
|
|
Packit |
bbb0ff |
cat "$STDERR"
|
|
Packit |
bbb0ff |
rm -f "$STDOUT" "$STDERR"
|
|
Packit |
bbb0ff |
exit 1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
return 0
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkOrDie(){
|
|
Packit |
bbb0ff |
if ! eval "$1"
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
echo -e "$2"
|
|
Packit |
bbb0ff |
exit 1
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
experimental(){
|
|
Packit |
bbb0ff |
local CHECKTAG="$1"
|
|
Packit |
bbb0ff |
local BRANCH="$2"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkOrDie "echo '$BRANCH' | grep -q -v master" "Experimental release should not be done from master branch"
|
|
Packit |
bbb0ff |
doOrDie "Creating an archive" "git archive --prefix=${CHECKTAG}/ -o ${CHECKTAG}.tar.gz HEAD"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkTag() {
|
|
Packit |
bbb0ff |
local CHECKTAG="$1"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
if git tag | grep -q -w $CHECKTAG
|
|
Packit |
bbb0ff |
then
|
|
Packit |
bbb0ff |
echo "Tag $CHECKTAG already exists: update VERSION accordingly"
|
|
Packit |
bbb0ff |
exit 1
|
|
Packit |
bbb0ff |
else
|
|
Packit |
bbb0ff |
echo "Tag $CHECKTAG does not exist: proceeding further"
|
|
Packit |
bbb0ff |
fi
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
testing(){
|
|
Packit |
bbb0ff |
local CHECKTAG="$1"
|
|
Packit |
bbb0ff |
local BRANCH="$2"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkOrDie "echo '$CHECKTAG' | grep -q '\.99'" "Version for testing should contain .99 substring\nGot: $CHECKTAG"
|
|
Packit |
bbb0ff |
checkOrDie "echo '$BRANCH' | grep -q master" "Testing release should be done from master branch\nGot: $BRANCH"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
doOrDie "Pulling" "git pull"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkTag "$CHECKTAG"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
doOrDie "Creating an archive" "git archive --prefix=$CHECKTAG/ -o $CHECKTAG.tar.gz HEAD"
|
|
Packit |
bbb0ff |
doOrDie "Tagging commit as $CHECKTAG" "git tag $CHECKTAG"
|
|
Packit |
bbb0ff |
doOrDie "Pushing tags out there" "git push --tags"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
upstream(){
|
|
Packit |
bbb0ff |
local CHECKTAG="$1"
|
|
Packit |
bbb0ff |
local BRANCH="$2"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkOrDie "echo '$CHECKTAG' | grep -q -v '\.99'" "Version for testing should not contain .99 substring\nGot: $CHECKTAG"
|
|
Packit |
bbb0ff |
checkOrDie "echo '$BRANCH' | grep -q master" "Testing release should be done from master branch\nGot: $BRANCH"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
doOrDie "Pulling" "git pull"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
checkTag "$CHECKTAG"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
doOrDie "Creating an archive" "git archive --prefix=$CHECKTAG/ -o $CHECKTAG.tar.gz HEAD"
|
|
Packit |
bbb0ff |
# TODO: update the main page with new version
|
|
Packit |
bbb0ff |
# TODO: create release notes and put it online
|
|
Packit |
bbb0ff |
doOrDie "Attempting to publish the tarball" "scp $CHECKTAG.tar.gz fedorahosted.org:beakerlib"
|
|
Packit |
bbb0ff |
doOrDie "Tagging commit as $CHECKTAG" "git tag $CHECKTAG"
|
|
Packit |
bbb0ff |
doOrDie "Pushing tags out there" "git push --tags"
|
|
Packit |
bbb0ff |
rm -f "$CHECKTAG.tar.gz"
|
|
Packit |
bbb0ff |
}
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
CHECKTAG="$1"
|
|
Packit |
bbb0ff |
RELEASE="$2"
|
|
Packit |
bbb0ff |
BRANCH="$( git rev-parse --abbrev-ref HEAD)"
|
|
Packit |
bbb0ff |
|
|
Packit |
bbb0ff |
case "$RELEASE" in
|
|
Packit |
bbb0ff |
"experimental")
|
|
Packit |
bbb0ff |
experimental "$CHECKTAG" "$BRANCH"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
"testing")
|
|
Packit |
bbb0ff |
testing "$CHECKTAG" "$BRANCH"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
*)
|
|
Packit |
bbb0ff |
upstream "$CHECKTAG" "$BRANCH"
|
|
Packit |
bbb0ff |
;;
|
|
Packit |
bbb0ff |
esac
|