|
|
@@ -2,17 +2,26 @@ |
|
|
|
|
|
|
|
use strict; |
|
|
|
|
|
|
|
# |
|
|
|
# NOTE: tested only with Jani Laakso's environment |
|
|
|
# |
|
|
|
|
|
|
|
# working directory to make releases |
|
|
|
my $WORKDIR = "/home/jani/crypt/tk"; |
|
|
|
|
|
|
|
# directory prefix where release package zip file is stored |
|
|
|
my $SVN_ROOT = "https://svn.itmill.com/svn/itmill-toolkit"; |
|
|
|
my $SVN_URL_BUILDS = $SVN_ROOT."/builds"; |
|
|
|
|
|
|
|
my $usage = |
|
|
|
"Usage: make-release.sh <branch> <version> <dir>\n". |
|
|
|
" <branch> is new major.minor version, e.g. 4.0\n". |
|
|
|
" <version> is new version, e.g. 4.0.1-rc3\n". |
|
|
|
" <dir> is dir to store release zip file, e.g. internal/4.0.1-rc/\n"; |
|
|
|
|
|
|
|
die ("This is not yet tested, do not use.\n"); |
|
|
|
" <target> is directory to store release zip file, e.g. internal/4.0.1-rc/\n"; |
|
|
|
|
|
|
|
my $BRANCH = shift(@ARGV) || die($usage); |
|
|
|
my $VERSION = shift(@ARGV) || die($usage); |
|
|
|
my $DIR = shift(@ARGV) || die($usage); |
|
|
|
my $TARGET = shift(@ARGV) || die($usage); |
|
|
|
|
|
|
|
my $t = ""; |
|
|
|
|
|
|
@@ -29,38 +38,83 @@ if ( |
|
|
|
"(0-999) and optional release candidate number {m}=(0-99).\n"); |
|
|
|
} |
|
|
|
if ( |
|
|
|
(!$DIR =~ /release\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}/) && |
|
|
|
(!$DIR =~ /internal\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}-rc[0-9]{1,2}/) |
|
|
|
(!$TARGET =~ /release\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}/) && |
|
|
|
(!$TARGET =~ /internal\/[4-9]{1}\.[0-9]{1,2}.[0-9]{1,3}-rc[0-9]{1,2}/) |
|
|
|
) { |
|
|
|
die ("<dir> must be e.g. internal/4.0.1-rc/ or release/4.0.\n"); |
|
|
|
} |
|
|
|
|
|
|
|
print "Make sure $WORKDIR directory\n"; |
|
|
|
print "BRANCH [$BRANCH]\nVERSION [$VERSION]\nDIR [$SVN_URL_BUILDS$TARGET]\n"; |
|
|
|
|
|
|
|
&proceed("Initializing repositories"); |
|
|
|
# go to directory where repository working copies (WC) are |
|
|
|
`cd ~/toolkit`; |
|
|
|
chdir($WORKDIR); |
|
|
|
# delete old repo |
|
|
|
&execute("rm -rf $BRANCH"); |
|
|
|
# checkout (if missing) build repository |
|
|
|
&execute("svn co $SVN_ROOT/builds"); |
|
|
|
# it's safest to replace 4.0 from trunk (but you could use also merging) |
|
|
|
`svn rm https://svn.itmill.com/svn/itmill-toolkit/branches/$BRANCH -m "Recreating $BRANCH branch from trunk. Removing old $BRANCH."`; |
|
|
|
`svn copy https://svn.itmill.com/svn/itmill-toolkit/trunk https://svn.itmill.com/svn/itmill-toolkit/branches/$BRANCH -m "Recreating $BRANCH branch from trunk. Copying new $BRANCH."`; |
|
|
|
&execute( |
|
|
|
"svn rm $SVN_ROOT/branches/$BRANCH ". |
|
|
|
"-m \"Recreating $BRANCH branch from trunk. Removing old $BRANCH.\"" |
|
|
|
); |
|
|
|
&execute( |
|
|
|
"svn copy $SVN_ROOT/trunk $SVN_ROOT/branches/$BRANCH ". |
|
|
|
"-m \"Recreating $BRANCH branch from trunk. Copying new $BRANCH.\"" |
|
|
|
); |
|
|
|
# checkout $BRANCH |
|
|
|
`svn co https://svn.itmill.com/svn/itmill-toolkit/branches/$BRANCH`; |
|
|
|
&execute("svn co $SVN_ROOT/branches/$BRANCH"); |
|
|
|
|
|
|
|
&proceed("Changing VERSION"); |
|
|
|
# go to $BRANCH directory |
|
|
|
chdir("$BRANCH"); |
|
|
|
chdir("$WORKDIR/$BRANCH"); |
|
|
|
# fix links as VERSION changes |
|
|
|
`sed s/cat build/VERSION | cut -f2 -d'='/$VERSION/ index.html >index.html`; |
|
|
|
&execute( |
|
|
|
"sed s/`cat build/VERSION | cut -f2 -d'='`/$VERSION/ ". |
|
|
|
"index.html >/tmp/index.html" |
|
|
|
); |
|
|
|
&execute("diff index.html /tmp/index.html"); |
|
|
|
&execute("cp /tmp/index.html index.html"); |
|
|
|
# increment VERSION |
|
|
|
`echo "version=$VERSION" >build/VERSION`; |
|
|
|
&execute("echo \"version=$VERSION\" >build/VERSION"); |
|
|
|
|
|
|
|
&proceed("Commit changes"); |
|
|
|
# commit changes |
|
|
|
`svn ci -m "Building <VERSION> release."`; |
|
|
|
&execute("svn ci -m \"Building $VERSION release.\""); |
|
|
|
|
|
|
|
&proceed("Executing ant"); |
|
|
|
# execute build script, takes 5-40 minutes depending on hw |
|
|
|
`ant`; |
|
|
|
chdir("$WORKDIR/$BRANCH/build"); |
|
|
|
&execute("ant"); |
|
|
|
|
|
|
|
&proceed("Copying branch 4.0 under tags branch"); |
|
|
|
# copy branch 4.0 into tags directory (some may interpret this as tagging) |
|
|
|
`svn copy https://svn.itmill.com/svn/itmill-toolkit/branches/4.0 https://svn.itmill.com/svn/itmill-toolkit/tags/<VERSION> -m "Copying $VERSION into tags."`; |
|
|
|
&execute( |
|
|
|
"svn copy $SVN_ROOT/branches/4.0 $SVN_ROOT/tags/$VERSION ". |
|
|
|
"-m \"Copying $VERSION release into tags.\"" |
|
|
|
); |
|
|
|
|
|
|
|
&proceed("Committing release package zip file to builds dir"); |
|
|
|
# commit release package zip to SVN |
|
|
|
`cp result/itmill-toolkit-$VERSION.zip ~/toolkit/builds/$DIR`; |
|
|
|
chdir("~/toolkit/builds/$DIR"); |
|
|
|
`svn add itmill-toolkit-$VERSION.zip`; |
|
|
|
`svn ci -m "Added $VERSION release."`; |
|
|
|
&execute("cp result/itmill-toolkit-$VERSION.zip $WORKDIR/builds/$TARGET"); |
|
|
|
chdir("$WORKDIR/builds/$TARGET"); |
|
|
|
&execute("svn add itmill-toolkit-$VERSION.zip"); |
|
|
|
&execute("svn ci -m \"Added $VERSION release package.\""); |
|
|
|
|
|
|
|
print "Done.\n"; |
|
|
|
exit; |
|
|
|
|
|
|
|
sub proceed() { |
|
|
|
my $msg = shift; |
|
|
|
$msg = "\n\n*** ".$msg.", press any key to continue ***"; |
|
|
|
print $msg; |
|
|
|
<STDIN>; |
|
|
|
} |
|
|
|
|
|
|
|
sub execute() { |
|
|
|
my $cmd = shift; |
|
|
|
print " $cmd\n"; |
|
|
|
my $result = `$cmd`; |
|
|
|
print $result."\n"; |
|
|
|
} |