maven-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aherit...@apache.org
Subject svn commit: r423274 - /maven/maven-1/core/trunk/xdocs/developers/making-releases.xml
Date Tue, 18 Jul 2006 22:46:29 GMT
Author: aheritier
Date: Tue Jul 18 15:46:29 2006
New Revision: 423274

URL: http://svn.apache.org/viewvc?rev=423274&view=rev
Log:
Update our release process. Add information on how to sign artefacts and a script template
to sign them automatically.

Modified:
    maven/maven-1/core/trunk/xdocs/developers/making-releases.xml

Modified: maven/maven-1/core/trunk/xdocs/developers/making-releases.xml
URL: http://svn.apache.org/viewvc/maven/maven-1/core/trunk/xdocs/developers/making-releases.xml?rev=423274&r1=423273&r2=423274&view=diff
==============================================================================
--- maven/maven-1/core/trunk/xdocs/developers/making-releases.xml (original)
+++ maven/maven-1/core/trunk/xdocs/developers/making-releases.xml Tue Jul 18 15:46:29 2006
@@ -1,167 +1,153 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!-- 
-/*
- * Copyright 2001-2004 The Apache Software Foundation.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
+ /*
+  * Copyright 2001-2004 The Apache Software Foundation.
+  * 
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  * 
+  *      http://www.apache.org/licenses/LICENSE-2.0
+  * 
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+-->
 <document>
   <properties>
     <title>Releasing Plugins</title>
     <author email="brett@apache.org">Brett Porter</author>
+    <author email="aheritier@apache.org">Arnaud Heritier</author>
   </properties>
   <body>
     <section name="Following Best Practices">
-      <p>
-        At Maven, we eat our own dog food! Please make sure you are familiar with the
-        <a href="../using/bestpractices.html">Best Practices</a> document and
follow those techniques.
-      </p>
+      <p>At Maven, we eat our own dog food! Please make sure you are familiar with
the <a href="../using/bestpractices.html">Best Practices</a> document and follow
those techniques.</p>
+    </section>
+    <section name="Prerequesites">
+      <p>You have do these steps only for your first release.</p>
+      <subsection name="Setup your maven settings">
+        <p>You must define the following properties in <code>~/build.properties</code>.
(Note: you may want to put these in <code>maven-plugins/plugin-parent/build.properties</code>
instead if you need to define them differently for other projects).</p>
+        <ul>
+          <li><code>maven.repo.apache.releases.username</code> - your apache
username</li>
+          <li><code>maven.repo.apache.releases.privatekey</code> - the
filename of your SSH private key</li>
+          <li><code>maven.repo.apache.releases.passphrase</code> - the
passphrase for your private key (<b>not</b> your Apache password)</li>
+          <li><code>maven.announcement.mail.from</code> - Your name and
email address, as subscribed to the users and developers mailing lists, e.g. <code>Brett
Porter &lt;brett@apache.org&gt;</code></li>
+          <li><code>maven.announcement.mail.server</code> - The SMTP server
to use for sending the announcement mail.</li>
+        </ul>
+      </subsection>
+      <subsection name="Generate a code signing key (PGP)">
+        <p>You'll find some useful information here : <a href="http://www.apache.org/dev/release-signing.html"
target="_blank">http://www.apache.org/dev/release-signing.html</a>.</p>
+        <p>To sum up :</p>
+        <ol>
+          <li>
+            <p>Create your PGP key : </p><source>$ gpg --gen-key</source>
+            <p>Keep the default settings.</p>
+            <p>Enter your personal information :</p>
+            <source><![CDATA[
+Real name: FirstName LastName
+Email address: YourEMail@apache.org
+Comment: CODE SIGNING KEY
+]]></source>
+            <p>It creates a key with the following user ID like this :</p><source>FirstName
LastName (CODE SIGNING KEY) &lt;YourEMail @ apache.org&gt;</source>
+          </li>
+          <li>
+            <p>Export it :</p>
+            <source>$ (gpg --list-sigs "FirstName LastName" &amp;&amp; gpg
--armor --export "FirstName LastName") > ~/MY_KEYS</source>
+          </li>
+          <li>
+            <p>And append the result to the KEYS file stored in the root directory
of the m1's core in subversion.</p>
+          </li>
+          <li>
+            <p>To finish, create your own script using the following template to sign
your releases and don't forget to add it in your PATH :</p>
+            <source><![CDATA[
+#!/bin/sh
+# Use your PGP key ID here :
+MY_KEY="FirstName LastName (CODE SIGNING KEY) <YourEMail@apache.org>"
+echo -n "PGP Key Password: "
+stty -echo
+read PASSWORD
+stty echo
+echo ""
+for FILE in $(find . -not '(' -name "*.md5" -or -name "*.sha1" -or -name "*.asc" -or -name
"*-version" ')' -and -type f -and -user $USER) ; do
+  signature=${FILE}.asc
+  if [ ! -f ${signature} ]
+  then
+    echo -n "Signing: $FILE ... "
+    echo "$PASSWORD" | gpg --default-key "$MY_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd
0 "$FILE" && echo done.
+    gpg --verify "$FILE.asc" "$FILE"
+  else
+	  echo "${FILE} was already signed"
+  fi
+done
+]]></source>
+            <p>This script will ask you your pgp key password and will recursively
sign all artefacts YOU deployed and which were not yet signed.</p>
+          </li>
+        </ol>
+      </subsection>
     </section>
     <section name="Releasing Maven or a Plugin">
-      <p>
-      Prerequesites: you must define the following properties in
-        <code>~/build.properties</code>. (Note: you may
-      want to put these in
-        <code>maven-plugins/plugin-parent/build.properties</code> instead if
you need to define
-      them differently for other projects).
-      </p>
+      <subsection name="Release process">
+        <p>For more general notes on making a release, please see the <a href="../using/releasing.html">Releasing</a>
documentation in the User's Guide.</p>
+        <ul>
+          <li>
+            <p>Run <code>maven scm:prepare-release</code> and enter the
appropriate tag (<code>MAVEN_[PROJECTNAME]_[MAJOR]_[MINOR]</code>) and version.</p>
+          </li>
+          <li>
+            <p>Produce a clean build using <code>maven -Dmaven.repo.list=apache.releases
-Dmaven.site.deploy.live=true scm:perform-release</code>. When prompted for the tag,
enter the one used in the previous step. When prompted for the goal, enter <code>plugin:repository-deploy,source:deploy,javadoc:deploy,site:deploy</code>
for plugins, or <code>jar:deploy,source:deploy,site:deploy</code> for an individual
JAR. To release a Maven distribution, see below.</p>
+          </li>
+          <li>
+            <p>Sign your artefacts. Logon to people.apache.org and launch your signing
script in the directory <code>/www/people.apache.org/repo/m1-ibiblio-rsync-repository/maven/</code></p>
+          </li>
+          <li>
+            <p>Check for the new version at <a href="http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/plugins/">http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/plugins/</a>
or <a href="http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/jars/">http://people.apache.org/repo/m1-ibiblio-rsync-repository/maven/jars/</a>.</p>
+          </li>
+          <li>
+            <p>Go to the <a href="http://jira.codehaus.org/secure/project/ViewProjects.jspa">JIRA
administration page</a> for the Maven subproject you have just released (Note that you
need to be a JIRA administrator for this project) and <strong>release</strong>
the version. Also make sure to <strong>add</strong> a new version for the following
development version. This is required so that developers can assign a "fix for" version to
issues.</p>
+          </li>
+          <li>
+            <p>Run <code>maven announcement</code>. Edit this, then send
it in a release email to the Maven user and developer lists. If you are happy with the default
announcement, run <code>maven announcement:mail</code>.</p>
+          </li>
+        </ul>
+      </subsection>
+    </section>
+    <section name="Releasing a Maven Distribution">
+      <p>There are a couple of additional steps when releasing a Maven distribution.</p>
       <ul>
         <li>
-          <code>maven.repo.apache.releases.username</code> - your apache username
+          <p>Run <code>maven maven:build-plugin-profile</code> and check
the versions are what you expect to distribute</p>
         </li>
         <li>
-          <code>maven.repo.apache.releases.privatekey</code> - the filename of
your SSH private key
+          <p>Update the website files for the download links and release notes</p>
         </li>
         <li>
-          <code>maven.repo.apache.releases.passphrase</code> - the passphrase
for your private key (
-          <b>not</b> your Apache password)
+          <p>Run <code>scm:perform-release</code> with the goals <code>jar:deploy,source:deploy,javadoc:deploy,maven:installer</code>.
Do this on Windows so that the .exe file is generated</p>
         </li>
         <li>
-          <code>maven.announcement.mail.from</code> - Your name and email address,
as subscribed to the users and
-      developers mailing lists, e.g.
-          <code>Brett Porter &lt;brett@apache.org&gt;</code>
+          <p>Manually upload the distributions to the distribution location (under
<code>/binaries/</code>) and sign them.</p>
         </li>
         <li>
-          <code>maven.announcement.mail.server</code> - The SMTP server to use
for sending the announcement mail.
+          <p>Run <code>scm:perform-release</code> with the <code>site:deploy</code>
goal, and mail out release notes</p>
         </li>
       </ul>
-      <p><b>Release process</b></p>
-      <p>
-        For more general notes on making a release, please see the <a href="../using/releasing.html">Releasing</a>
-        documentation in the User's Guide.
-      </p>
+    </section>
+    <section name="Some related FAQs">
       <ul>
         <li>
-          <p>Run
-            <code>maven scm:prepare-release</code> and enter the appropriate
tag
-          (
-            <code>MAVEN_[PROJECTNAME]_[MAJOR]_[MINOR]</code>) and version.
-          </p>
-        </li>
-        <li>
-          <p>Produce a clean build using
-            <code>maven -Dmaven.repo.list=apache.releases -Dmaven.site.deploy.live=true
scm:perform-release</code>.
-        When prompted for the tag, enter the one used in the previous step. When prompted
for the goal, enter
-            <code>plugin:repository-deploy,site:deploy</code> for plugins, or
-            <code>jar:deploy,site:deploy</code> for an
-        individual JAR. To release a Maven distribution, see below.
-          </p>
-        </li>
-        <li>
-          <p>
-        Check for the new version at
-            <a href="http://www.apache.org/dist/java-repository/maven/plugins/">http://www.apache.org/dist/java-repository/maven/plugins/</a>
or
-            <a href="http://www.apache.org/dist/java-repository/maven/jars/">http://www.apache.org/dist/java-repository/maven/jars/</a>.
-          </p>
-        </li>
-        <li>
-          <p>
-          Go to the
-            <a href="http://jira.codehaus.org/secure/project/ViewProjects.jspa">JIRA
administration page</a>
-          for the Maven subproject you have just released (Note that you need to be a JIRA
administrator for this project) and
-            <strong>release</strong> the version. Also make sure to
-            <strong>add</strong> a new version for the following
-          development version. This is required so that issue creators/developers can assign
a "fix for" version
-          to issues.
-          </p>
-        </li>
-        <li>
-          <p>Run
-            <code>maven announcement</code>. Edit this, then send it in a release
email to the Maven user and
-            developer lists. If you are happy with the default announcement, run
-            <code>maven announcement:mail</code>.
-          </p>
+          <p><b>Q</b> : When would I do a release?</p>
+          <p><b>A</b> : Plugins have their own release cycle now. So you
can make a release whenever there is a change that you want to get into the hands of the users.
This should be for major bugfixes and thoroughly tested and complete new features. You may
also decide to make periodical releases every couple of months if there have only been minor
bugfixes.</p>
         </li>
-      </ul>
-    </section>
-    <section name="Releasing a Maven Distribution">
-      <p>
-        There are a couple of additional steps when releasing a Maven distribution.
-      </p>
-      <ul>
-        <li>Run
-          <code>maven maven:build-plugin-profile</code> and check the versions
are what you expect to distribute
+        <li>
+          <p><b>Q</b> : What is the convention for versioning?</p>
+          <p><b>A</b> : Rewrites and changes that break compatibility are
a major version number change. Announcements for these plugins should details what old functionality
would be broken and link to a migration document on the plugin project web site. Minor version
increments are for feature enhancements, major bugfixes and groups of bugfixes. These versions
can go beyond 10: eg <code>1.13</code>. A third version increment is optional
and signifies minor updates. These may also be deployed as snapshots or users may just be
asked to build out of CVS to acquire these fixes.</p>
         </li>
-        <li>Update the website files for the download links and release notes</li>
-        <li>Run
-          <code>scm:perform-release</code> with the goals
-          <code>jar:deploy,maven:installer</code>. Do this on Windows
-          so that the .exe file is generated
-        </li>
-        <li>Sign the distributions, and manually upload them to the distribution location
(under
-          <code>/binaries/</code>
-        </li>
-        <li>Run
-          <code>scm:perform-release</code> with the
-          <code>site:deploy</code> goal, and mail out release notes
+        <li>
+          <p><b>Q</b> : Who decides when a plugin can be released?</p>
+          <p><b>A</b> : The lead developer of a plugin has the responsibility
for making sure releases happen, but must first hold a vote on the Maven Developer list before
cutting the release. The vote should detail the changes made and confirm that the testing
has been performed and that there is no pending work that should hold up the release.</p>
         </li>
       </ul>
     </section>
-  <section name="Some related FAQs">
-    <ul>
-      <li>
-        <p> Q: When would I do a release?</p>
-        <p> A: Plugins have their own release cycle now. So you can make a release
whenever there is a
-          change that you want to get into the hands of the users. This should be
-          for major bugfixes and thoroughly tested and complete new features.
-          You may also decide to make periodical releases every couple of months if there
have only been
-          minor bugfixes.
-        </p>
-      </li>
-      <li>
-        <p> Q: What is the convention for versioning? </p>
-        <p> A: Rewrites and changes that break compatibility are a major version number
change.
-          Announcements for these plugins should details what old functionality would be
broken and
-          link to a migration document on the plugin project web site.
-          Minor version increments are for feature enhancements, major bugfixes and groups
of bugfixes.
-          These versions can go beyond 10: eg
-          <code>1.13</code>.
-          A third version increment is optional and signifies minor updates. These may also
be deployed as
-          snapshots or users may just be asked to build out of CVS to acquire these fixes.
-        </p>
-      </li>
-      <li>
-        <p> Q: Who decides when a plugin can be released? </p>
-        <p> A: The lead developer of a plugin has the responsibility for making sure
releases happen,
-          but must first hold a vote on the Maven Developer list before cutting the release.
The vote should detail
-          the changes made and confirm that the testing has been performed and that there
is no pending work
-          that should hold up the release.
-        </p>
-      </li>
-    </ul>
-  </section>
-</body>
+  </body>
 </document>
-



Mime
View raw message