aboutsummaryrefslogtreecommitdiffstats
path: root/src/documentation/release-guide.txt
blob: 30b4b91e07c0905a697d2084c5d56e00e5eb09f3 (plain)
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
POI Release Guide


(I) Prerequisites

   1. You should read the <a href="http://apache.org/dev/release.html">Apache Release FAQ</a>
   2. You must have shell access to people.apache.org
   3. Release manager must have his public key appended to the KEYS file checked in to SVN and the key published on one of the public key servers.
      More info can be found here: <a href="http://www.apache.org/dev/release-signing.html">http://www.apache.org/dev/release-signing.html</a>
   4. You must have <a href="java.sun.com">JDK 1.4 / 1.5</a>
   5. You must have the following utilities installed on your local machine and available in your path:
          * <a href="www.openssh.com">ssh</a>
          * <a href="www.gnupg.org">gnupg</a>
          * <a href="www.openssl.org">openssl</a>
      For Windows users, install Cygwin and make sure you have the above utilities
   6. The POI build system requires two components to perform a build
          * <a href="ant.apache.org">Ant</a>  
          * <a href="http://forrest.apache.org/">Forrest</a>. 
  POI 3.0.2 and 3.1 were built using Ant 1.6.2 and Forrest 0.5

(II) Making release artefacts
  1. Update version id in build.xml
{code:xml}
  <property name="version.id" value="3.1-beta1"/>
{code}


  1a Check file permissions in SVN. 
 There can be  files in the SVN tree marked executable (have the
 svn:executable property set), but which should not be. Checking them out will cause 
 the executable bit to be set for them on filesystems which support it. 
 The flag can be removed in batch using
 
$ svn pd 'svn:executable' $(find -name .svn -prune -or -type f ! -name \*.sh \
 -print0 | xargs -0 svn pg 'svn:executable' | cut -d ' ' -f 1)


  2. Tag current version. Include the current revision number in the comment

{code}
$ svn cp https://svn.apache.org/repos/asf/poi/trunk \
https://svn.apache.org/repos/asf/poi/tags/$TAG \
-m "tag r649911 as 3.1-beta1"
{code}

where $TAG is the release tag, for example, REL_3_1_BETA1

  3. Checkout the tagged version
{code}
cd tags
svn checkout https://svn.apache.org/repos/asf/poi/tags/$TAG
{code}

  4. Merge (if required)

{code}
cd $TAG
$ svn merge https://svn.apache.org/repos/asf/poi/tags/$TAG \
https://svn.apache.org/repos/asf/poi/trunk
{code}

  5. Start a new section in sites.xml and status.xml. 

  6. Build as if the vote had passed. The build date must be +7 days from current.
{code}
ant build
{code}
After build you should have the following files in the build/dist:

{code}
poi-$TAG-$DATE.jar
poi-bin-$TAG-$DATE.tar.gz
poi-bin-$TAG-$DATE.zip
poi-contrib-$TAG-$DATE.jar
poi-scratchpad-$TAG-$DATE.jar
poi-src-$TAG-$DATE.tar.gz
poi-src-$TAG-$DATE.zip
{code}

where $TAG is the release tag specified in build.xml in the version.id property, $DATE is the release date (typically +7 days from the actual build date). 
  7. Build Mavn POM files
{code}
ant maven-dist
{code}

  8. Signing the release artifacts:
{code}
cd build/dist
for i in *.zip ; do 
  gpg --armor --output $i.asc --detach-sig $i; 
done
for i in *.gz ; do 
  gpg --armor --output $i.asc --detach-sig $i; 
done
{code}

Verify the signatures:

{code}
gpg --multifile --verify *.asc
{code}

   9. Create MD5 checksums for all artifacts to be published:

{code}
for i in *.zip ; do 
  openssl md5 < $i > $i.md5
done
for i in *.gz ; do 
  openssl md5 < $i > $i.md5
done
{code}

   10. Upload to your area at people.apache.org.
There should be two directories:
main
maven

Make sure that the all files have read permission. 

 (III) After the vote:

Log-in on people.apache.org

1. Go to ~/POI-3.1-BETA1

zap previous version first.

{code}
cd ~/POI-3.1-BETA1/main
{code}

BETA and ALPHA releases:

{code}
cp *-src-* /www/www.apache.org/dist/poi/dev/src
cp *-bin-* /www/www.apache.org/dist/poi/dev/bin
{code}

FINAL release:
{code}
cp *-src-* /www/www.apache.org/dist/poi/release/src
cp *-bin-* /www/www.apache.org/dist/poi/release/bin
{code}

{code}
cd ~/POI-3.1-BETA1/maven
cp -r org.apache.poi /www/people.apache.org/repo/m1-ibiblio-rsync-repository/
cp -r poi/poms      /www/people.apache.org/repo/m1-ibiblio-rsync-repository/poi
{code}

2. Make sure that the files are owned by the unix group apcvs and that they are writable by this group. 

3. Wait for the distributions to appear on your favourite mirror

4. test maven
create a simple project and make sure the release artifacts are accessible by maven:

{code}
$ mvn archetype:create -DgroupId=org.apache.poi.scratchpad -DartifactId=maven-test
cd maven-test
{code}
edit pom.xml and add the release artefacts to the project dependencies: 

{code:xml}
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.1-beta1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-scratchpad</artifactId>
      <version>3.1-beta1</version>
    </dependency>
{code}

{code}
mvn compile 
{code}

You should see [INFO] BUILD SUCCESSFUL in the end.

5. Don't forget to upload the latest version of the site and javadocs

6. Send announcements:
 - to poi-user and poi-dev lists
 - to announcement@apache.org, announcements@jakarta.apache.org

Note, announcements should be sent from your @apache.org e-mail address.