You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2012/12/14 09:00:10 UTC
svn commit: r1421710 - in /isis/site/trunk/content/contributors:
release-branch-and-tag-names.md release-process.md
Author: danhaywood
Date: Fri Dec 14 08:00:09 2012
New Revision: 1421710
URL: http://svn.apache.org/viewvc?rev=1421710&view=rev
Log:
isis site : refining release process docs
Modified:
isis/site/trunk/content/contributors/release-branch-and-tag-names.md
isis/site/trunk/content/contributors/release-process.md
Modified: isis/site/trunk/content/contributors/release-branch-and-tag-names.md
URL: http://svn.apache.org/viewvc/isis/site/trunk/content/contributors/release-branch-and-tag-names.md?rev=1421710&r1=1421709&r2=1421710&view=diff
==============================================================================
--- isis/site/trunk/content/contributors/release-branch-and-tag-names.md (original)
+++ isis/site/trunk/content/contributors/release-branch-and-tag-names.md Fri Dec 14 08:00:09 2012
@@ -6,7 +6,7 @@ In Isis the version numbers of core and
(they are not synchronized); therefore the branches and the tag names must
distinguish the releasable module that they refer to.
-The following table suggests the branch name to use when readying the release locally, and the tag name to use when running the `release:prepare` command itself. If the release is voted through, this tag will be the permanent identifier of the release within the git source code repository.
+Usefully, git allows the same name to be used for both branches and for tags; within git they are namespaced to be unique. The table below shows the branch name to use when readying the release locally, and the tag name to use when running the `release:prepare` command itself; as you can see they are identical. As we've chosen to base the branch/tag name on the `artifactId` of the pom of the parent module being released, they also happen to be the defaults provided by the `maven-release-plugin`:
<table>
<tr>
@@ -14,13 +14,12 @@ The following table suggests the branch
<th>Branch name to use while readying the release locally</th>
<th>Tag name pushed during <tt>release:prepare</tt></th>
</tr>
-<tr><td>core</td><td>prepare/core/x.y.z</td><td>release/core/x.y.z</td></tr>
-<tr><td>objectstore/xxx</td><td>prepare/objectstore/xxx/x.y.z</td><td>release/objectstore/xxx/x.y.z</td></tr>
-<tr><td>profilestore/xxx</td><td>prepare/profilestore/xxx/x.y.z</td><td>release/profilestore/xxx/x.y.z</td></tr>
-<tr><td>progmodel/xxx</td><td>prepare/progmodel/xxx/x.y.z</td><td>release/progmodel/xxx/x.y.z</td></tr>
-<tr><td>security/xxx</td><td>prepare/security/xxx/x.y.z</td><td>release/security/xxx/x.y.z</td></tr>
-<tr><td>viewer/xxx</td><td>prepare/viewer/xxx/x.y.z</td><td>release/viewer/xxx/x.y.z</td></tr>
-<tr><td>example/archetype/xxx</td><td>prepare/archetype/xxx/x.y.z</td><td>release/archetype/xxx/x.y.z</td></tr>
+<tr><td>core</td><td>isis-x.y.z</td><td>isis-x.y.z</td></tr>
+<tr><td>objectstore/xxx</td><td>isis-objectstore-xxx-x.y.z</td><td>isis-objectstore-xxx-x.y.z</td></tr>
+<tr><td>profilestore/xxx</td><td>isis-profilestore-xxx-x.y.z</td><td>isis-profilestore-xxx-x.y.z</td></tr>
+<tr><td>progmodel/xxx</td><td>isis-progmodel-xxx-x.y.z</td><td>isis-progmodel-xxx-x.y.z</td></tr>
+<tr><td>security/xxx</td><td>isis-security-xxx-x.y.z</td><td>isis-security-xxx-x.y.z</td></tr>
+<tr><td>viewer/xxx</td><td>isis-viewer-xxx-x.y.z</td><td>isis-viewer-xxx-x.y.z</td></tr>
</table>
where `xxx` represents a specific component or archetype being released.
Modified: isis/site/trunk/content/contributors/release-process.md
URL: http://svn.apache.org/viewvc/isis/site/trunk/content/contributors/release-process.md?rev=1421710&r1=1421709&r2=1421710&view=diff
==============================================================================
--- isis/site/trunk/content/contributors/release-process.md (original)
+++ isis/site/trunk/content/contributors/release-process.md Fri Dec 14 08:00:09 2012
@@ -91,23 +91,38 @@ git checkout master
git pull --ff-only
</pre>
-Then, create a release branch in your local Git repo, as per [these standards](release-branch-and-tag-names.html). For example, to prepare a release of `core`, use:
+Then, determine/confirm the version number of the module being released. This should be in line with our [semantic versioning policy](release-semantic-versioning.html).
+
+Next, create a release branch in your local Git repo, using the version number determined and as per [these standards](release-branch-and-tag-names.html). For example, to prepare a release 1.0.0 of `core`, use:
<pre>
-git checkout -b prepare/core/x.y.z
+git checkout -b isis-1.0.0
</pre>
All release preparation is done locally; if we are successful, this branch will be pushed back to master.
-
{note
Unless otherwise stated, you should assume that all remaining steps should be performed in the base directory of the module being released.
}
+Finally, make sure you have a JIRA ticket open against which to perform all commits.
+
## Code Prerequisites
Before making any formal release, there are a number of prerequisites that should always be checked.
+### Update the version number
+
+The version number of the parent pom should reflect the branch name that you are now on (with a `-SNAPSHOT` suffix). In many cases this will have been done already during earlier development; but confirm that it has been updated. If it has not, make the change.
+
+For example, if releasing `core` version `1.2.3`, the POM should read:
+
+<pre>
+<groupId>org.apache.isis.core</groupId>
+<artifactId>isis</artifactId>
+<version>1.2.3-SNAPSHOT</version>
+</pre>
+
### Update Apache parent (Isis Core only)
If releasing Isis Core, check (via [http://search.maven.org](http://search.maven.org)) whether there is a newer version of the Apache parent `org.apache:apache`.
@@ -287,6 +302,8 @@ This obviously requires that the core ha
also releasing core at the same time as the component, then you will need to go through the release process for core first, then come back round to release the component.
}
+Also, if there is a tck test module with `oa.isis.core:isis-core-tck` as its parent, then make sure that it is also updated.
+
Next, delete all Isis artifacts from your local Maven repo:
<pre>
@@ -425,10 +442,21 @@ What is the release version for "Apache
1.0.0: :
</pre>
-Then answer the next three questions, either accepting the offered values or overriding as per [release tag names](release-branch-and-tag-names.html):
+Then answer the next three questions.
+
+For the first, release version, you can generally accept the default; Maven just strips off the `-SNAPSHOT` suffix:
+
<pre>
What is the release version for "Apache Isis Core"? (org.apache.isis.core:isis) 1.0.0: :
-What is SCM release tag or label for "Apache Isis Core"? (org.apache.isis.core:isis) isis-1.0.0: : <b>release/core/1.0.0</b>
+</pre>
+
+For the next question, SCM release tag, you can generally accept the default. Maven's offered value is a concatenation of the `artifactId` and the version entered above. This is the same as our [standard](release-branch-and-tag-names.html):
+<pre>
+What is SCM release tag or label for "Apache Isis Core"? (org.apache.isis.core:isis) isis-1.0.0: :
+</pre>
+
+For the final question, new development version", the minor 'z' part of the version should be incremented, and `-SNAPSHOT` appended. Generally you can, once more, accept the default:
+<pre>
What is the new development version for "Apache Isis Core"? (org.apache.isis.core:isis) 1.0.1-SNAPSHOT:
</pre>
@@ -449,11 +477,11 @@ Because we were required to delete `rele
### Post-prepare sanity check
-You should end up with artifacts in your local repo with the new version `x.y.z`. There are then a couple of sanity checks that you can perform:
+You should end up with artifacts in your local repo with the new version `1.2.3`. There are then a couple of sanity checks that you can perform:
* unzip the source-release ZIP and check it builds
- For example, if building core, then the ZIP file will be called `isis-x.y.z-source-release.zip` and should reside in `~/.m2/repository/org/apache/isis/core/isis/x.y.z` directory.
+ For example, if building core, then the ZIP file will be called `isis-1.2.3-source-release.zip` and should reside in `~/.m2/repository/org/apache/isis/core/isis/1.2.3` directory.
Unzip in a new directory, and build.
@@ -581,7 +609,7 @@ Unfortunately, Nexus does not seem to al
Finally, push the tag that was created locally to the central origin server, for example:
<pre>
-git push origin tag release/core/x.y.z
+git push origin tag release/core/1.2.3
</pre>
{note
@@ -599,19 +627,19 @@ The following boilerplate is for a relea
Use the following subject:
<pre>
-[VOTE] Apache Isis Core release x.y.z
+[VOTE] Apache Isis Core release 1.2.3
</pre>
And use the following body:
<pre>
-I've staged a release for Apache Isis Core, namely x.y.z.
+I've staged a release for Apache Isis Core, namely 1.2.3.
The artifacts have been staged to staging repository on repository.apache.org:
-* https://repository.apache.org/content/repositories/orgapacheisis-nnn/org/apache/isis/core/isis/x.y.z/isis-x.y.z-source-release.zip (zip file)
-* https://repository.apache.org/content/repositories/orgapacheisis-nnn/org/apache/isis/core/isis/x.y.z/isis-x.y.z-source-release.zip.asc (signature)
+* https://repository.apache.org/content/repositories/orgapacheisis-nnn/org/apache/isis/core/isis/1.2.3/isis-1.2.3-source-release.zip (zip file)
+* https://repository.apache.org/content/repositories/orgapacheisis-nnn/org/apache/isis/core/isis/1.2.3/isis-1.2.3-source-release.zip.asc (signature)
-In the source code repo the code has been tagged as release/isis-x.y.z.
+In the source code repo the code has been tagged as release/isis-1.2.3.
Our website contains some suggestions of how to verify the release, see
http://isis.apache.org/contributors/verifying-releases.html
@@ -635,7 +663,7 @@ Once the vote has completed, post the re
For example, use the following subject for a vote on Isis Core:
<pre>
-[RESULT] [VOTE] Apache Isis Core release x.y.z
+[RESULT] [VOTE] Apache Isis Core release 1.2.3
</pre>
for a successful vote, using the body:
@@ -658,19 +686,19 @@ If the vote has been unsuccessful, then:
* delete your local branch, for example:
<pre>
- git branch -D prepare/core/x.y.z
+ git branch -D isis-1.2.3
</pre>
* delete the tag that was created locally, for example:
<pre>
- git tag -d release/core/x.y.z
+ git tag -d release/core/1.2.3
</pre>
* delete the remote origin server's tag, for example:
<pre>
- git push origin --delete tag release/core/x.y.z
+ git push origin --delete tag release/core/1.2.3
</pre>
* drop the staging repository in [Nexus](http://repository.apache.org)
@@ -740,15 +768,15 @@ If necessary, checkout this directory st
svn co https://dist.apache.org/repos/dist/release/isis isis-dist
</pre>
-Next, add the new release into the approprite directory, and delete any previous release. For example, if releasing Apache Isis Core `x.y.z`, superceding a previous release `p.q.r`, use:
+Next, add the new release into the approprite directory, and delete any previous release. For example, if releasing Apache Isis Core `1.2.3`, superceding a previous release `p.q.r`, use:
<pre>
cd core
svn delete isis-p.q.r-source-release.zip
svn delete isis-p.q.r-source-release.zip.asc
-svn add isis-x.y.z-source-release.zip
-svn add isis-x.y.z-source-release.zip.asc
-svn commit -m "publishing isis-x.y.z source to dist.apache.org"
+svn add isis-1.2.3-source-release.zip
+svn add isis-1.2.3-source-release.zip.asc
+svn commit -m "publishing isis-1.2.3 source to dist.apache.org"
</pre>
@@ -770,7 +798,7 @@ Update the Isis CMS website:
Typically this be will a new page in the core section or for one of the components. Make a note of the URL of this new page (for use in the mailing list announcement).
- For example, a new release of Isis Core would have a release notes page `http://isis.apache.org/core/release-notes-x.y.z.html`
+ For example, a new release of Isis Core would have a release notes page `http://isis.apache.org/core/release-notes-1.2.3.html`
* On the core/component's about page, provide a link to release notes providing details of the contents of the release.
@@ -786,14 +814,14 @@ Announce the release to dev@isis.apache.
For example, for a release of Apache Isis Core, use the following subject:
<pre>
-Subject: [ANN] Apache Isis version x.y.z Released
+Subject: [ANN] Apache Isis version 1.2.3 Released
</pre>
And use the following body (summarizing the main points as required):
<pre>
The Isis team is pleased to announce the release of
-Apache Isis Core version x.y.z
+Apache Isis Core version 1.2.3
<i>summary of the main points of the release</i>
@@ -806,7 +834,7 @@ Enjoy!
-The Isis team
-[1] http://isis.apache.org/core/release-notes-x.y.z.html
+[1] http://isis.apache.org/core/release-notes-1.2.3.html
[2] http://search.maven.org
[3] http://isis.apache.org/download.html
</pre>
@@ -825,10 +853,10 @@ Because we release from a branch, the ch
<pre>
git checkout master # update master with latest
git pull
-git checkout prepare/core/x.y.z # apply branch commits onto master
+git checkout isis-1.2.3 # apply branch commits onto master
git rebase master
git checkout master
-git branch -D prepare/core/x.y.z # branch no longer needed
+git branch -D isis-1.2.3 # branch no longer needed
</pre>
Next, do a sanity check that everything builds ok:
@@ -869,7 +897,7 @@ Open up the `src/main/resources/archetyp
<pre>
<properties>
- <isis.version>x.y.z-SNAPSHOT</isis.version>
+ <isis.version>1.2.3-SNAPSHOT</isis.version>
</properties>
</pre>
@@ -882,7 +910,7 @@ Open up the `src/site/site.xml` in the `
<pre>
<skin>
...
- <version>x.y.z-SNAPSHOT</version>
+ <version>1.2.3-SNAPSHOT</version>
</skin>
</pre>