File: release

package info (click to toggle)
ldaptive 2.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 14,192 kB
  • sloc: java: 68,618; xml: 3,223; sh: 338; makefile: 2
file content (158 lines) | stat: -rwxr-xr-x 5,243 bytes parent folder | download
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash

function user_continue() {
  read -p "Do you want to continue? [y/n]" -n 1 -r
  echo
  if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    exit 1
  fi
}

if [ "$#" -ne 5 ]; then
  echo "USAGE: `basename $0` <branch> <release-version> <next-version> <sonatype-user> <sonatype-passwd>"
  exit
fi

if [ ! -f "distribution/release" ]; then
  echo "Script must be executed in the root directory of this project"
  exit
fi

BRANCH="${1}"
RELEASE_VERSION="${2}"
if [[ ! "${RELEASE_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
  echo "<release-version> must be of the form 'MAJOR.MINOR.REVISION'"
  exit
fi
NEXT_VERSION="${3}"
if [[ ! "${NEXT_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+-SNAPSHOT$ ]]; then
  echo "<next-version> must be of the form 'MAJOR.MINOR.REVISION-SNAPSHOT'"
  exit
fi
SONATYPE_USER="${4}"
SONATYPE_PASSWORD="${5}"

if [ -z $(git config --get user.signingkey) ]; then
  echo "Git signing must be enabled. Add user.signingkey to ~/.gitconfig"
  exit
fi

if [ $(git tag -l | grep "$RELEASE_VERSION") ]; then
  echo "Tag ${RELEASE_VERSION} already exists"
  exit
fi

echo "================================================================="
echo "BEGIN RELEASE"
echo "BRANCH TO TAG:   ${BRANCH}"
echo "RELEASE VERSION: ${RELEASE_VERSION}"
echo "NEXT VERSION:    ${NEXT_VERSION}"
echo "================================================================="
user_continue

# update pom to release version
./mvn_cmd clean
./mvn_cmd versions-set ${RELEASE_VERSION}
echo "Updated pom to release version ${RELEASE_VERSION}"
user_continue

# commit pom changes
git commit -a -m "Update version for ${RELEASE_VERSION} release."

# tag the release version
git tag -s v${RELEASE_VERSION} -m "Tagging ${RELEASE_VERSION} release."
echo "Tagged release ${RELEASE_VERSION}"

# update pom to the next version
./mvn_cmd versions-set ${NEXT_VERSION}
echo "Updated pom to next version ${NEXT_VERSION}"

# commit pom changes
git commit -a -m "Bump version to ${NEXT_VERSION}."

# push commits
git push origin ${BRANCH}

# push release tag
git push origin v${RELEASE_VERSION}

# checkout the release tag
git checkout v${RELEASE_VERSION}
echo "Switched to the tag version ${RELEASE_VERSION}"

# build the release distribution
./mvn_cmd install
./mvn_cmd bundle-create
gpg --armor --detach-sign distribution/target/ldaptive-${RELEASE_VERSION}-dist.tar.gz
gpg --armor --detach-sign distribution/target/ldaptive-${RELEASE_VERSION}-dist.zip

# update the javadocs
echo "Updating javadocs"
user_continue

git checkout gh-pages
git pull origin gh-pages
# remove root directory javadocs
git rm -r javadocs/org javadocs/*.html javadocs/*.css javadocs/*.js javadocs/package-list
# add new javadocs to root directory
cp distribution/target/ldaptive-distribution-${RELEASE_VERSION}-javadoc.jar javadocs
pushd javadocs
jar xf ldaptive-distribution-${RELEASE_VERSION}-javadoc.jar
rm -rf META-INF ldaptive-distribution-${RELEASE_VERSION}-javadoc.jar
popd
# add new javadocs to release version directory
mkdir javadocs/${RELEASE_VERSION}
cp distribution/target/ldaptive-distribution-${RELEASE_VERSION}-javadoc.jar javadocs/${RELEASE_VERSION}
pushd javadocs/${RELEASE_VERSION}
jar xf ldaptive-distribution-${RELEASE_VERSION}-javadoc.jar
rm -rf META-INF ldaptive-distribution-${RELEASE_VERSION}-javadoc.jar
popd
git add javadocs
git commit -a -m "Updated javadocs for ${RELEASE_VERSION} release."
echo "Committed new javadocs"

# update the spring ext schema
echo "Updating schema"
user_continue

cp beans/target/classes/org/ldaptive/beans/spring/spring-ext.xsd schema/spring-ext.xsd
cp beans/target/classes/org/ldaptive/beans/spring/spring-ext.xsd schema/spring-ext-${RELEASE_VERSION}.xsd
git add schema
git commit -a -m "Updated schema for ${RELEASE_VERSION} release."
echo "Committed new schema"

# add new binaries
echo "Adding release binaries"
user_continue

mkdir downloads/${RELEASE_VERSION}
cp distribution/target/ldaptive-${RELEASE_VERSION}-dist* downloads/${RELEASE_VERSION}
git add downloads/${RELEASE_VERSION}
git commit -a -m "Added binaries for ${RELEASE_VERSION} release."
echo "Committed new release binaries"

# push changes to the server
git push origin gh-pages

# upload bundle jars to sonatype
echo "Uploading bundle jars to sonatype"
user_continue

curl -i -u ${SONATYPE_USER}:${SONATYPE_PASSWORD} \
  -F "file=@target/ldaptive-parent-"${RELEASE_VERSION}"-bundle.jar" \
  "https://oss.sonatype.org/service/local/staging/bundle_upload"
curl -i -u ${SONATYPE_USER}:${SONATYPE_PASSWORD} \
  -F "file=@core/target/ldaptive-"${RELEASE_VERSION}"-bundle.jar" \
  "https://oss.sonatype.org/service/local/staging/bundle_upload"
curl -i -u ${SONATYPE_USER}:${SONATYPE_PASSWORD} \
  -F "file=@json/target/ldaptive-json-"${RELEASE_VERSION}"-bundle.jar" \
  "https://oss.sonatype.org/service/local/staging/bundle_upload"
curl -i -u ${SONATYPE_USER}:${SONATYPE_PASSWORD} \
  -F "file=@beans/target/ldaptive-beans-"${RELEASE_VERSION}"-bundle.jar" \
  "https://oss.sonatype.org/service/local/staging/bundle_upload"
curl -i -u ${SONATYPE_USER}:${SONATYPE_PASSWORD} \
  -F "file=@templates/target/ldaptive-templates-"${RELEASE_VERSION}"-bundle.jar" \
  "https://oss.sonatype.org/service/local/staging/bundle_upload"

echo "Finished release ${RELEASE_VERSION} for ldaptive."