Adding release-jetty.sh script (for those that want it)
This commit is contained in:
parent
99e1a16d07
commit
4d85e1f82c
|
@ -0,0 +1,183 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------"
|
||||
echo " Verify Environment"
|
||||
|
||||
requiredExecutable() {
|
||||
hash $1 2>/dev/null
|
||||
if [ $? != 0 ] ; then
|
||||
echo "ERROR: $1 not found. Install $1"
|
||||
exit -1
|
||||
fi
|
||||
}
|
||||
|
||||
requiredExecutable "git"
|
||||
requiredExecutable "xmllint"
|
||||
requiredExecutable "sed"
|
||||
requiredExecutable "gpg"
|
||||
requiredExecutable "egrep"
|
||||
requiredExecutable "mvn"
|
||||
|
||||
proceedyn() {
|
||||
while true; do
|
||||
read -p "$1 " yn
|
||||
case ${yn:-$2} in
|
||||
[Yy]* ) return 0;;
|
||||
[Nn]* ) return 1;;
|
||||
* ) echo "Please answer yes or no.";;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------"
|
||||
echo " Collect Information About Release"
|
||||
|
||||
function gitFindRemoteByUrl() {
|
||||
URL="$1"
|
||||
for GREMOTE in $(git remote); do
|
||||
git ls-remote --get-url $GREMOTE | grep "$URL" 2>&1 > /dev/null
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo $GREMOTE
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
GIT_REMOTE_URL="git.eclipse.org/gitroot/jetty/org.eclipse.jetty.project.git"
|
||||
GIT_REMOTE_ID=$(gitFindRemoteByUrl "$GIT_REMOTE_URL")
|
||||
GIT_BRANCH_ID=$(git symbolic-ref -q --short HEAD || git describe --tags --exact-match)
|
||||
|
||||
if [ -z "$GIT_REMOTE_ID" ] ; then
|
||||
echo "ERROR: Unable to determine git remote id for $GIT_REMOTE_URL"
|
||||
echo "Are you running this build from a properly cloned git local repository?"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Ensure that git user is in their gpg key list
|
||||
GIT_USER_EMAIL=`git config --get user.email`
|
||||
|
||||
#gpg -q --list-keys "$GIT_USER_EMAIL" 2>&1 > /dev/null
|
||||
#if [ $? != 0 ] ; then
|
||||
# echo "ERROR: git user.email of $GIT_USER_EMAIL is not present in your gpg --list-keys"
|
||||
# echo "Go ahead and make one $ gpg --gen-key"
|
||||
# exit -1
|
||||
#fi
|
||||
|
||||
VER_CURRENT=`sed -e "s/xmlns/ignore/" pom.xml | xmllint --xpath "/project/version/text()" -`
|
||||
read -e -p "Release Version ? " VER_RELEASE
|
||||
read -e -p "Next Dev Version ? " VER_NEXT
|
||||
# VER_RELEASE=9.3.5.v20151012
|
||||
# VER_NEXT=9.3.6-SNAPSHOT
|
||||
TAG_NAME="jetty-$VER_RELEASE"
|
||||
|
||||
# Ensure tag doesn't exist (yet)
|
||||
git rev-parse --quiet --verify "$TAG_NAME" 2>&1 > /dev/null
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo ""
|
||||
echo "ERROR: Git Tag $TAG_NAME already exists"
|
||||
echo ""
|
||||
git show -s "$TAG_NAME"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
ALT_DEPLOY_DIR=$HOME/.m2/alt-deploy
|
||||
if [ ! -d "$ALT_DEPLOY_DIR" ] ; then
|
||||
mkdir -p "$ALT_DEPLOY_DIR"
|
||||
fi
|
||||
|
||||
DEPLOY_OPTS="-Dmaven.test.failure.ignore=true"
|
||||
# DEPLOY_OPTS="-Dtest=None"
|
||||
# DEPLOY_OPTS="$DEPLOY_OPTS -DaltDeploymentRepository=intarget::default::file://$ALT_DEPLOY_DIR/"
|
||||
|
||||
echo ""
|
||||
echo "-----------------------------------------------"
|
||||
echo " Release Plan Review"
|
||||
echo ""
|
||||
echo "Git Remote ID : $GIT_REMOTE_ID"
|
||||
echo "Git Branch ID : $GIT_BRANCH_ID"
|
||||
echo "Git user.email : $GIT_USER_EMAIL"
|
||||
echo "Current Version : $VER_CURRENT"
|
||||
echo "Release Version : $VER_RELEASE"
|
||||
echo "Next Dev Version : $VER_NEXT"
|
||||
echo "Tag name : $TAG_NAME"
|
||||
echo "Maven Deploy Opts: $DEPLOY_OPTS"
|
||||
|
||||
reportMavenTestFailures() {
|
||||
failFiles=$(egrep -lr --include="*.txt" -E "^Tests .* FAILURE" .)
|
||||
oldIFS="$IFS"
|
||||
IFS='
|
||||
'
|
||||
IFS=${IFS:0:1}
|
||||
failarray=( $failFiles )
|
||||
IFS="$oldIFS"
|
||||
|
||||
for index in ${!failarray[@]}; do
|
||||
echo ${failarray[index]}
|
||||
cat ${failarray[index]}
|
||||
done
|
||||
|
||||
if [ ${#failarray[@]} -gt 0 ] ; then
|
||||
echo "There are ${#failarray[@]} Test Cases with failures"
|
||||
else
|
||||
echo "There are no testcases with failures"
|
||||
fi
|
||||
}
|
||||
|
||||
echo ""
|
||||
if proceedyn "Are you sure you want to release using above? (y/N)" n; then
|
||||
echo ""
|
||||
if proceedyn "Update VERSION.txt for $VER_RELEASE? (Y/n)" y; then
|
||||
mvn -N -Pupdate-version
|
||||
cp VERSION.txt VERSION.txt.backup
|
||||
cat VERSION.txt.backup | sed -e "s/$VER_CURRENT/$VER_RELEASE/" > VERSION.txt
|
||||
rm VERSION.txt.backup
|
||||
fi
|
||||
|
||||
# This is equivalent to 'mvn release:prepare'
|
||||
if proceedyn "Update project.versions for $VER_RELEASE? (Y/n)" y; then
|
||||
mvn org.codehaus.mojo:versions-maven-plugin:2.1:set \
|
||||
-DoldVersion="$VER_CURRENT" \
|
||||
-DnewVersion="$VER_RELEASE"
|
||||
fi
|
||||
if proceedyn "Commit $VER_RELEASE updates? (Y/n)" y; then
|
||||
git commit -a -m "Updating to version $VER_RELEASE"
|
||||
fi
|
||||
if proceedyn "Create Tag $TAG_NAME? (Y/n)" y; then
|
||||
echo "TODO: Sign tags with GIT_USER_EMAIL=$GIT_USER_EMAIL"
|
||||
git tag -m "Creating tag $TAG_NAME" $TAG_NAME
|
||||
fi
|
||||
|
||||
# This is equivalent to 'mvn release:perform'
|
||||
if proceedyn "Build/Deploy from tag $TAG_NAME? (Y/n)" y; then
|
||||
git checkout $TAG_NAME
|
||||
mvn clean package source:jar javadoc:jar gpg:sign deploy \
|
||||
-Peclipse-release $DEPLOY_OPTS
|
||||
reportMavenTestFailures
|
||||
git checkout $GIT_BRANCH_ID
|
||||
fi
|
||||
if proceedyn "Update working directory for $VER_NEXT? (Y/n)" y; then
|
||||
echo "Update VERSION.txt for $VER_NEXT"
|
||||
cp VERSION.txt VERSION.txt.backup
|
||||
echo "jetty-$VER_NEXT" > VERSION.txt
|
||||
echo "" >> VERSION.txt
|
||||
cat VERSION.txt.backup >> VERSION.txt
|
||||
echo "Update project.versions for $VER_NEXT"
|
||||
mvn org.codehaus.mojo:versions-maven-plugin:2.1:set \
|
||||
-DoldVersion="$VER_RELEASE" \
|
||||
-DnewVersion="$VER_NEXT"
|
||||
echo "Commit $VER_NEXT"
|
||||
if proceedyn "Commit updates in working directory for $VER_NEXT? (Y/n)" y; then
|
||||
git commit -a -m "Updating to version $VER_NEXT"
|
||||
fi
|
||||
fi
|
||||
if proceedyn "Push git commits to remote $GIT_REMOTE_ID? (Y/n)" y; then
|
||||
git push $GIT_REMOTE_ID $GIT_BRANCH_ID
|
||||
git push $GIT_REMOTE_ID --tags
|
||||
fi
|
||||
else
|
||||
echo "Not performing release"
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue