You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/02/22 17:16:46 UTC

svn commit: r1731674 - /incubator/taverna/site/trunk/content/community/releasing.md

Author: stain
Date: Mon Feb 22 16:16:45 2016
New Revision: 1731674

URL: http://svn.apache.org/viewvc?rev=1731674&view=rev
Log:
Update release notes

Modified:
    incubator/taverna/site/trunk/content/community/releasing.md

Modified: incubator/taverna/site/trunk/content/community/releasing.md
URL: http://svn.apache.org/viewvc/incubator/taverna/site/trunk/content/community/releasing.md?rev=1731674&r1=1731673&r2=1731674&view=diff
==============================================================================
--- incubator/taverna/site/trunk/content/community/releasing.md (original)
+++ incubator/taverna/site/trunk/content/community/releasing.md Mon Feb 22 16:16:45 2016
@@ -24,9 +24,6 @@ over a release.
 
 > Release early, release often
 
-**Note**: This page is still a *draft* under development. See [TAVERNA-812](https://issues.apache.org/jira/browse/TAVERNA-812)
-for tasks required for a release.
-
 ## Preparations
 
 * Email dev@taverna to say a release is imminent. This gives the community a chance
@@ -34,6 +31,31 @@ to finish up anything they want to get i
 * Check Jira for [issues](https://issues.apache.org/jira/browse/TAVERNA) on the corresponding
 [components](https://issues.apache.org/jira/browse/TAVERNA/?selectedTab=com.atlassian.jira.jira-projects-plugin:components-panel).
 If you find any that are blocking or in progress, consult with the dev@taverna list first.
+* Create and maintain a Jira task to keep track of the subtasks. You may want to be
+inspired by [TAVERNA-902](https://issues.apache.org/jira/browse/TAVERNA-902)
+
+### Jira updates
+
+Check the [Jira versions](https://issues.apache.org/jira/plugins/servlet/project-config/TAVERNA/versions)
+have a corresponding version for the release you are preparing, and a new version
+for the following development version.  E.g. you are preparing the release
+candidate taverna-language 0.15.1, so make sure `language 0.15.1` exists, and create
+`language 0.16.0` for the next development. You should also check that the earlier
+published version is marked as Published in Jira - you may need to find the _Published
+date_ by looking in the email archives.
+
+Go through the *open issues* for the components you are preparing to release,
+e.g. [Unresolved for Taverna Maven Parent](https://issues.apache.org/jira/issues/?jql=project%20%3D%20TAVERNA%20AND%20resolution%20%3D%20Unresolved%20AND%20component%20%3D%20%22Taverna%20Maven%20Parent%22%20ORDER%20BY%20priority%20DESC) - close those that are done, and reschedule
+_Fix Version_ to a later version if their "Fix Version" is set to the one
+you are preparing (or earlier).
+
+Now go through issues that are resolved since the previous release
+(e.g. [Done/In Review Taverna Language issues with Fix For No/Unreleased ](https://issues.apache.org/jira/issues/?jql=project%20%3D%20TAVERNA%20AND%20status%20in%20%28Done%2C%20%22In%20Review%22%29%20AND%20fixVersion%20in%20%28EMPTY%2C%20unreleasedVersions%28%29%29%20AND%20component%20%3D%20%22Taverna%20Language%22%20ORDER%20BY%20updated%20DESC)),
+and set their _Fix version_ to your release candidate version, so that
+they will appear in the generated
+[Release notes](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318322&version=12332247)
+(click _Configure Release Notes_).
+
 
 ### Prepare your build machine
 
@@ -53,13 +75,13 @@ over. Make sure you have a recent versio
     Default locale: en_GB, platform encoding: UTF-8
     OS name: "linux", version: "3.19.0-18-generic", arch: "amd64", family: "unix"
 
-Then let's have a clean Maven Repository to ensure the build works out of the box.
+Then let's have a **clean Maven Repository** to ensure the build works out of the box.
 
     cd ~/.m2/
     mv repository repository-old
     rm -rf repository-old &
 
-Similarly we'll check out freshly from git to a new folder,
+Similarly we'll use a **fresh check out** from git to a new folder,
 to ensure uncommitted files are not being included in the release.
 For the examples below, we'll create and use `~/src/rc1`
 as the working directory.
@@ -98,6 +120,8 @@ e.g.:
 
     DDDE E876 12E9 FB95 F5C8  D91E 4110 63A3 A0FF D119
 
+Check your key has **not expired** - you can use `gpg --edit-key`
+and `gpg --send-key` to update.
 
 Now verify that the
 [people.apache.org taverna.asc](https://people.apache.org/keys/group/taverna.asc)
@@ -126,7 +150,8 @@ released and which don't form part of th
 ## Git config
 
 Make sure that each new checkout have the correct
-user name information and your `@apache.org` email address:
+user name information and your `@apache.org` email address, as
+the Maven Release plugin will be doing the tagging on your behalf.
 
     cd incubator-taverna-maven-parent
     git config user.name "Your Name"
@@ -147,6 +172,7 @@ complete with `BUILD SUCCESS`:
 
 Note that this would download all the *dependencies* from Maven Central.
 
+
 ### Maven repository access
 
 When releasing a stable version, Maven will deploy to Apache's
@@ -156,27 +182,27 @@ Here, a *staging repository* will be aut
 Ensure you can log in to the Nexus instance before performing a release.
 
 To provide the Nexus credentials, edit your `~/.m2/settings.xml` to include
-your apache.org committer credentials:
-
-<pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
-  &ltservers&gt;
-    &ltserver&gt;
-      &ltid&gt;apache.snapshots.https&lt/id&gt;
-      &ltusername&gt;johndoe&lt/username&gt;
-      &ltpassword&gt;fishsoup&lt/password&gt;
-    &lt/server&gt;
-    &lt;server&gt;
-      &ltid&gt;apache.releases.https&lt/id&gt;
-      &ltusername&gt;johndoe&lt;/username&gt;
-      &ltpassword&gt;fishsoup&lt/password&gt;
-    &lt/server&gt;
-  &lt/servers&gt;
-&lt/settings&gt;
-</code></pre>
-
+your apache.org committer credentials for the servers
+`apache.snapshots.https` and `apache.releases.https`:
 
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <servers>
+    <server>
+      <id>apache.snapshots.https</id>
+      <username>johndoe</username>
+      <password>fishsoup</password>
+    </server>
+    <server>
+      <id>apache.releases.https</id>
+      <username>johndoe</username>
+      <password>fishsoup</password>
+    </server>
+  </servers>
+</settings>
+```
 
 To check you have the correct credentials set up for
 write-access to
@@ -206,7 +232,6 @@ dependency order is generally from top t
 the [code download page](/download/code), e.g. `taverna-language`
 before `taverna-engine` before `taverna-workbench`.
 
-
 ### Fix versions
 
 Edit the top-level `pom.xml` of each project to release, ensuring there
@@ -217,15 +242,19 @@ are no `-SNAPSHOT` dependencies in its `
 its submodules, as they must be on the form `*-SNAPSHOT` in
 order for the Maven Release Plugin to modify them.
 
-Check if a newer `taverna-maven-parent` or other `taverna.*.version`
+Check if a newer `apache-taverna-maven-parent` or other `taverna.*.version`
 dependencies are needed. This is usually indicated by depending on an
-unreleased SNAPSHOT version.  Accordingly, after the release process,
+unreleased `-SNAPSHOT` version.  Accordingly, after the release process,
 do *not* update `master` to use the bumped SNAPSHOT versions, as that would
-wrongly indicate that a newer dependency is needed.
-
+wrongly indicate that a newer dependency is needed. (_After the
+release_ you should change the `master` branch `pom.xml` so that
+the `<properties>` and `<parent>` use the current public release
+(not the release candidate, as it is not yet public).)
 
 For compile/test purposes, update all `taverna.*.version` properties
-to the *latest released version*.
+to the *latest released version* - or the staging version if you
+need to depend on a release candidate version that is being
+prepared together with this one.
 
 Exception to the rule: - when OSGi backwards-compatibility is
 needed, e.g. an updated wsdl-activity that should work also with an
@@ -236,8 +265,8 @@ versioning and don't break API compatibi
 dependency can be updated without forcing an update release
 of its downstream users.
 
-If you are updating `taverna-maven-parent`, then try to
-update this to the latest
+If you are updating `apache-taverna-maven-parent`, then try to
+update this to use the latest version of the
 [Apache super-pom](http://central.maven.org/maven2/org/apache/apache/) - be aware
 that this could change Maven build settings.
 
@@ -252,10 +281,11 @@ We use the
 [Maven release plugin](https://maven.apache.org/maven-release/maven-release-plugin/)
 to release candidates as it ensures a consistent release process:
 
-    mvn release:prepare
+    mvn release:prepare -DautoVersionSubmodules=true
 
-**Note:** Maven will use `gpg` to tag and sign the artifacts - so you might want to
-install and configure a **GPG Agent** to avoid repeatedly providing your
+**Note:** Maven will use `gpg` multiple times to tag and sign the
+artifacts - so you might want to install and configure
+a **GPG Agent** to avoid repeatedly providing your
 GPG passphrase.
 
 
@@ -269,17 +299,27 @@ but check the [policy for version number
     What is the release version for "Apache Taverna Scufl 2 UCF Package"? (org.apache.taverna.language:taverna-scufl2-ucfpackage) 0.15.0-incubating: :
     What is the release version for "Apache Taverna Scufl 2 API"? (org.apache.taverna.language:taverna-scufl2-api) 0.15.0-incubating: :
 
-
-You will be asked for each submodule what version they should have - generally
-their version should be the same as their parent (except to explicitly allow
-API backward compatibility)
+If you do not include `-DautoVersionSubmodules=true` you will be asked for each
+submodule what version they should have - generally their version should be
+the same as their parent (except to explicitly allow API backward compatibility).
 
 **Note**: Take care to use the correct version number if preparing a
 second release candidate, as Maven could suggest a higher version
 number based on the bumped `-SNAPSHOT` version.  
 
-**Important**: If maven prompts for the development parent version remember to set it to *-incubating-SNAPSHOT (where * is what is now in the parent pom).
-If you forget this then please reset it manually in the pom and commit manually after the release has been deployed. If the parent version is set wrong then it can lead to build issues in jenkins etc.  
+**Important**: If Maven prompts for the new
+_development_ *parent* version remember to set it back to the previous
+`*-incubating-SNAPSHOT` (where `*`` is what is now in the parent pom).
+The reason for this is that the taverna-maven-parent
+release candidate will remain in the staging repository
+and can't be used by developers until it is released - and if
+you bump this to the next SNAPSHOT version early, then other modules
+that may rely on the previous SNAPSHOT will stop working as the
+Nexus repository wipes older SNAPSHOTS regularly - and this
+could break Jenkins builds and developer builds.
+(Too late? You can always fix this manually in the pom and
+commit manually after the release has been performed/deployed.)
+
 
 #### Version numbers
 
@@ -301,7 +341,7 @@ Use `git diff` against the previous rele
     git diff 0.15.0-incubating-RC2
 
 Note that as we use of OSGi, the public Java API is usually just what is exposed
-by the `*-api` modules, meaning that implementatoin changes normally should
+by the `*-api` modules, meaning that implementation changes normally should
 just warrant a new patch version. We should also consider indirect APIs, such
 as an Activity's expected JSON configuration or
 the REST API of the Taverna Server.  
@@ -351,6 +391,7 @@ edit and commit required changes, and st
     mvn release:rollback
     vi foo/pom.xml
     git commit
+    git push
     mvn release:prepare
 
 
@@ -394,13 +435,13 @@ which should be something like
 ### Uploading to dist.apache.org
 
 The release candidate source code, checksums and signatures
-should be uploaded to
+should be uploaded to the `dev` area of
 [dist.apache.org](https://dist.apache.org/repos/dist/dev/incubator/taverna/)
 using `svn` - which we'll check out to a new folder `~/src/rc1/dist`:
 
     svn co https://dist.apache.org/repos/dist/dev/incubator/taverna dist
 
-The `source` folder should normally be empty -- if
+The `source` folder of `dev` should normally be empty -- if
 you find remains of an earlier RC that is not
 still under *[VOTE]*, first remove them with `svn rm`:
 
@@ -468,7 +509,7 @@ you might need a *Refresh* in the browse
 Any Apache release must be approved through a
 [vote](http://www.apache.org/foundation/voting.html)
 of the project's PMC. As Apache Taverna is an incubating project, a Taverna release must be
-approved by both the  [Apache Taverna PPMC](/about) and the
+approved by both the  [Apache Taverna PPMC](/about) followed by the
 [Apache Incubator IPMC](http://incubator.apache.org/guides/ppmc.html).
 
 Before an Apache Taverna release can be distributed, it must thus pass two stages:
@@ -480,13 +521,13 @@ Each of the *[VOTE]* threads should be o
 sufficient [review](#Reviewing), and catering for differences in
 holidays and timezones.
 
-Including 24 hours grace period for the download mirrors,
+Including 24 hours grace period for the download mirrors to update,
 this means a release takes a minimum of a week before
 a release candidate might be published and released.
 
 Anyone in the [community](/community) can participate in the
 review and vote, not just PMC members or committers. Only votes
-from IPMC members are **binding**.
+from IPMC members (e.g. our mentors) are **binding**.
 
 
 ### Vote email to dev@taverna
@@ -495,6 +536,7 @@ To start the release vote, modify the be
 Remember `[VOTE]` in the subject line and change the version number to match the
 release candidate.
 
+```
 Subject: [VOTE] Release Apache Taverna Language 0.15.0-incubating RC2
 
 I am pleased to be calling this vote for the source release of
@@ -502,6 +544,9 @@ I am pleased to be calling this vote for
   Apache Taverna Maven Parent 1-incubating
   Apache Taverna Language 0.15.0-incubating
 
+To discuss this release candidate, use the corresponding [DISCUSS] thread.
+
+
 Apache Taverna Language is a set of APIs for workflow definitions (SCUFL2)
 and workflow inputs/outputs/run (DataBundle), as consumed and produced by the
 Apache Taverna workflow system. The API includes support for working with
@@ -565,22 +610,118 @@ majority of at least three +1 Apache Tav
 Anyone can participate in testing and voting, not just
 committers, please feel free to try out the release candidate
 and provide your votes.
+```
 
 ### Discuss email to dev@taverna
 
 It is also recommended to start the discussion around the release candidate with
 a separate thread with subject  
 
-[DISCUSS]: Release Apache Taverna Language 0.15.0-incubating RC2  
+> [DISCUSS]: Release Apache Taverna Language 0.15.0-incubating RC2  
 
 Remember to change the version number as appropriate for the release candidate.
 
+**Tip:** Do not use the "Reply to All" button from the `[VOTE]` email to create the
+`[DISCUSS]` thread - as then they would still appear as a single thread
+due to the `In-Reply-To` email header.
 
 
 ### Tallying the vote
 
+After at least 72 hours, count the votes in the [VOTE] thread. You need to
+count separately the **binding** votes from mentors, as these can
+carry over to the general@incubator vote.
+
+You can find URLs for individual emails (e.g. the binding votes) in the
+[dev@taverna archive](http://mail-archives.apache.org/mod_mbox/incubator-taverna-dev/)
+by clicking a message and then clicking *Permalink*.  Note that the email
+archive may be slow to update.
+
+
+To close the vote thread, send a `[RESULT][VOTE]` email to dev@taverna, e.g.
+
+```
+Subject: [RESULT][VOTE] Release Apache Taverna Parent 1-incubating-RC4 & Apache Taverna Language 0.15.0-incubating RC4
+
+Voting for Apache Taverna Parent 1-incubating & Apache Taverna
+Language 0.15.0-incubating is now closed.  The release has
+*passed* with the following tally:
+
+Binding +1s:
+
+Marlon Pierce (see
+http://mail-archives.apache.org/mod_mbox/incubator-taverna-dev/201507.mbox/%3CD1E0E778.447EC%25marpierc%40iu.edu%3E)
+
+Andy Seaborne (see
+http://mail-archives.apache.org/mod_mbox/incubator-taverna-dev/201508.mbox/%3C55C86B79.3040006%40apache.org%3E)
+
+
+Non binding +1s:
+
+Ian Dunlop
+Alan Williams
+Stian Soiland-Reyes
+Donal K. Fellows
+```
+
+If the vote has not passed (at least +3, or more negative than positive)
+then you will need to pull the release candidate and start over after
+addressing the concerns.
+
+If there are any `-1` or `0` votes, then those concerns should be addressed.
+Often it can be sufficient to just track these in Jira as scheduled
+for the next release - while other times the concern could be grave
+enough to pull the release (e.g. doesn't compile).
+
+
+
 ### Vote email to general@incubator
 
+Using the tally count, now you can send another `[VOTE]` email to the
+[general@incubator](http://mail-archives.apache.org/mod_mbox/incubator-general/)
+list (which you must be subscribed to):
+
+
+```
+Subject: [VOTE] Release Apache Taverna Parent 1-incubating-RC4 & Apache Taverna Language 0.15.0-incubating RC4
+
+The Apache Taverna Incubator PPMC has voted +5 to release
+
+Apache Taverna Parent 1-incubating (RC4)
+Apache Taverna Language 0.15.0-incubating (RC4)
+
+Incubator PMC members please review and vote on this incubator release.
+
+Apache Taverna Language is a set of APIs for workflow definitions
+(SCUFL2) and workflow inputs/outputs/run (DataBundle), as consumed and
+produced by the Apache Taverna workflow system. The API includes
+support for working with Research Object Bundles, and loading/saving
+Taverna workflows in different formats.
+
+Please see original [VOTE] thread
+http://mail-archives.apache.org/mod_mbox/incubator-taverna-dev/201507.mbox/%3C55B8DBC7.2040806%40manchester.ac.uk%3E
+
+and [DISCUSS] thread
+http://mail-archives.apache.org/mod_mbox/incubator-taverna-dev/201507.mbox/%3C55B8DC3F.2070602%40manchester.ac.uk%3E
+
+
+The release candidates to be voted over are available at:
+
+  (.. copy the download/test details from previous email)
+
+Please vote on releasing these packages as:
+
+Apache Taverna Maven Parent 1-incubating
+Apache Taverna Language 0.15.0-incubating
+
+The vote will be open for a minimum of 72 hours.
+
+[ ] +1 Release this package
+[ ] 0 I don't feel strongly about it, but don't object
+[ ] -1 Do not release this package because...
+```
+
+
 
 ## Dropping a release candidate
 
@@ -600,6 +741,7 @@ In your `dist` checkout, `svn rm` the dr
 
     svn rm *RC*
 
+Raise Jira issues for the reasons that caused the RC to be dropped.
 
 ## Distributing
 
@@ -607,32 +749,52 @@ Once a *[VOTE] [Results]* email has been
 then:
 
 * Promote the release candidate to a release
+* Update download page
+* Send announcement email
 
 ### Moving to release area
 
-
 Use full URL `svn mv` to move the accepted release candidate
 to the `release` folder structure on dist.apache.org,
 e.g. at
 [https://dist.apache.org/repos/dist/release/incubator/taverna/source/](https://dist.apache.org/repos/dist/release/incubator/taverna/source/)
-but remember to remove the `-RC1` from the folder name.
+but **remember to remove the `-RC1`** part from the folder name.
 
     svn mv https://dist.apache.org/repos/dist/dev/incubator/taverna/source/taverna-language-0.15.0-incubating-RC2 https://dist.apache.org/repos/dist/release/incubator/taverna/source/taverna-language-0.15.0-incubating -m "Releasing apache taverna-language-0.15.0-incubating"
     svn mv https://dist.apache.org/repos/dist/dev/incubator/taverna/source/taverna-parent-1-incubating-RC2 https://dist.apache.org/repos/dist/release/incubator/taverna/source/taverna-parent-1-incubating -m "Releasing apache taverna-parent-1-incubating"
 
+### Releasing Maven repository
+
+Tick the correct [staging repository](https://repository.apache.org/#stagingRepositories) (perhaps do a quick check of an SHA1 sum against the vote email), then click *Release*.
+It should then propagate to [Apache's release Maven repository](https://repository.apache.org/content/repositories/releases/org/apache/taverna/)
+and eventually mirrored to [Maven Central](http://central.maven.org/maven2/org/apache/taverna/).
+
+
 ### Update download page
 
-Wait 24 hours for the download mirrors to pick up the new release from `dist.apache.org`.
+Wait 24 hours for the download mirrors
+to pick up the new release from `dist.apache.org`, otherwise eager
+users (or users who just happened to want to download that day)
+may get `404 Not Found` errors.
+
+Update (or make) the corresponding pages under http://taverna.incubator.apache.org/download/
+including the correct version number for the Maven dependencies and the release dates.
+
+Download links should be using the mirror redirector https://www.apache.org/dyn/closer.cgi, e.g.
+https://www.apache.org/dyn/closer.cgi/incubator/taverna/source/taverna-language-0.15.0-incubating/taverna-language-0.15.0-incubating-source-release.zip
+while asc/md5/sha1 links should go directly to https://www.apache.org/dist/ - e.g. https://www.apache.org/dist/incubator/taverna/source/taverna-language-0.15.0-incubating/taverna-language-0.15.0-incubating-source-release.zip.asc
+(important bit: `https`)
 
-TODO.
 
 
 ### Removing old versions
 
-TODO
+**After** the download page has been published, the download mirrors have synchronized
+and the new version is live
+you must **remove the old versions** from https://dist.apache.org/repos/dist/release/incubator/taverna/source/
 
-### Releasing Maven repository
+    svn rm https://dist.apache.org/repos/dist/release/incubator/taverna/source/taverna-language-0.14.0-incubating/
+    svn rm https://dist.apache.org/repos/dist/release/incubator/taverna/source/taverna-parent-1-incubating/
 
-Tick the correct [staging repository](https://repository.apache.org/#stagingRepositories) (perhaps do a quick check of an SHA1 sum against the vote email), then click *Release*.
-It should then propagate to [Apache's release Maven repository](https://repository.apache.org/content/repositories/releases/org/apache/taverna/)
-and eventually mirrored to [Maven Central](http://central.maven.org/maven2/org/apache/taverna/).
\ No newline at end of file
+Older versions are archived under http://archive.apache.org/dist/incubator/taverna/source/
+but won't appear on the download mirrors.