Blame upstream-release.sh

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