forked from chocoteam/choco-solver
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release.sh
83 lines (68 loc) · 2.76 KB
/
release.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/sh
#Script to notify the website about a release
function getVersionToRelease {
CURRENT_VERSION=`mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v "\[INFO\]"`
echo ${CURRENT_VERSION%%-SNAPSHOT}
}
function getVersion {
mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v "\[INFO\]"
}
function getBranch {
git symbolic-ref --short HEAD
}
case $1 in
request)
VERSION=$(getVersionToRelease)
RELEASE_BRANCH="release-$VERSION"
git checkout -b ${RELEASE_BRANCH} || exit 1
echo "-- Prepare the code for release ${VERSION} in branch ${RELEASE_BRANCH} --"
echo $VERSION > .version
git add .version
sh ./bump_release.sh code $VERSION || exit 1
git commit -m "Prepare the code for release ${VERSION}" -a
git push origin ${RELEASE_BRANCH} || exit 1
#git checkout master
echo "Branch $RELEASE_BRANCH is ready for the releasing process"
;;
perform)
if [ ! -f .version ]; then
echo "Missing .version file"
exit 1
fi
VERSION=$(cat .version)
echo "-- Prepare the release --"
mvn -B release:prepare || exit 1
echo "-- Perform the release --"
mvn release:perform || exit 1
rm .version #To prevent for an infinite loop
DEV_HEAD=$(git rev-parse HEAD)
RELEASE_BRANCH="release-${VERSION}"
# The current tree looks like:
# * HEAD -> next dev version, it is a detached head due to jenkins git plugin
# * (tag ...) -> the tag made by maven release:prepare on the relased version == ${DEV_HEAD}~1
# * ($RELEASE_BRANCH) -> the pointer on the released branch that was set by the client with ./release.sh request
# merge the version changes back into develop so that folks are working against the new release
echo "-- Integrate the next version into the develop branch --"
git checkout develop
NEW_VERSION=$(getVersion)
git merge --no-ff -m "integrate the development version ${NEW_VERSION} generated by maven" ${DEV_HEAD} || exit 1
./bump_release.sh code ${NEW_VERSION}
git commit -m "code prepared for development version ${NEW_VERSION}" -a
echo "-- Integrate release ${VERSION} into the master branch --"
git checkout ${RELEASE_BRANCH}
git merge -s ours master -m "merge master into the release"
git checkout master
git merge --no-ff ${DEV_HEAD}~1 -m "integrate release ${VERSION} to master"
echo "-- Generate the javadoc for release ${VERSION} --"
mvn javadoc:aggregate > /dev/null
echo "-- Push the changes and the tags --"
git checkout develop
git branch -d release-$VERSION
git push origin :release-$VERSION
git push
git push origin --tags
;;
*)
echo "Unsupported operation '$1'"
exit 1
esac