Add release scripts

This commit is contained in:
Peter Vlugter 2011-01-21 16:36:44 +13:00
parent 2bc84f5774
commit c39328ed18
4 changed files with 132 additions and 0 deletions

View file

@ -0,0 +1,76 @@
#!/bin/bash
# Find and replace across all source files.
#
# Example usage:
#
# sh project/scripts/find-replace.sh 1.1-SNAPSHOT 1.1-RC1
#
# This script will be called as part of the sbt release script.
FIND=$1
REPLACE=$2
if [ -z "$FIND" ]; then
echo "Usage: find-replace.sh FIND REPLACE"
exit 1
fi
echo
echo "Find and replace: $FIND --> $REPLACE"
# Exclude directories from search
excludedirs=".git dist deploy embedded-repo lib_managed project/boot project/scripts src_managed target"
echo "Excluding directories: $excludedirs"
excludeopts="\("
op="-path"
for dir in $excludedirs; do
excludeopts="${excludeopts} ${op} '*/${dir}/*'"
op="-or -path"
done
excludeopts="${excludeopts} \) -prune -o"
# Replace in files
search="find . -type f ${excludeopts} -print0 | xargs -0 grep -Il \"${FIND}\""
files=$(eval "$search")
simplediff="diff --old-line-format='- %l
' --new-line-format='+ %l
' --changed-group-format='%<%>' --unchanged-group-format=''"
for file in $files; do
echo
echo $file
# escape / for sed
sedfind=$(echo $FIND | sed 's/\//\\\//g')
sedreplace=$(echo $REPLACE | sed 's/\//\\\//g')
sed -i '.sed' "s/${sedfind}/${sedreplace}/g" $file
eval "$simplediff $file.sed $file"
rm -f $file.sed
done
echo
# Replace in file names
search="find . -type f ${excludeopts} -name \"*${FIND}*\" -print0"
files=$(eval "$search")
for file in $files; do
dir=$(dirname $file)
name=$(basename $file)
newname=$(echo $name | sed "s/${FIND}/${REPLACE}/g")
echo "$file --> $newname"
mv $file $dir/$newname
done
echo

View file

@ -0,0 +1,35 @@
#!/bin/bash
VERSION=$1
if [ -z "$VERSION" ]; then
echo "Usage: push-release.sh VERSION"
exit 1
fi
source ~/.akka-release
if [ -z "$AKKA_RELEASE_SERVER" ]; then
echo "Need AKKA_RELEASE_SERVER to be specified"
exit 1
fi
if [ -z "$AKKA_RELEASE_PATH" ]; then
echo "Need AKKA_RELEASE_PATH to be specified"
exit 1
fi
ref=$(git symbolic-ref HEAD 2> /dev/null)
branch=${ref#refs/heads/}
git push origin $branch
git push origin --tags
release="target/release/${VERSION}"
tmp="/tmp/akka-release-${VERSION}"
rsync -avz ${release}/ ${AKKA_RELEASE_SERVER}:${tmp}/
echo "Verify sudo on $AKKA_RELEASE_SERVER"
ssh -t ${AKKA_RELEASE_SERVER} sudo -v
ssh -t ${AKKA_RELEASE_SERVER} sudo rsync -rpt ${tmp}/ ${AKKA_RELEASE_PATH}
ssh -t ${AKKA_RELEASE_SERVER} rm -rf ${tmp}

10
project/scripts/release Normal file
View file

@ -0,0 +1,10 @@
clean
script find-replace.sh {{project.version}} {{release.arg1}}
script find-replace.sh //[[:space:]]*release:[[:space:]]*
reload
build-release
sh git commit -am 'Update version for release {{project.version}}'
sh git tag -m 'Version {{project.version}}' v{{project.version}}
sh git revert -n HEAD
sh git commit -am 'Restoring SNAPSHOT version'
reload

View file

@ -0,0 +1,11 @@
clean
clean-lib
script find-replace.sh {{project.version}} {{test-release.arg1}}
script find-replace.sh //[[:space:]]*release:[[:space:]]*
reload
update
test-compile
test
build-release
sh git reset --hard
reload