<
Fork me on GitHub



See also the full release process and the release checklist.

Switch to correct directory, parameterize the release

Make sure you are in the correct directory (eg core, or example/archetype/zzz)

if you are releasing core:

cd core

export ISISTMP=/c/tmp              # or whatever
export ISISART=isis
export ISISDEV=1.9.0-SNAPSHOT
export ISISREL=1.8.0
export ISISRC=RC1

export ISISCOR="Y"
env | grep ISIS | sort

See here for details on recreating and releasing an archetype.

Get code

Pull down latest, create branch (eg prepare/isis-1.8.0):

git checkout master
git pull --ff-only
git checkout -b $ISISART-$ISISREL

Update parent pom

Check:

  • parent is org.apache:apache (non-SNAPSHOT version)

Check for SNAPSHOT dependencies

Search for any non-SNAPSHOT usages (including tck project, if any):

grep SNAPSHOT `/bin/find . -name pom.xml | grep -v target | sort`

or (more thoroughly):

vi `/bin/find . -name pom.xml | grep -v target | sort`

Sanity check

Make sure you are in the correct directory (eg core, or example/archetype/zzz)

Clean all local mvn artifacts and rebuild with -o flag:

cd core

rm -rf ~/.m2/repository/org/apache/isis
mvn clean install -o

Check versions

Actually, you may want to defer this and do after cutting the release (ie beginning of a new dev cycle)

Update plugin versions

mvn versions:display-plugin-updates > /tmp/foo
grep "\->" /tmp/foo | /bin/sort -u

Newer dependencies:

mvn versions:display-dependency-updates > /tmp/foo
grep "\->" /tmp/foo | /bin/sort -u

Update license information

Missing license headers in files:

mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=50 -o
for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done

Missing/spurious supplemental-models.xml

mvn license:download-licenses
if [ "$ISISCOR" == "Y" ]; then
    groovy ../scripts/checkmissinglicenses.groovy
else
    groovy ../../../scripts/checkmissinglicenses.groovy
fi

Commit changes

Commit any changes from the preceding steps:

git commit -am "ISIS-nnnn: updates to pom.xml etc for release"

Release

Make sure you are in the correct directory (eg core, or example/archetype/zzz)

Prepare:

first the dry run:

mvn release:prepare -P apache-release \
                    -DdryRun=true \
                    -DreleaseVersion=$ISISREL \
                    -DdevelopmentVersion=$ISISDEV \
                    -Dtag=$ISISART-$ISISREL-$ISISRC

then "for real":

mvn release:prepare -P apache-release -DskipTests=true -Dresume=false \
                    -DreleaseVersion=$ISISREL \
                    -DdevelopmentVersion=$ISISDEV \
                    -Dtag=$ISISART-$ISISREL-$ISISRC

Confirm:

rm -rf $ISISTMP/$ISISART-$ISISREL
mkdir $ISISTMP/$ISISART-$ISISREL

if [ "$ISISCOR" == "Y" ]; then
    ZIPDIR="$M2_REPO/repository/org/apache/isis/core/$ISISART/$ISISREL"
else
    ZIPDIR="$M2_REPO/repository/org/apache/isis/$ISISCPT/$ISISART/$ISISREL"
fi
echo "cp \"$ZIPDIR/$ISISART-$ISISREL-source-release.zip\" $ISISTMP/$ISISART-$ISISREL/."
cp "$ZIPDIR/$ISISART-$ISISREL-source-release.zip" $ISISTMP/$ISISART-$ISISREL/.

pushd $ISISTMP/$ISISART-$ISISREL
unzip $ISISART-$ISISREL-source-release.zip

cd $ISISART-$ISISREL
mvn clean install

cat DEPENDENCIES

popd

Perform:

mvn release:perform -P apache-release \
    -DworkingDirectory=$ISISTMP/$ISISART-$ISISREL/checkout

The workingDirectory property is to avoid 260 char path issue if building on Windows.

Nexus staging

Log onto repository.apache.org and close the staging repo.

Git branches/tags

Push branch:

git push -u origin $ISISART-$ISISREL

Then push tag:

git push origin refs/tags/$ISISART-$ISISREL-$ISISRC:refs/tags/$ISISART-$ISISREL-$ISISRC
git fetch

Copyright © 2010~2015 The Apache Software Foundation, licensed under the Apache License, v2.0.
Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation.

-->