This is an automated email from the ASF dual-hosted git repository.
jerrick pushed a commit to branch 2.6.x
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/2.6.x by this push:
new 5adb9bf update release script (#2615)
5adb9bf is described below
commit 5adb9bfb59acdba3115f2b4cd1d9ec72ecec42cc
Author: Jerrick Zhu <[email protected]>
AuthorDate: Tue Oct 9 11:46:53 2018 +0800
update release script (#2615)
---
release.sh | 334 +++++++++++++++++++++----------------------------------------
1 file changed, 114 insertions(+), 220 deletions(-)
diff --git a/release.sh b/release.sh
index e33940e..d5e9401 100755
--- a/release.sh
+++ b/release.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
# 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.
@@ -14,26 +14,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# set -e
-# set -x
-
-function fail {
- >&2 echo "\033[31m\033[01m[
- FATAL ERROR:
- ------------------
- $1 ]\033[0m"
-
- echo "Clear current work dir"
- git add .
- git commit -m 'Failed preparation for release.'
- exit 1
-}
function fail_noclear {
- >&2 echo "\033[31m\033[01m[
- FATAL ERROR:
+ >&2 echo " FATAL ERROR:
------------------
- $1 ]\033[0m"
+ $1"
exit 1
}
@@ -44,142 +29,58 @@ xpath /pom:project/pom:version/text()
EOF
}
-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"
-# promote the source distribution by moving it from the staging area to the
release area
-# mv https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version
https://dist.apache.org/repos/dist/release/incubator/dubbo/ -m "Upload release
to the mirrors"
-#mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-release
-DstagingRepositoryId=$stagingRepositoryId -DnexusUrl=https://oss.sonatype.org/
-DserverId=sonatype-nexus-staging -Ddescription="Release vote has passed"
-# Renumber the next development iteration $next_version:
-git checkout $branch
-mvn release:update-versions --batch-mode
-mvn versions:set versions:commit -DprocessAllModules=true
-DnewVersion=$next_version
-git add --all
-git commit -m 'Start the next development version'
-echo "
-Please check the new versions and merge $branch to the base branch.
-"
-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 dist area
-#svn rm https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version -m
"Release vote has failed"
-# clean up staging maven repository
-#mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-drop
-DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://oss.sonatype.org/
-DserverId=sonatype-nexus-staging -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_release_vote_email {
-
- echo "Generating Vote email"
-
- echo "
- Hello Dubbo Community,
-
- This is a call for vote to release Apache Dubbo (Incubating) version
$version.
-
- The release candidates (RC5):
- https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version
+REPO=""
+BRANCH=""
- Git tag for the release (RC5):
- https://github.com/apache/incubator-dubbo/tree/dubbo-$version
- Hash for the release tag:
- 3963d8fd93642398375ea92acb7ed4d2bc1b0518
-
- Release Notes:
- https://github.com/apache/incubator-dubbo/blob/dubbo-$version/CHANGES.md
-
- The artifacts have been signed with Key : 28681CB1, which can be found in
the keys file:
- https://dist.apache.org/repos/dist/dev/incubator/dubbo/KEYS
-
- The vote will be open for at least 72 hours or until necessary number of
votes are reached.
-
- Please vote accordingly:
+if [[ $# -eq 2 ]]; then
+ REPO=$1
+ BRANCH=$2
+else
+ fail_noclear "Please use ./release.sh YOUR_GIT_REPO YOUR_BRANCH_NAME."
+fi
- [ ] +1 approve
- [ ] +0 no opinion
- [ ] -1 disapprove with the reason
+echo "Remote repo is: $REPO, branch is: $BRANCH"
-" | tail -n+2 > release-vote.txt
+read -p "Input the local directory to work on (default is $BRANCH): " DIR_NAME
- git add release-vote.txt
-}
+DIR_NAME=${DIR_NAME:-$BRANCH}
-hasFileChanged=`git status|grep -e "nothing to commit, working tree clean"|wc
-l`
-if [ $hasFileChanged -lt 1 ] ; then
- fail_noclear "ERROR: there are changes that have not committed in current
branch ."
-fi
+echo $DIR_NAME
-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 Dubbo (Incubating) mirror
(https://github.com/apache/dubbo) and then
-add the remote staging repository with the following command:
- $ git remote add staging [email protected]:<your personal github
username>/dubbo.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.
-"
+if [ -d $DIR_NAME ]; then
+ #fail_noclear "$DIR_NAME exist, please use a new name."
+ echo "$DIR_NAME exist, going on."
+else
+ #echo "$DIR_NAME exist, try to remove it."
+ #rm -rf $DIR_NAME
+ git clone -b $BRANCH $REPO $DIR_NAME
+ if [ $? -ne 0 ]; then
+ fail_noclear "git clone -b $BRANCH $REPO $DIR_NAME failed."
+ fi
fi
+cd $DIR_NAME
-echo "Cleaning up any release artifacts that might linger: mvn -q
release:clean"
-mvn -q release:clean
-
-# the branch on which the code base lives for this version
-read -p 'Input the branch on which the code base lives for this version: '
GIT_BRANCH
-
-version=$(getProjectVersionFromPom)
-while [[ ! $version =~ ^[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?$ ]]
+VERSION=$(getProjectVersionFromPom)
+ORIGIN_VERSION="$VERSION"
+while [[ ! $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?$ ]]
do
- read -p "Version to release (in pom now is $version): " -e t1
+ read -p "Version to release (in pom now is $VERSION): " -e t1
if [ -n "$t1" ]; then
- version="$t1"
+ VERSION="$t1"
fi
done
-tag=dubbo-$version
-branch=$version-release
+TAG=dubbo-$VERSION
+echo $TAG
-major_version=$(expr $version : '\(.*\)\..*\..*')
-minor_version=$(expr $version : '.*\.\(.*\)\..*')
-bugfix_version=$(expr $version : '.*\..*\.\(.*\)')
+# get last commit id
+COMMIT_ID=`git rev-parse HEAD`
+echo $COMMIT_ID
+
+major_version=$(expr $VERSION : '\(.*\)\..*\..*')
+minor_version=$(expr $VERSION : '.*\.\(.*\)\..*')
+bugfix_version=$(expr $VERSION : '.*\..*\.\(.*\)')
next_version="$major_version.$minor_version.$(expr $bugfix_version +
1)-SNAPSHOT"
previous_minor_version=$(expr $bugfix_version - 1)
@@ -189,91 +90,84 @@ else
previous_version="$major_version.$minor_version.$(expr $bugfix_version -
1)"
fi
-log=../release.out
+echo $major_version $minor_version $bugfix_version $next_version
$previous_minor_version $previous_version
-if [ -f $log ] ; then
- rm $log
+read -p "Need to run mvn clean install -Prelease -Dmaven.test.skip=false ?
(y/n, default is n) " NEED_INSTALL
+echo $NEED_INSTALL
+if [ "$NEED_INSTALL" = "y" ]; then
+ echo "Start to mvn clean install"
+ mvn clean install -Prelease -Dmaven.test.skip=false
+else
+ echo "Skip mvn clean install -Prelease -Dmaven.test.skip=false"
fi
-echo "Removing previous release tag $tag (if exists)"
-oldtag=`git tag -l |grep -e "$tag"|wc -l` >> $log
-[ "$oldtag" -ne 0 ] && git tag -d $tag >> $log
-
-echo "Removing previous build branch $branch (if exists)"
-oldbranch=`git branch |grep -e "$branch"|wc -l` >> $log
-[ "$oldbranch" -ne 0 ] && git branch -D $branch >> $log
-
-echo "Removing previous staging tag (if exists)"
-git push origin :refs/tags/$tag >> $log
-
-echo "Creating release branch"
-releasebranch=`git branch -a |grep -e "origin/$branch$"|wc -l` >> $log
-if [ $releasebranch -ne 0 ]
-then
- echo "git checkout -b $branch origin/$branch"
- read -p "test"
- git checkout -b $branch origin/$branch >> $log
- if [ $? -ne 0 ] ; then
- fail_noclear "ERROR: git checkout -b $branch origin/$branch"
- fi
+read -p "Need to run mvn deploy $ORIGIN_VERSION to central repo ? (y/n,
default is n) " NEED_DEPLOY
+
+if [ "$NEED_DEPLOY" = "y" ]; then
+ echo "Start to run mvn deploy SNAPSHOT"
+ mvn deploy -Dmaven.test.skip=true
else
- echo "git checkout -b $branch origin/$GIT_BRANCH"
- read -p "test"
- git checkout -b $branch origin/$GIT_BRANCH >> $log
- if [ $? -ne 0 ] ; then
- fail_noclear "ERROR: git checkout -b $branch origin/$GIT_BRANCH"
- fi
+ echo "Skip deploy SNAPSHOT"
fi
-# Change version from SNAPSHOT to release ready
-#mvn versions:set versions:commit -DprocessAllModules=true
-DnewVersion=$version
-# Add tag
-#git tag -a dubbo-$version -m "generate tag dubbo-version" >> $log
-#git push origin dubbo-$version >> $log
-#mvn release:prepare -Darguments="-DskipTests" -DautoVersionSubmodules=true
-Dusername=chickenlj -DupdateWorkingCopyVersions=true -DpushChanges=false
-DdryRun=true
-#if [ $? -ne 0 ] ; then
-# fail "ERROR: mvn release:prepare was not successful"
-#fi
-#mvn -Prelease release:perform -Darguments="-DskipTests
-Dmaven.deploy.skip=true" -DautoVersionSubmodules=true -Dusername=chickenlj
-DdryRun=true
-#if [ $? -ne 0 ] ; then
-# fail "ERROR: mvn release:perform was not successful"
-#fi
-mvn versions:set versions:commit -DprocessAllModules=true
-DnewVersion=$version >> $log
-
-# Determine the staging repository and close it after deploying the release to
the staging area
-stagingrepoid=$(mvn
org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-list
-DnexusUrl=https://oss.sonatype.org/ -DserverId=sonatype-nexus-staging | grep
-v "CLOSED" | grep -Eo "(comalibaba-\d+)";)
-
-echo "Closing staging repository with id $stagingrepoid"
-#mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-close
-DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://oss.sonatype.org/
-DserverId=sonatype-nexus-staging -Ddescription="Release has been built,
awaiting vote"
-
-read -p "test"
-#mvn clean install -DskipTests
-cd ./distribution
-echo "Current dir: $(pwd)"
-echo "Prepare for source and binary releases: mvn install -Prelease"
-mvn install -Prelease >> $log
-if [ $? -ne 0 ] ; then
- fail "ERROR: mvn clean install -Prelease"
+echo "Start to run mvn release:clean..."
+mvn release:clean
+# remove local/remote tag
+echo "Delete local tag $TAG"
+git tag --delete $TAG
+
+read -p "Operate remote $BRANCH-staging and tag $TAG ? (y/n, default is n) "
FORCE_DELETE
+
+if [ "$FORCE_DELETE" = "y" ]; then
+ echo "Delete remote $BRANCH-staging and tag $TAG"
+ git push origin --delete $TAG
+ git push origin --delete $BRANCH-staging
+fi
+
+echo "Start to run mvn release:prepare..."
+read -p "Input your github username: " USER_NAME
+mvn release:prepare -Prelease -Darguments="-DskipTests"
-DautoVersionSubmodules=true -Dusername=$USER_NAME
-DupdateWorkingCopyVersions=true -DpushChanges=false -Dtag=$TAG
-DreleaseVersion=$VERSION -DdevelopmentVersion=$next_version
+
+if [ "$FORCE_DELETE" = "y" ]; then
+ echo "Push local change to staging branch"
+ git push origin $BRANCH:$BRANCH-staging
+
+ # push tag to remote
+ echo "Push tag $TAG to remote"
+ git push origin $TAG
fi
-cd ./target
-shasum -a 512 apache-dubbo-incubating-${version}-source-release.zip >>
apache-dubbo-incubating-${version}-source-release.zip.sha512
-shasum -a 512 apache-dubbo-incubating-${version}-bin-release.zip >>
apache-dubbo-incubating-${version}-bin-release.zip.sha512
-
-echo "Submit all release candidate packages to svn"
-#svn mkdir
https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version-test -m "Create
$version release staging area"
-#svn co --force --depth=empty
https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version .
-#svn add *
-#svn commit -m "Upload dubbo-$version to staging area"
-
-cd ../..
-git add .
-git commit -m "Prepare for release $version"
-git push origin $branch
-
-generate_promotion_script
-generate_rollback_script
-generate_release_vote_email
-git checkout -b $branch-staging
-git add .
-git commit -m "Prepare for release $version"
-git push staging $branch-staging
\ No newline at end of file
+
+if [ "$FORCE_DELETE" = "y" ]; then
+ echo "Start to run mvn release:perform..."
+ mvn -Prelease release:perform -Darguments="-DskipTests"
-DautoVersionSubmodules=true -Dusername=$USER_NAME
+else
+ echo "Skip release"
+fi
+
+# reset working directory
+echo "Reset local repo to $COMMIT_ID"
+git reset --hard $COMMIT_ID
+
+cd distribution/target
+echo "Start to shasum for bin/source.zip"
+shasum -a 512 apache-dubbo-incubating-${VERSION}-source-release.zip >>
apache-dubbo-incubating-${VERSION}-source-release.zip.sha512
+shasum -a 512 apache-dubbo-incubating-${VERSION}-bin-release.zip >>
apache-dubbo-incubating-${VERSION}-bin-release.zip.sha512
+
+read -p "Need to push bin/source.zip to Apache svn repo ? (y/n, default is n)
" NEED_PUSH_APACHE
+
+if [ "$NEED_PUSH_APACHE" = "y" ]; then
+ # Need to test
+ svn mkdir
https://dist.apache.org/repos/dist/dev/incubator/dubbo/$VERSION -m "Create
$VERSION directory"
+ svn co --force --depth=empty
https://dist.apache.org/repos/dist/dev/incubator/dubbo/$VERSION .
+ svn add apache-dubbo-incubating-${VERSION}-source-release.zip
+ svn add apache-dubbo-incubating-${VERSION}-source-release.zip.asc
+ svn add apache-dubbo-incubating-${VERSION}-source-release.zip.sha512
+ svn add apache-dubbo-incubating-${VERSION}-bin-release.zip
+ svn add apache-dubbo-incubating-${VERSION}-bin-release.zip.asc
+ svn add apache-dubbo-incubating-${VERSION}-bin-release.zip.sha512
+ svn commit -m "Upload dubbo-$VERSION"
+
+ echo "If this is your first release, make sure adding PUBLIC_KEY to
KEYS manually."
+else
+ echo "Skip push bin/source.zip to Apache svn repo"
+fi
\ No newline at end of file