| #!/bin/bash | 
 | #  Licensed to the Apache Software Foundation (ASF) under one or more | 
 | #  contributor license agreements.  See the NOTICE file distributed with | 
 | #  this work for additional information regarding copyright ownership. | 
 | #  The ASF licenses this file to You under the Apache License, Version 2.0 | 
 | #  (the "License"); you may not use this file except in compliance with | 
 | #  the License.  You may obtain a copy of the License at | 
 | # | 
 | #      http://www.apache.org/licenses/LICENSE-2.0 | 
 | # | 
 | #  Unless required by applicable law or agreed to in writing, software | 
 | #  distributed under the License is distributed on an "AS IS" BASIS, | 
 | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | #  See the License for the specific language governing permissions and | 
 | #  limitations under the License. | 
 |  | 
 | # set -e | 
 | # set -x | 
 |  | 
 | function fail { | 
 |     >&2 echo "\033[31m | 
 | FATAL ERROR | 
 | ----------- | 
 | $1 | 
 | \033[0m" | 
 |     exit 1 | 
 | } | 
 |  | 
 | function getJavaVersionFromPom { | 
 |     cat << EOF | xmllint --noent --shell pom.xml | grep content | cut -f2 -d= | 
 | setns pom=http://maven.apache.org/POM/4.0.0 | 
 | xpath /pom:project/pom:properties/pom:maven.compiler.source/text() | 
 | EOF | 
 | } | 
 |  | 
 | function getProjectVersionFromPom { | 
 |     cat << EOF | xmllint --noent --shell pom.xml | grep content | cut -f2 -d= | 
 | setns pom=http://maven.apache.org/POM/4.0.0 | 
 | xpath /pom:project/pom:version/text() | 
 | EOF | 
 | } | 
 |  | 
 | function getJdkToolchain { | 
 |     xmllint ~/.m2/toolchains.xml --xpath "/toolchains/toolchain[provides/version/text() = '$JAVA_VERSION']/configuration/jdkHome/text()" | 
 | } | 
 |  | 
 | function generate_promotion_script { | 
 |     echo "Generating release promotion script 'promote-$version.sh'" | 
 | read -d '' script <<- EOF | 
 | #!/bin/bash | 
 | echo "Promoting release $version | 
 |  | 
 | Actions about to be performed: | 
 | ------------------------------ | 
 |  | 
 | \$(cat \$0 | tail -n +14) | 
 |  | 
 | ------------------------------------------" | 
 |  | 
 | read -p "Press enter to continue or CTRL-C to abort" | 
 |  | 
 | # push the release tag to ASF git repo | 
 |  | 
 | git push origin $tag | 
 |  | 
 | # promote the source distribution by moving it from the staging area to the release area | 
 |  | 
 | svn mv https://dist.apache.org/repos/dist/dev/wicket/$version https://dist.apache.org/repos/dist/release/wicket -m "Upload release to the mirrors" | 
 |  | 
 | mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-release -DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://repository.apache.org -DserverId=apache.releases.https -Ddescription="Release vote has passed" | 
 |  | 
 | # Renumber the next development iteration $next_version: | 
 |  | 
 | git checkout $GIT_BRANCH | 
 | mvn release:update-versions --batch-mode | 
 | mvn versions:set versions:commit -DnewVersion=$next_version | 
 | git add --all | 
 |  | 
 | echo " | 
 | Check the new versions and commit and push them to origin: | 
 |  | 
 |   git commit -m \"Start next development version\" | 
 |   git push | 
 |  | 
 | Remove the previous version of Wicket using this command: | 
 |  | 
 |   svn rm https://dist.apache.org/repos/dist/release/wicket/$previous_version -m \\\"Remove previous version from mirrors\\\" | 
 |  | 
 | "   | 
 | EOF | 
 |  | 
 | echo "$script" > promote-$version.sh | 
 |     chmod +x promote-$version.sh | 
 |     git add promote-$version.sh | 
 | } | 
 |  | 
 | function generate_rollback_script { | 
 | 	echo "Generating release rollback script 'revert-$version.sh'" | 
 | read -d '' script <<- EOF | 
 | #!/bin/bash | 
 | echo -n "Reverting release $version | 
 |  | 
 | Actions about to be performed: | 
 | ------------------------------ | 
 |  | 
 | \$(cat \$0 | tail -n +14) | 
 |  | 
 | ------------------------------------------ | 
 | Press enter to continue or CTRL-C to abort" | 
 |  | 
 | read | 
 |  | 
 | # clean up local repository | 
 | git checkout $GIT_BRANCH | 
 | git branch -D $branch | 
 | git tag -d $tag | 
 |  | 
 | # clean up staging repository | 
 | git push staging --delete refs/heads/$branch | 
 | git push staging --delete $tag | 
 |  | 
 | # clean up staging dist area | 
 | svn rm https://dist.apache.org/repos/dist/dev/wicket/$version -m "Release vote has failed" | 
 |  | 
 | # clean up staging maven repository | 
 | mvn org.sonatype.plugins:nexus-staging-maven-plugin:LATEST:rc-drop -DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://repository.apache.org -DserverId=apache.releases.https -Ddescription="Release vote has failed" | 
 |  | 
 | # clean up remaining release files | 
 | find . -name "*.releaseBackup" -exec rm {} \\; | 
 | [ -f release.properties ] && rm release.properties | 
 |  | 
 | EOF | 
 | echo "$script" > revert-$version.sh | 
 |  | 
 | 	chmod +x revert-$version.sh | 
 | 	git add revert-$version.sh | 
 | } | 
 |  | 
 | function generate_signatures_from_release { | 
 |  | 
 |     echo "======================================================================== | 
 |  | 
 |     CHANGELOG for $version: | 
 |     " >> /tmp/release-$version-sigs.txt | 
 |  | 
 |     if [ -f "/tmp/release-notes-$version.txt" ] ; then | 
 |         tail -n +4 /tmp/release-notes-$version.txt >> /tmp/release-$version-sigs.txt | 
 |     else | 
 |         awk "/Release Notes - Wicket - Version $version/{flag=1;next} /==================/{flag=0} flag { print }" CHANGELOG-$major_version.x >> /tmp/release-$version-sigs.txt | 
 |     fi | 
 | } | 
 |  | 
 | function generate_release_vote_email { | 
 |  | 
 |     echo "Generating Vote email" | 
 |  | 
 |     echo " | 
 | This is a vote to release Apache Wicket $version | 
 |  | 
 | Please download the source distributions found in our staging area | 
 | linked below. | 
 |  | 
 | I have included the signatures for both the source archives. This vote | 
 | lasts for 72 hours minimum. | 
 |  | 
 | [ ] Yes, release Apache Wicket $version | 
 | [ ] No, don't release Apache Wicket $version, because ... | 
 |  | 
 | Distributions, changelog, keys and signatures can be found at: | 
 |  | 
 |     https://dist.apache.org/repos/dist/dev/wicket/$version | 
 |  | 
 | Staging repository: | 
 |  | 
 |     https://repository.apache.org/content/repositories/$stagingrepoid/ | 
 |  | 
 | The binaries are available in the above link, as are a staging | 
 | repository for Maven. Typically the vote is on the source, but should | 
 | you find a problem with one of the binaries, please let me know, I can | 
 | re-roll them some way or the other. | 
 |  | 
 | Staging git repository data: | 
 |  | 
 |     Repository:  $(git config --get remote.staging.url) | 
 |     Branch:      $branch | 
 |     Release tag: $tag | 
 |  | 
 | " | tail -n+2 > release-vote.txt | 
 |  | 
 |     cat /tmp/release-$version-sigs.txt >> release-vote.txt | 
 | 	git add release-vote.txt | 
 | } | 
 |  | 
 | function generate_announce_email { | 
 |     echo " | 
 | The Apache Wicket PMC is proud to announce Apache Wicket $version! | 
 |  | 
 | Apache Wicket is an open source Java component oriented web application | 
 | framework that powers thousands of web applications and web sites for | 
 | governments, stores, universities, cities, banks, email providers, and | 
 | more. You can find more about Apache Wicket at https://wicket.apache.org | 
 |  | 
 | This release marks another minor release of Wicket $major_version. We | 
 | use semantic versioning for the development of Wicket, and as such no | 
 | API breaks are present in this release compared to $major_version.0.0. | 
 |  | 
 | <OPTIONAL> New and noteworthy | 
 | <OPTIONAL> ------------------ | 
 | <OPTIONAL> | 
 | Using this release | 
 | ------------------ | 
 |  | 
 | With Apache Maven update your dependency to (and don't forget to | 
 | update any other dependencies on Wicket projects to the same version): | 
 |  | 
 | <dependency> | 
 |     <groupId>org.apache.wicket</groupId> | 
 |     <artifactId>wicket-core</artifactId> | 
 |     <version>$version</version> | 
 | </dependency> | 
 |  | 
 | Or download and build the distribution yourself, or use our | 
 | convenience binary package you can find here: | 
 |  | 
 |  * Download: http://wicket.apache.org/start/wicket-$major_version.x.html#manually | 
 |  | 
 | Upgrading from earlier versions | 
 | ------------------------------- | 
 |  | 
 | If you upgrade from $major_version.y.z this release is a drop in replacement. If | 
 | you come from a version prior to $major_version.0.0, please read our Wicket $major_version | 
 | migration guide found at | 
 |  | 
 |  * http://s.apache.org/wicket${major_version}migrate | 
 |  | 
 | Have fun! | 
 |  | 
 | — The Wicket team | 
 |  | 
 | " | tail -n+2 > release-announce.txt | 
 |  | 
 |     cat /tmp/release-$version-sigs.txt >> release-announce.txt | 
 | 	git add release-announce.txt | 
 | } | 
 |  | 
 | function generate_announce_md { | 
 |  | 
 | echo $'---\nlayout: post\ntitle: Apache Wicket' $version $'released\n---' > wicket-$version-released.md | 
 | sed -e "s/$optionOpenTag/\{\% highlight xml\%\}\n$optionOpenTag/g" release-announce.txt | | 
 | sed -e "s/$optionCloseTag/$optionCloseTag\n\{\% endhighlight\%\}/g" | | 
 | sed -e s/'    \*'/' \*'/g | | 
 | sed -e "s/    CHANGELOG for $version/### This Release\n\n#### CHANGELOG for $version/g" | | 
 | sed -e s/'\*\*'/'#####'/g | | 
 | sed -e "s/    $beginPgp/<div class='highlight'><pre>\n$beginPgp/g" | | 
 | sed -e "s/$endPgp/$endPgp\n<\/pre><\/div>\n/g" | | 
 | sed -e "s/Source: http:\/\/www.apache.org\/dyn\/closer.cgi\/wicket\/$version/Source: [$version source download]\(http:\/\/www.apache.org\/dyn\/closer.cgi\/wicket\/$version\)/g" | | 
 | sed -e "s/Binary: http:\/\/www.apache.org\/dyn\/closer.cgi\/wicket\/$version\/binaries/Binary: [$version binary download]\(http:\/\/www.apache.org\/dyn\/closer.cgi\/wicket\/$version\/binaries\)/g" | | 
 | sed -e "s/Upgrading from earlier versions/<!--more-->\n\nUpgrading from earlier versions/g" >> wicket-$version-released.md | 
 |  | 
 | git add wicket-$version-released.md | 
 |  | 
 | } | 
 |  | 
 | # the branch on which the code base lives for this version (master is | 
 | # always current development version) | 
 | GIT_BRANCH=master | 
 |  | 
 | JAVA_VERSION=$(getJavaVersionFromPom) | 
 |  | 
 | echo " | 
 | Apache Wicket Release script | 
 | ---------------------------- | 
 | Building a release for Apache Wicket. | 
 |  | 
 | This script assumes you are running on OS X, it hasn't been tested on any other | 
 | operating systems, and you can bet it won't work on Windows... | 
 |  | 
 | REQUIREMENTS: | 
 |  | 
 |  - A Java version $JAVA_VERSION configured through the Maven toolchain | 
 |  - Maven 3.3.0 (older releases are b0rked, just don't bother) | 
 |  - gpg, gpg-agent and pinentry for signing | 
 | " | 
 |  | 
 | if [ ! $( git config --get remote.staging.url ) ] ; then | 
 |     fail " | 
 | No staging remote git repository found. The staging repository is used to temporarily | 
 | publish the build artifacts during the voting process. Since no staging repository is | 
 | available at Apache, it is best to use a git mirror on your personal github account. | 
 |  | 
 | First fork the github Apache Wicket mirror (https://github.com/apache/wicket) and then | 
 | add the remote staging repository with the following command: | 
 |  | 
 |     $ git remote add staging git@github.com:<your github username>/wicket.git | 
 |     $ git fetch staging | 
 |     $ git push staging | 
 |  | 
 | This will bring the staging area in sync with the origin and the release script can | 
 | push the build branch and the tag to the staging area. | 
 | " | 
 | fi | 
 |  | 
 | if [ ! -f ~/.m2/toolchains.xml ] ; then | 
 |     fail " | 
 | Maven will load the Java $JAVA_VERSION environment from the toolchain specified in | 
 | ~/.m2/toolchains.xml | 
 |  | 
 | You don't have a toolchains.xml file in your .m2 folder. Please specify your | 
 | JDK's in the toolchains.xml file. | 
 | " | 
 | fi | 
 |  | 
 | grep -q "<version>$JAVA_VERSION</version>" ~/.m2/toolchains.xml | 
 |  | 
 | if [ $? -ne 0 ] ; then | 
 |     fail " | 
 | Your ~/.m2/toolchains.xml file doesn't provide a Java $JAVA_VERSION toolchain. | 
 | " | 
 | fi | 
 |  | 
 | echo "Java version for running Maven is: $(java -version 2>&1 | tail -n 2 | head -n 1) | 
 | Java used to compile (from toolchain) is: $(getJdkToolchain) | 
 | " | 
 |  | 
 | agentcount=`ps aux|grep gpg-agent|wc -l` | 
 |  | 
 | current_version=$(getProjectVersionFromPom) | 
 | major_version=$(expr $current_version : '\(.*\)\..*\..*\-.*') | 
 | minor_version=$(expr $current_version : '.*\.\(.*\)\..*\-.*') | 
 | bugfix_version=$(expr $current_version : '.*\..*\.\(.*\)-.*') | 
 | version="$major_version.$minor_version.0" | 
 |  | 
 | optionOpenTag='<dependency>' | 
 | optionCloseTag='<\/dependency>' | 
 | beginPgp='-----BEGIN PGP SIGNATURE-----' | 
 | endPgp='-----END PGP SIGNATURE-----' | 
 |  | 
 | default_version="$version" | 
 |  | 
 | version= | 
 |  | 
 | while [[ ! $version =~ ^[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?$ ]] | 
 | do | 
 |     read -p "Version to release (default is $default_version): " -e t1 | 
 |     if [ -n "$t1" ] | 
 |     then | 
 |       version="$t1" | 
 |     else | 
 |       version="$default_version" | 
 |     fi | 
 | done | 
 |  | 
 | # recalculate the version coordinates for the current release | 
 | major_version=$(expr $version : '\(.*\)\..*\..*') | 
 | minor_version=$(expr $version : '.*\.\(.*\)\..*') | 
 | bugfix_version=$(expr $version : '.*\..*\.\(.*\)') | 
 |  | 
 | if [[ $version =~ .+-M[0-9]+ ]] | 
 | then | 
 |     milestone_version=$(expr $version : '.*\..*-M\(.*\)') | 
 | fi | 
 |  | 
 | if [ ! -z "$milestone_version" ] ; then | 
 |     next_version="$major_version.0.0-M$(expr $milestone_version + 1)-SNAPSHOT" | 
 |     previous_version="$major_version.0.0-M$milestone_version-SNAPSHOT" | 
 | else | 
 |     next_version="$major_version.$(expr $minor_version + 1).0-SNAPSHOT" | 
 |     previous_minor_version=$(expr $minor_version - 1) | 
 |     if [ $previous_minor_version -lt 0 ] ; then | 
 |         previous_version="$major_version.0.0-SNAPSHOT" | 
 |     else | 
 |         previous_version="$major_version.$(expr $minor_version - 1).0" | 
 |     fi | 
 | fi | 
 |  | 
 | # work around for versions upgrade (TODO maybe no longer necessary?) | 
 | mvn_version_to_replace="$major_version.$minor_version.1-SNAPSHOT" | 
 | mvn_version_to_replace2="$major_version.$minor_version.0-SNAPSHOT" | 
 |  | 
 | # Check if the changelog has the issues this release | 
 |  | 
 | grep -q "$version\$" CHANGELOG-$major_version.x | 
 | if [ $? -ne 0 ] ; then | 
 |     fail "You have forgotten to add the closed tickets for Wicket $version to the CHANGELOG-$major_version.x file | 
 |  | 
 | Use build-changelog.sh to add the release notes to the changelog. | 
 | " | 
 | fi | 
 |  | 
 | git status --porcelain CHANGELOG-$major_version.x | grep -q "M" | 
 | if [ $? -eq 0 ] ; then | 
 |     fail "You have changes in your workspace that have not been committed. | 
 |  | 
 | $(git status) | 
 | " | 
 | fi | 
 |  | 
 | echo "Cleaning up any release artifacts that might linger" | 
 | mvn -q release:clean | 
 |  | 
 | log=$(pwd)/release.out | 
 |  | 
 | if [ -f $log ] ; then | 
 |     rm $log | 
 | fi | 
 |  | 
 | branch="build/wicket-$version" | 
 | tag="rel/wicket-$version" | 
 |  | 
 | echo "# Release configuration for Wicket-$version | 
 | scm.tag=${tag} | 
 | " > release.properties | 
 |  | 
 | ./build-versions.py $version $next_version >> release.properties | 
 |  | 
 | echo "Contents of the release properties generated for Maven: | 
 | ------------------------------------------------------------------------------- | 
 | $(cat ./release.properties) | 
 | ------------------------------------------------------------------------------- | 
 |  | 
 | Writing detailed log to $log | 
 |  | 
 | This script will release version: Apache Wicket $version and continue | 
 | development with $next_version | 
 |  | 
 | Press enter to continue or CTRL-C to abort \c" | 
 | read | 
 |  | 
 | echo "Ensuring we are starting from wicket-$major_version.x" | 
 | # otherwise we can't remove a previous release branch that failed | 
 | git checkout $GIT_BRANCH | 
 |  | 
 | echo "Removing previous release tag $tag (if exists)" | 
 | oldtag=`git tag -l |grep -e "$tag"|wc -l` >> release.out | 
 | [ "$oldtag" -ne 0 ] && git tag -d $tag >> release.out | 
 |  | 
 | echo "Removing previous build branch $branch (if exists)" | 
 | oldbranch=`git branch |grep -e "$branch"|wc -l` >> release.out | 
 | [ "$oldbranch" -ne 0 ] && git branch -D $branch >> release.out | 
 |  | 
 | echo "Removing previous staging branch (if exists)" | 
 | git push staging --delete refs/heads/$branch >> release.out | 
 | git push staging --delete $tag >> release.out | 
 |  | 
 |  | 
 | echo "Creating release branch" | 
 | git checkout -b $branch >> release.out | 
 |  | 
 | # Clear the current NOTICE.txt file | 
 | echo "Creating notice file." | 
 |  | 
 | NOTICE=NOTICE | 
 |  | 
 | echo "Apache Wicket | 
 | Copyright 2006-$(date +%Y) The Apache Software Foundation | 
 |  | 
 | This product includes software developed at | 
 | The Apache Software Foundation (http://www.apache.org/). | 
 |  | 
 | This is an aggregated NOTICE file for the Apache Wicket projects included | 
 | in this distribution. | 
 |  | 
 | NB: DO NOT ADD LICENSES/NOTICES/ATTRIBUTIONS TO THIS FILE, BUT IN THE | 
 |     NOTICE FILE OF THE CORRESPONDING PROJECT. THE RELEASE PROCEDURE WILL | 
 |     AUTOMATICALLY INCLUDE THE NOTICE IN THIS FILE. | 
 | " > $NOTICE | 
 |  | 
 | # next concatenate all NOTICE files from sub projects to the root file | 
 | for i in `find . -name "NOTICE" -not -regex ".*/target/.*" -not -regex "./NOTICE"` | 
 | do | 
 |     echo "---------------------------------------------------------------------------" >> $NOTICE | 
 |     echo "src/"$i | sed -e "s/\/src.*//g" >> $NOTICE | 
 |     echo "---------------------------------------------------------------------------" >> $NOTICE | 
 |     cat $i >> $NOTICE | 
 |     echo >> $NOTICE | 
 | done | 
 |  | 
 | echo "Committing changes" | 
 | git commit -am "Changes to notice files" | 
 |  | 
 | # clean all projects | 
 | echo "Clean all projects" | 
 | mvn -q clean -Pall | 
 |  | 
 | # package and assemble the release | 
 | echo "Prepare the release" | 
 | mvn --batch-mode release:prepare -X -l $log -DpreparationGoals="clean" -Dtag=$tag -Papache-release,release | 
 | if [ $? -ne 0 ] ; then | 
 |     fail "ERROR: mvn release:prepare was not successful" | 
 | fi | 
 |  | 
 | echo "Performing the release using Maven" | 
 | mvn -Dgpg.passphrase="$passphrase" -ff -l $log release:perform -DlocalCheckout=true -Dtag=$tag -Papache-release,release | 
 | if [ $? -ne 0 ] ; then | 
 |     fail "ERROR: mvn release:perform was not successful" | 
 | fi | 
 |  | 
 | # Determine the staging repository and close it after deploying the release to the staging area | 
 | stagingrepoid=$(mvn org.sonatype.plugins:nexus-staging-maven-plugin:LATEST:rc-list -DnexusUrl=https://repository.apache.org -DserverId=apache.releases.https | grep -v "CLOSED" | grep -Eo "(orgapachewicket-\d+)";) | 
 |  | 
 | echo "Closing staging repository with id $stagingrepoid" | 
 | mvn org.sonatype.plugins:nexus-staging-maven-plugin:LATEST:rc-close -DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://repository.apache.org -DserverId=apache.releases.https -Ddescription="Release has been built, awaiting vote" | 
 |  | 
 | generate_promotion_script | 
 | generate_rollback_script | 
 |  | 
 | echo "Create and sign the source tarballs" | 
 |  | 
 | mkdir -p target/dist/binaries | 
 |  | 
 | git archive --format=tar.gz --prefix=apache-wicket-$version/ -o target/dist/apache-wicket-$version.tar.gz $tag | 
 | git archive --format=zip --prefix=apache-wicket-$version/ -o target/dist/apache-wicket-$version.zip $tag | 
 | gpg --armor --detach-sign --use-agent --sign target/dist/apache-wicket-$version.tar.gz | 
 | gpg --armor --detach-sign --use-agent --sign target/dist/apache-wicket-$version.zip | 
 |  | 
 | pushd target/dist | 
 | sha256sum apache-wicket-$version.tar.gz > apache-wicket-$version.tar.gz.sha256 | 
 | sha256sum apache-wicket-$version.zip > apache-wicket-$version.zip.sha256 | 
 | popd | 
 |  | 
 | echo "Create and sign the binaries" | 
 | mkdir target/apache-wicket-$version-bin | 
 | pushd target/apache-wicket-$version-bin | 
 | find ../checkout ! \( -type d -name "WEB-INF" -prune \) -regex ".*wicket-[^/]*.[j]ar" ! -name "*-sources*" ! -name "*-javadoc*" ! -name "*wicket-archetype-quickstart*" ! -name "wicket-common-tests*"  -type f -exec cp {} . \; | 
 | find ../checkout ! \( -type d -name "WEB-INF" -prune \) -regex ".*wicket-[^/]*.[j]ar\.asc" ! -name "*-sources*" ! -name "*-javadoc*" ! -name "*wicket-archetype-quickstart*" ! -name "wicket-common-tests*"  -type f -exec cp {} . \; | 
 | cp ../../LICENSE . | 
 | cp ../../README . | 
 | cp ../../NOTICE . | 
 | cp ../../CHANGELOG* . | 
 | popd | 
 |  | 
 | pushd target | 
 |  | 
 | tar cfz dist/binaries/apache-wicket-$version-bin.tar.gz apache-wicket-$version-bin | 
 | zip -r dist/binaries/apache-wicket-$version-bin.zip apache-wicket-$version-bin | 
 | gpg --armor --detach-sign --use-agent --sign dist/binaries/apache-wicket-$version-bin.tar.gz | 
 | gpg --armor --detach-sign --use-agent --sign dist/binaries/apache-wicket-$version-bin.zip | 
 |  | 
 | pushd dist/binaries | 
 | sha256sum apache-wicket-$version-bin.tar.gz > apache-wicket-$version-bin.tar.gz.sha256 | 
 | sha256sum apache-wicket-$version-bin.zip > apache-wicket-$version-bin.zip.sha256 | 
 | popd | 
 | popd | 
 |  | 
 | echo "Uploading release to dist.apache.org" | 
 | pushd target/dist | 
 | svn mkdir https://dist.apache.org/repos/dist/dev/wicket/$version -m "Create $version release staging area" | 
 | svn co --force --depth=empty https://dist.apache.org/repos/dist/dev/wicket/$version . | 
 | cp ../../CHANGELOG* . | 
 | svn add * | 
 | svn commit -m "Upload wicket-$version to staging area" | 
 | popd | 
 |  | 
 | generate_signatures_from_release | 
 | generate_release_vote_email | 
 | generate_announce_email | 
 | generate_announce_md | 
 |  | 
 |  | 
 | # Done with the tasks, now print out the next things the release manager | 
 | # needs to do | 
 |  | 
 | pushd target/dist | 
 | find . -name "*.asc" -exec gpg --verify {} \; | 
 | popd | 
 |  | 
 | echo " | 
 | The release has been created. It is up to you to check if the release is up | 
 | to par, and perform the following commands yourself when you start the vote | 
 | to enable future development during the vote and after. | 
 |  | 
 | A vote email has been generated in release-vote.txt, you can copy/paste it using: | 
 |  | 
 |     cat release-vote.txt | pbcopy | 
 |  | 
 | You can find the distribution in target/dist. | 
 |  | 
 |  | 
 | Failed release | 
 | -------------- | 
 |  | 
 | To rollback a release due to a failed vote or some other complication use: | 
 |  | 
 |     $ ./revert-$version.sh | 
 |  | 
 | This will clean up the artfifacts from the staging areas, including Nexus, | 
 | dist.apache.org and the release branch and tag. | 
 |  | 
 |  | 
 | Successful release | 
 | ------------------ | 
 |  | 
 | Congratulations on the successful release vote! | 
 |  | 
 | Use the release-announce.txt as a starter for the release announcement: | 
 |  | 
 |     cat release-announce.txt | pbcopy | 
 |  | 
 | A Markdown file called wicket-$version-released.md has been also generated. | 
 | You can use it to update the site with the release announcement. | 
 |  | 
 | To promote the release after a successful vote, run: | 
 |  | 
 |     $ ./promote-$version.sh | 
 |  | 
 | This will promote the Nexus staging repository to Maven Central, and move | 
 | the release artifacts from the staging area to dist.apache.org. It will | 
 | also sign the release tag and push the release branch to git.apache.org | 
 |  | 
 | You can read this message at a later time using: | 
 |  | 
 |     $ cat release.txt | 
 |  | 
 | Happy voting! | 
 | " > release.txt | 
 |  | 
 | git add release.txt | 
 |  | 
 | echo "Adding post-release scripts and vote/release email templates to build branch" | 
 | git commit -m "Added post-release scripts and vote/release email templates" | 
 |  | 
 | echo "Signing the release tag" | 
 | git checkout $tag | 
 | git tag --sign --force --message \"Signed release tag for Apache Wicket $version\" $tag >> $log | 
 | git checkout $branch | 
 |  | 
 | echo "Pushing build artifacts to the staging repository" | 
 | git push staging $branch:refs/heads/$branch | 
 |  | 
 | echo "Pushing release tag to the staging repository" | 
 | git push staging $tag | 
 |  | 
 | cat release.txt |