Pierre De Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 1 | |
| 2 | |
| 3 | |
| 4 | Apache Felix Dependency Manager Release Guide |
| 5 | This document describes how to do a source release. It is based on the Release FAQ [1] |
| 6 | |
| 7 | Prerequisites |
| 8 | ============= |
| 9 | |
| 10 | To create a release you must: |
| 11 | |
Pierre De Rop | a622eca | 2016-02-24 00:05:35 +0000 | [diff] [blame] | 12 | * Have a Jdk8 (at least version 1.8.0_71) installed on your system; |
Pierre De Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 13 | * 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 | |
| 20 | Before you can start staging a release candidate, you must: |
| 21 | |
| 22 | * make sure there are no dependencies on snapshots/unreleased versions; |
Pierre De Rop | 6501bac | 2015-06-11 22:41:04 +0000 | [diff] [blame] | 23 | * 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 Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 25 | * create a tagged version of the sources in preparation of the release candidate. |
| 26 | |
Pierre De Rop | 6501bac | 2015-06-11 22:41:04 +0000 | [diff] [blame] | 27 | Create a tagged version |
| 28 | ======================= |
| 29 | |
Pierre De Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 30 | Creating a tagged version of the sources can be done directly through svn (replace r<n> by the actual release number, like "r1"): |
| 31 | |
| 32 | svn 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 | |
| 34 | Staging a release candidate |
| 35 | =========================== |
| 36 | |
| 37 | Staging a release starts by checking out a tagged version of the sources (replace r<n> by the actual release number, like "r1"): |
| 38 | |
| 39 | svn co https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.dependencymanager-r<n> |
| 40 | |
| 41 | The 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 | |
| 44 | Use 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 Rop | ca38ede | 2016-02-28 21:31:59 +0000 | [diff] [blame] | 53 | Now 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 | |
| 57 | currently, 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 Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 66 | |
| 67 | $ ./gradlew makeStaging (this will create ./release/staging/ directory) |
| 68 | |
| 69 | Then you sign archives by invoking the following task: |
| 70 | |
| 71 | $ ./gradlew signStaging |
| 72 | |
| 73 | You 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 |
| 74 | https://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 | |
| 78 | Voting on the release |
| 79 | ===================== |
| 80 | |
| 81 | Start 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 | >>> |
| 84 | To: "Felix Developers List" <dev@felix.apache.org> |
| 85 | Subject: [VOTE] Release of Apache Felix Dependency Manager release r<n> |
| 86 | |
| 87 | Hi, |
| 88 | |
| 89 | We solved N issues in this release: |
| 90 | http://issues.apache.org/jira/... |
| 91 | |
| 92 | There are still some outstanding issues: |
| 93 | http://issues.apache.org/jira/... |
| 94 | |
| 95 | Staging repository: |
| 96 | https://dist.apache.org/repos/dist/dev/felix/apache-felix-dependencymanager-r<n>/ |
| 97 | |
| 98 | You can use this UNIX script to download the release and verify the signatures: |
| 99 | http://svn.apache.org/repos/asf/felix/trunk/dependencymanager/release/check_staged_release.sh |
| 100 | |
| 101 | Usage: |
| 102 | sh check_staged_release.sh r<n> /tmp/felix-staging |
| 103 | |
| 104 | This script, unlike the original Felix check_stage_release.sh, will download staging from https://dist.apache.org/repos/dist/dev/felix instead of |
| 105 | http://repository.apache.org/content/repositories. |
| 106 | |
| 107 | |
| 108 | Please vote to approve this release: |
| 109 | |
| 110 | [ ] +1 Approve the release |
| 111 | [ ] -1 Veto the release (please provide specific comments) |
| 112 | |
| 113 | This vote will be open for 72 hours. |
| 114 | <<< |
| 115 | |
| 116 | Promoting the release: |
| 117 | ===================== |
| 118 | |
| 119 | Move the artifacts from the development area to the final release location at |
| 120 | https://dist.apache.org/repos/dist/release/felix by invoking the following target: |
| 121 | |
Pierre De Rop | ca38ede | 2016-02-28 21:31:59 +0000 | [diff] [blame] | 122 | You can now get back to your felix-trunk bndtools workspace, and import the released bundles, in your "Release" repository. |
| 123 | Once done, manually svn add the new released bundles, and svn remove the previous bundles (in cnf/releaserepo/...) |
| 124 | |
Pierre De Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 125 | $ ./gradlew promoteToRelease |
| 126 | |
Pierre De Rop | 3a00a21 | 2015-03-01 09:27:46 +0000 | [diff] [blame] | 127 | Cancelling 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 |