directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Directory Development > Releasing Studio
Date Fri, 13 Jan 2012 13:17:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/1/_/styles/combined.css?spaceKey=DIRxDEV&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/DIRxDEV/Releasing+Studio">Releasing
Studio</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~pamarcelot">Pierre-Arnaud
Marcelot</a>
    </h4>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-added-lines" style="background-color: #dfd;">Since
we are using Nexus for releases the release process is as follows (see also [http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven]).
<br> <br>h3. 1. Test the Project <br>{noformat} <br>$ mvn release:prepare
-DdryRun=true <br>{noformat} <br> <br>Be aware that this phase will ask
you about the release version of Studio modules. <br>We use a release number scheme
that combines a version number and the date of the release. <br>An example of this release
number scheme is _&#39;2.0.0.v20120111&#39;_. <br> <br>h3. 2. Deploy a
Snapshot <br>{noformat} <br>$ mvn deploy <br>{noformat} <br> <br>This
is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key) <br>
<br>h3. 3. Prepare the Release <br> <br>First, clean the previous test release
attempt with: <br>{noformat} <br>$ mvn release:clean <br>{noformat} <br>
<br>Next, edit the root _&#39;pom.xml&#39;_ file to comment the _&#39;repository&#39;_
and _&#39;application&#39;_ profiles, as we don&#39;t want these modules (and
their sub-modules) to be released in the Maven repository. <br> <br>Also, edit
the _&#39;pom.xml&#39;_ file of the _&#39;Apache Directory Studio Libraries Plugins&#39;_
module and remove the code related to skipping the deployment of 3rd party plugins: <br>{noformat}
<br>  &lt;build&gt; <br>    &lt;plugins&gt; <br>       &lt;!--
Skip deployment of 3rd party plugins. This causes problems when  <br>            deploying
snapshots because the 3rd party plugins don&#39;t have a  <br>            snapshot
version. --&gt; <br>       &lt;plugin&gt; <br>         &lt;artifactId&gt;maven-deploy-plugin&lt;/artifactId&gt;
<br>         &lt;configuration&gt; <br>           &lt;skip&gt;true&lt;/skip&gt;
<br>        &lt;/configuration&gt; <br>      &lt;/plugin&gt; <br>
   &lt;/plugins&gt; <br>  &lt;/build&gt; <br>{noformat} <br>
<br>Then, prepare the release with: <br>{noformat} <br>$ mvn release:prepare
<br>{noformat} <br> <br>This creates a tag here: [http://svn.apache.org/viewvc/directory/studio/tags/]
<br> <br>h3. 4. Stage the Release <br>{noformat} <br>$ mvn release:perform
<br>{noformat} <br> <br>This deploys the release to a staging repository.
Go to [https://repository.apache.org/index.html#stagingRepositories] and close the staging
repository. <br> <br>h3. 5. Deploy the Site <br>{noformat} <br>$ cd
target/checkout <br>$ mvn site-deploy <br>{noformat} <br> <br>This
creates and deploys the site via ssh to people.apache.org/www/directory.apache.org/studio/gen-docs.
<br> <br>Edit the people.apache.org/www/directory.apache.org/studio/gen-docs/index.html
file and add the deployed site to the list. <br> <br>h3. 6. Generate the distribution
packages <br> <br>Move into the _&#39;application&#39;_ sub-module: <br>{noformat}
<br>$ cd application <br>{noformat} <br> <br>Edit the _&#39;pom.xml&#39;_
files of this sub-modules and all other (sub-)sub-modules to fix the parent version which
still refers to the old version number (it was not modified during the release process because
the _&#39;application&#39;_ profile was commented): <br>{noformat} <br>$
text-editor-command pom.xml */pom.xml <br>{noformat} <br> <br>Run the following
command to generate all the distribution packages: <br>{noformat} <br>$ mvn clean
install -Prelease <br>{noformat} <br> <br>Now, you have all the distribution
packages available at _&#39;../target/release&#39;_: <br>{noformat} <br>$
ls -l ../target/release <br>{noformat} <br> <br>h3. 7. Publish Distribution
Packages <br>{noformat} <br>$ cd ../target/release <br>$ scp apache-ldap-api-&lt;version&gt;-*
people.apache.org:public_html/shared-&lt;version&gt;/ <br>{noformat} <br>
<br>h3. 8. Vote <br>Start a 72h vote at the dev mailing list. <br> <br>h3.
9. Release <br>If the vote succeeds Studio project can be released. <br> <br>Go
to [https://repository.apache.org/index.html#stagingRepositories] and release the staging
repository so all artifacts are published to Maven central. <br> <br>Move the
distribution packages to people.apache.org/www/www.apache.org/dist/directory/studio. <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br> <br> <br> <br> <br>
<br> <br> <br> <br> <br></td></tr>
            <tr><td class="diff-unchanged" >{warning:title=Outdated}{warning}
<br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <p>Since we are using Nexus for releases the release process is as follows (see
also <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven"
class="external-link" rel="nofollow">http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven</a>).</p>

<h3><a name="ReleasingStudio-1.TesttheProject"></a>1. Test the Project</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:prepare -DdryRun=true
</pre>
</div></div>

<p>Be aware that this phase will ask you about the release version of Studio modules.<br/>
We use a release number scheme that combines a version number and the date of the release.<br/>
An example of this release number scheme is <em>'2.0.0.v20120111'</em>.</p>

<h3><a name="ReleasingStudio-2.DeployaSnapshot"></a>2. Deploy a Snapshot</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn deploy
</pre>
</div></div>

<p>This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and
GPG key)</p>

<h3><a name="ReleasingStudio-3.PreparetheRelease"></a>3. Prepare the Release</h3>

<p>First, clean the previous test release attempt with:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:clean
</pre>
</div></div>

<p>Next, edit the root <em>'pom.xml'</em> file to comment the <em>'repository'</em>
and <em>'application'</em> profiles, as we don't want these modules (and their
sub-modules) to be released in the Maven repository.</p>

<p>Also, edit the <em>'pom.xml'</em> file of the <em>'Apache Directory
Studio Libraries Plugins'</em> module and remove the code related to skipping the deployment
of 3rd party plugins:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>  &lt;build&gt;
    &lt;plugins&gt;
       &lt;!-- Skip deployment of 3rd party plugins. This causes problems when 
            deploying snapshots because the 3rd party plugins don't have a 
            snapshot version. --&gt;
       &lt;plugin&gt;
         &lt;artifactId&gt;maven-deploy-plugin&lt;/artifactId&gt;
         &lt;configuration&gt;
           &lt;skip&gt;true&lt;/skip&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
</pre>
</div></div>

<p>Then, prepare the release with:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:prepare
</pre>
</div></div>

<p>This creates a tag here: <a href="http://svn.apache.org/viewvc/directory/studio/tags/"
class="external-link" rel="nofollow">http://svn.apache.org/viewvc/directory/studio/tags/</a></p>

<h3><a name="ReleasingStudio-4.StagetheRelease"></a>4. Stage the Release</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn release:perform
</pre>
</div></div>

<p>This deploys the release to a staging repository. Go to <a href="https://repository.apache.org/index.html#stagingRepositories"
class="external-link" rel="nofollow">https://repository.apache.org/index.html#stagingRepositories</a>
and close the staging repository.</p>

<h3><a name="ReleasingStudio-5.DeploytheSite"></a>5. Deploy the Site</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd target/checkout
$ mvn site-deploy
</pre>
</div></div>

<p>This creates and deploys the site via ssh to people.apache.org/www/directory.apache.org/studio/gen-docs.</p>

<p>Edit the people.apache.org/www/directory.apache.org/studio/gen-docs/index.html file
and add the deployed site to the list.</p>

<h3><a name="ReleasingStudio-6.Generatethedistributionpackages"></a>6. Generate
the distribution packages</h3>

<p>Move into the <em>'application'</em> sub-module:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd application
</pre>
</div></div>

<p>Edit the <em>'pom.xml'</em> files of this sub-modules and all other (sub-)sub-modules
to fix the parent version which still refers to the old version number (it was not modified
during the release process because the <em>'application'</em> profile was commented):</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ text-editor-command pom.xml */pom.xml
</pre>
</div></div>

<p>Run the following command to generate all the distribution packages:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ mvn clean install -Prelease
</pre>
</div></div>

<p>Now, you have all the distribution packages available at <em>'../target/release'</em>:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ ls -l ../target/release
</pre>
</div></div>

<h3><a name="ReleasingStudio-7.PublishDistributionPackages"></a>7. Publish
Distribution Packages</h3>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ cd ../target/release
$ scp apache-ldap-api-&lt;version&gt;-* people.apache.org:public_html/shared-&lt;version&gt;/
</pre>
</div></div>

<h3><a name="ReleasingStudio-8.Vote"></a>8. Vote</h3>
<p>Start a 72h vote at the dev mailing list.</p>

<h3><a name="ReleasingStudio-9.Release"></a>9. Release</h3>
<p>If the vote succeeds Studio project can be released.</p>

<p>Go to <a href="https://repository.apache.org/index.html#stagingRepositories" class="external-link"
rel="nofollow">https://repository.apache.org/index.html#stagingRepositories</a> and
release the staging repository so all artifacts are published to Maven central.</p>

<p>Move the distribution packages to people.apache.org/www/www.apache.org/dist/directory/studio.</p>
































<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16"
height="16" align="absmiddle" alt="" border="0"></td><td><b>Outdated</b><br
/></td></tr></table></div>

<p>For these examples we'll presume a release on trunk of studio. For releases on the
tags or branches change the svn checkout line to accomodate.</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ svn co https://svn.apache.org/repos/asf/directory/studio/trunk studio
$ cd studio
$ mvn -Prelease -DdryRun=true release:prepare    # Dry-run first.  
... 
... Make sure the change made by the release plugin is correct!
...
$ mvn release:clean      # Clean up the temporary files created by the dry-run.
$ mvn -Prelease release:prepare    # Copy to tags directory.
$ mvn -Prelease release:perform    # Upload the released artifacts to the maven repository.
... 
... Make sure the jars/poms and their signature files are properly deployed to the m2-ibiblio-sync

... repository on people.apache.org before running the clean goal or else you cannot rollback
the
... release.
...
$ mvn release:clean      # Clean up the temporary files.
</pre>
</div></div>

<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16"
height="16" align="absmiddle" alt="" border="0"></td><td>During the prepare
goal's execution you'll be asked a number of questions.  Please pay close attention to each
question instead of hitting return everytime.  In particular there is a question about what
you want to call the tag.  If you do not specify the correct tag which should be the release
number 1.3.0 in this case, maven will use parent-1.3.0 instead without the <b>parent-</b>
prefix.  We don't want that so pay attention.  Look here if you have any questions regarding
what release tags should be for the studio subproject: 

<p><a href="http://svn.apache.org/viewvc/directory/studio/tags" class="external-link"
rel="nofollow">http://svn.apache.org/viewvc/directory/studio/tags</a></p></td></tr></table></div>

<p>These commands will build, tag, sign, and deploy studio artifacts and their signature
files to the repository. Check the following URLs during different stages of the process to
see Maven at work:</p>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'>Stage</th>
<th class='confluenceTh'>URL</th>
</tr>
<tr>
<td class='confluenceTd'>after release:prepare</td>
<td class='confluenceTd'> <a href="http://svn.apache.org/viewvc/directory/studio/tags"
class="external-link" rel="nofollow">http://svn.apache.org/viewvc/directory/studio/tags</a>
</td>
</tr>
<tr>
<td class='confluenceTd'>during release:perform</td>
<td class='confluenceTd'> <a href="http://people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/directory/studio/"
class="external-link" rel="nofollow">http://people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/directory/studio/</a>
</td>
</tr>
</tbody></table>
</div>

    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/DIRxDEV/Releasing+Studio">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=97472&revisedVersion=5&originalVersion=4">View
Changes</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message