blob: 0ebe85ac1adffc7b5a6887ec64a125dd0dc3690c [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
Pierre De Rop3a00a212015-03-01 09:27:46 +000025* create a tagged version of the sources in preparation of the release candidate.
26
Pierre De Rop6501bac2015-06-11 22:41:04 +000027Create a tagged version
28=======================
29
Pierre De Rop3a00a212015-03-01 09:27:46 +000030Creating a tagged version of the sources can be done directly through svn (replace r<n> by the actual release number, like "r1"):
31
32svn 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>"
33
34Staging a release candidate
35===========================
36
37Staging a release starts by checking out a tagged version of the sources (replace r<n> by the actual release number, like "r1"):
38
39svn co https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.dependencymanager-r<n>
40
41The next step is to build/test the software and create the release/staging/ directory (where the source/jars will be packaged):
42(replace r<n> by the actual release number, like "r1")
43
44Use a Java7 JDK
45
46$ cd org.apache.felix.dependencymanager-r<n>
47$ ./gradlew rat
48$ ./gradlew org.apache.felix.dependencymanager.annotation:jar
49$ ./gradlew jar
50$ ./gradlew test
51$ ./gradlew check
52
Pierre De Ropca38ede2016-02-28 21:31:59 +000053Now release under bndtools only the necessary bundles:
54
55- Click on the bndtools "Release workspace bundles", and release the bundles that have been modified and need to be released.
56
57currently, the bundles that can be released are:
58
59* org.apache.felix.dependencymanager
60* org.apache.felix.dependencymanager.shell
61* org.apache.felix.dependencymanager.annotation
62* org.apache.felix.dependencymanager.runtime
63* org.apache.felix.dependencymanager.lambda
64
65- create the staging:
Pierre De Rop3a00a212015-03-01 09:27:46 +000066
67$ ./gradlew makeStaging (this will create ./release/staging/ directory)
68
69Then you sign archives by invoking the following task:
70
71$ ./gradlew signStaging
72
73You 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
74https://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:
75
76$ ./gradlew commitToStaging
77
78Voting on the release
79=====================
80
81Start a vote on the dev@felix.apache.org list, for example (be sure to replace r<n> with the correct release number, like "r1"):
82
83>>>
84To: "Felix Developers List" <dev@felix.apache.org>
85Subject: [VOTE] Release of Apache Felix Dependency Manager release r<n>
86
87Hi,
88
89We solved N issues in this release:
90http://issues.apache.org/jira/...
91
92There are still some outstanding issues:
93http://issues.apache.org/jira/...
94
95Staging repository:
96https://dist.apache.org/repos/dist/dev/felix/apache-felix-dependencymanager-r<n>/
97
98You can use this UNIX script to download the release and verify the signatures:
99http://svn.apache.org/repos/asf/felix/trunk/dependencymanager/release/check_staged_release.sh
100
101Usage:
102sh check_staged_release.sh r<n> /tmp/felix-staging
103
104This script, unlike the original Felix check_stage_release.sh, will download staging from https://dist.apache.org/repos/dist/dev/felix instead of
105http://repository.apache.org/content/repositories.
106
107
108Please vote to approve this release:
109
110[ ] +1 Approve the release
111[ ] -1 Veto the release (please provide specific comments)
112
113This vote will be open for 72 hours.
114<<<
115
116Promoting the release:
117=====================
118
119Move the artifacts from the development area to the final release location at
120https://dist.apache.org/repos/dist/release/felix by invoking the following target:
121
Pierre De Ropca38ede2016-02-28 21:31:59 +0000122You can now get back to your felix-trunk bndtools workspace, and import the released bundles, in your "Release" repository.
123Once done, manually svn add the new released bundles, and svn remove the previous bundles (in cnf/releaserepo/...)
124
Pierre De Rop3a00a212015-03-01 09:27:46 +0000125$ ./gradlew promoteToRelease
126
Pierre De Rop3a00a212015-03-01 09:27:46 +0000127Cancelling the release
128======================
129
130$ ./gradlew deleteFromStaging
131
132[1] http://www.apache.org/dev/release.html
133[2] http://www.apache.org/dist/felix/KEYS