blob: bb5fe355bf5160c70b38b891e59a1d8a34a0e37a [file] [log] [blame]
Pierre De Rop3a00a212015-03-01 09:27:46 +00001
2
3
4Apache Felix Dependency Manager Release Guide
5This document describes how to do a source release. It is based on the Release FAQ [1]
6
7Prerequisites
8=============
9
10To create a release you must:
11
Pierre De Ropa622eca2016-02-24 00:05:35 +000012* Have a Jdk8 (at least version 1.8.0_71) installed on your system;
Pierre De Rop3a00a212015-03-01 09:27:46 +000013* Have Subversion installed on your system;
14* Have gpg installed on your system;
15* Have a public key added to the keys file, and committed to [2]
16* If you are using an http proxy, configure the following:
17
18 export GRADLE_OPTS="-Dhttps.proxyHost=www.somehost.org -Dhttps.proxyPort=8080"
19
20Before you can start staging a release candidate, you must:
21
22* make sure there are no dependencies on snapshots/unreleased versions;
Pierre De Rop6501bac2015-06-11 22:41:04 +000023* increment the ext.dmRelease parameter in release/build.gradle, if not already done, and commit.
24* check if release notes are up-to-date, in release/resources/changelog.txt
25* under bndtools, release (only) the bundles that needs to be released (using "Release workspace bundles" menu).
Pierre De Rop3a00a212015-03-01 09:27:46 +000026* create a tagged version of the sources in preparation of the release candidate.
27
Pierre De Ropa00b6202015-11-20 20:36:37 +000028Release only the necessary bundles
Pierre De Rop6501bac2015-06-11 22:41:04 +000029===================================
30
31Click on the bndtools "Release workspace bundles", and release the bundles that have been modified and need to be released.
32Don't release other unmodified bundles.
Pierre De Ropa00b6202015-11-20 20:36:37 +000033Once done, under the shell prompt, go to the "cnf/releaserepo/" directory, svn remove the previous old released bundles,
34and svn add the new released bundles.
Pierre De Rop6501bac2015-06-11 22:41:04 +000035refresh the repositories under bndtools, and commit.
36
37Create a tagged version
38=======================
39
Pierre De Rop3a00a212015-03-01 09:27:46 +000040Creating a tagged version of the sources can be done directly through svn (replace r<n> by the actual release number, like "r1"):
41
42svn copy https://svn.apache.org/repos/asf/felix/trunk/dependencymanager https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.dependencymanager-r<n> -m "Release of Apache Felix Dependency Manager r<n>"
43
44Staging a release candidate
45===========================
46
47Staging a release starts by checking out a tagged version of the sources (replace r<n> by the actual release number, like "r1"):
48
49svn co https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.dependencymanager-r<n>
50
51The next step is to build/test the software and create the release/staging/ directory (where the source/jars will be packaged):
52(replace r<n> by the actual release number, like "r1")
53
54Use a Java7 JDK
55
56$ cd org.apache.felix.dependencymanager-r<n>
57$ ./gradlew rat
58$ ./gradlew org.apache.felix.dependencymanager.annotation:jar
59$ ./gradlew jar
60$ ./gradlew test
61$ ./gradlew check
62
Pierre De Ropa20b7582015-03-05 07:30:49 +000063create the staging:
Pierre De Rop3a00a212015-03-01 09:27:46 +000064
65$ ./gradlew makeStaging (this will create ./release/staging/ directory)
66
67Then you sign archives by invoking the following task:
68
69$ ./gradlew signStaging
70
71You can upload the archives and the signatures to our development area, which we use to stage this release candidate. This development area can be found at
72https://dist.apache.org/repos/dist/dev/felix and adding files to it can be done using "svnpubsub" which is taken care of by the following target:
73
74$ ./gradlew commitToStaging
75
76Voting on the release
77=====================
78
79Start a vote on the dev@felix.apache.org list, for example (be sure to replace r<n> with the correct release number, like "r1"):
80
81>>>
82To: "Felix Developers List" <dev@felix.apache.org>
83Subject: [VOTE] Release of Apache Felix Dependency Manager release r<n>
84
85Hi,
86
87We solved N issues in this release:
88http://issues.apache.org/jira/...
89
90There are still some outstanding issues:
91http://issues.apache.org/jira/...
92
93Staging repository:
94https://dist.apache.org/repos/dist/dev/felix/apache-felix-dependencymanager-r<n>/
95
96You can use this UNIX script to download the release and verify the signatures:
97http://svn.apache.org/repos/asf/felix/trunk/dependencymanager/release/check_staged_release.sh
98
99Usage:
100sh check_staged_release.sh r<n> /tmp/felix-staging
101
102This script, unlike the original Felix check_stage_release.sh, will download staging from https://dist.apache.org/repos/dist/dev/felix instead of
103http://repository.apache.org/content/repositories.
104
105
106Please vote to approve this release:
107
108[ ] +1 Approve the release
109[ ] -1 Veto the release (please provide specific comments)
110
111This vote will be open for 72 hours.
112<<<
113
114Promoting the release:
115=====================
116
117Move the artifacts from the development area to the final release location at
118https://dist.apache.org/repos/dist/release/felix by invoking the following target:
119
120$ ./gradlew promoteToRelease
121
Pierre De Rop3a00a212015-03-01 09:27:46 +0000122Cancelling the release
123======================
124
125$ ./gradlew deleteFromStaging
126
127[1] http://www.apache.org/dev/release.html
128[2] http://www.apache.org/dist/felix/KEYS