Skip to main content
summaryrefslogtreecommitdiffstats
blob: f52f60b47e7d81a66f475dc48729dada22d69f67 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Releasing Jetty</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, spdy, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty : The Definitive Reference"><link rel="up" href="advanced-contributing.html" title="Chapter&nbsp;35.&nbsp;Contributing to Jetty"><link rel="prev" href="contributing-patches.html" title="Contributing Patches"><link rel="next" href="release-testing.html" title="Testing a Jetty Release"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><script type="text/javascript" src="js/shCore.js"></script><script type="text/javascript" src="js/shBrushJava.js"></script><script type="text/javascript" src="js/shBrushXml.js"></script><script type="text/javascript" src="js/shBrushBash.js"></script><script type="text/javascript" src="js/shBrushJScript.js"></script><script type="text/javascript" src="js/shBrushSql.js"></script><script type="text/javascript" src="js/shBrushProperties.js"></script><script type="text/javascript" src="js/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="css/shCore.css"><link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"><link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
            Version: 9.2.2-SNAPSHOT</span></td><td style="width: 50%"><script type="text/javascript">  (function() {
            var cx = '016459005284625897022:obd4lsai2ds';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
            })();
          </script><gcse:search></gcse:search></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Releasing Jetty</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="contributing-patches.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;35.&nbsp;Contributing to Jetty<br><a accesskey="p" href="index.html"><i class="icon-home"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="release-testing.html">Next <i class="icon-chevron-right"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at
          <span class="website">www.webtide.com</span></a></h5><p>
 private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ...
 scalability guidance for your apps and Ajax/Comet projects ... development services from 1 day to full product delivery
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="releasing-jetty"></a>Releasing Jetty</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="releasing-jetty.html#releasing-process">Jetty Release Notes</a></span></dt><dt><span class="section"><a href="releasing-jetty.html#releasing-aggregates">Building and Deploying Aggregate Javadoc and Xref</a></span></dt><dt><span class="section"><a href="releasing-jetty.html#releasing-distributions">Deploying Distribution Files</a></span></dt><dt><span class="section"><a href="releasing-jetty.html#releasing-stable-links">Updating Stable Links</a></span></dt><dt><span class="section"><a href="releasing-jetty.html#releasing-documentation">Release Documentation</a></span></dt></dl></div><p>There are a number of steps to releasing jetty. It is not just limited
  to running a couple of maven commands and then moving onto bigger and better
  things. There are a number of process related issues once the fun maven bits
  have been completed.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="releasing-process"></a>Jetty Release Notes</h3></div></div></div><p>This release script is for jetty-9 (to release jetty-7 or jetty-8
    see older documentation).</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Pick your version identification strings.</p><p>These follow a strict format and will be used when prompted
        during step <a class="xref" href="releasing-jetty.html#prepare-release-step">6</a> below.</p><div class="screenexample"><pre class="screen">

Release Version                : 9.0.0.v20130322  (v[year][month][day])
Next Development Version       : 9.0.1-SNAPSHOT
Tag Name                       : jetty-9.9.0.v20130322

        </pre></div></li><li class="listitem"><p>We use the 'release-9' branch to avoid problems with other
        developers actively working on the master branch.</p><div class="screenexample"><pre class="screen">

// Get all of the remotes
$ git pull origin
// Create a local tracking branch (if you haven't already)
$ git branch --track release-9 refs/remotes/origin/release-9
// Check out your local tracking branch.
$ git checkout release-9
// Merge from master into the branch (this becomes your point in time
// from master that you will be releasing from)
$ git merge --no-ff master

        </pre></div></li><li class="listitem"><p>Update the VERSION.txt with changes from the git logs, this
        populates the resolves issues since the last release.</p><div class="screenexample"><pre class="screen">

$ mvn -N -Pupdate-version        

        </pre></div></li><li class="listitem"><p>Edit the VERSION.txt file to set the 'Release Version' at the
        top alongside the Date of this release.</p><div class="screenexample"><pre class="screen">

$ vi VERSION.txt        

        </pre></div></li><li class="listitem"><p>Make sure everything is commit'd and pushed to
        git.eclipse.org</p><div class="screenexample"><pre class="screen">

$ git commit -m "Updating VERSION.txt top section" VERSION.txt
$ git push origin release-9        

        </pre></div></li><li class="listitem"><p><a name="prepare-release-step"></a>Prepare the Release</p><p>NOTE: This step updates the &lt;version&gt; elements in the
        pom.xml files, does a test build with these new versions, and then
        commits the pom.xml changes to your local git repo.  The <code class="code">eclipse-release</code> profile is required on the prepare in order to bring in the jetty aggregates as that profile defines a module which is ignored otherwise.</p><div class="screenexample"><pre class="screen">

$ mvn release:prepare -DreleaseVersion=9.0.0.v20130322 \
                      -DdevelopmentVersion=9.0.1-SNAPSHOT \
                      -Dtag=jetty-9.0.0.v20130322 \
                      -Peclipse-release        

        </pre></div></li><li class="listitem"><p>Perform the Release</p><p>NOTE: This step performs the release and deploys it to a
        oss.sonatype.org staging repository.</p><div class="screenexample"><pre class="screen">

$ mvn release:perform

        </pre></div></li><li class="listitem"><p>Set up files for next development versions.</p><p>Edit <code class="filename">VERSION.txt</code> for 'Next Development
        Version' at the top. Do not date this line.</p><p>Make sure everything is commit'd and pushed to
        git.eclipse.org</p><div class="screenexample"><pre class="screen">

$ vi VERSION.txt
$ git commit -m "Updating VERSION.txt top section" VERSION.txt
$ git push origin release-9

        </pre></div></li><li class="listitem"><p>Close the staging repository on oss.sonatype.org</p></li><li class="listitem"><p>Announce stage to the mailing list for testing.</p></li><li class="listitem"><p>Once the staged repository has been approved by the rest of the
        committers.</p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><p>Release the staging repository to maven central on
            oss.sonatype.org</p></li><li class="listitem"><p>Merge back the changes in release-9 to master</p><div class="screenexample"><pre class="screen">

$ git checkout master
$ git merge --no-ff release-9
$ git push origin master

            </pre></div></li></ol></div></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="releasing-aggregates"></a>Building and Deploying Aggregate Javadoc and Xref</h3></div></div></div><p>Define the jetty.eclipse.website server entry in your
    .m2/settings.xml file. You'll need to have access to the dev.eclipse.org
    machine to perform these actions. If you don't know if you have access to
    this then you probably don't and will need to ask a project leader for
    help.</p><p>To build and deploy the aggregate javadoc and jxr bits:</p><div class="screenexample"><pre class="screen">

$ cd target/checkout
$ mvn -Paggregate-site javadoc:aggregate jxr:jxr
$ mvn -N site:deploy   

    </pre></div><p>This will generate the aggregate docs and deploy them to the
    <code class="filename">/home/www/jetty/&lt;project version&gt;/jetty-project</code>
    directory on download.eclipse.org. The last step is to ssh to that machine
    and adjust the placement of the apidocs and xref directories to remove the
    jetty-project folder from the url so that we maintain a clean and
    consistent api url scheme.</p><div class="screenexample"><pre class="screen">

$ ssh $COMMITTER_ID@dev.eclipse.org
$ cd /home/data/httpd/download.eclipse.org/jetty/&amp;lt;VERSION&amp;gt;
$ mv jetty-project/apidocs .
$ mv jetty-project/xref .
$ rmdir jetty-project    

    </pre></div><p>The end result should be api documents accessible from
    http://download.eclipse.org/jetty/&lt;project version&gt;/api-docs and
    http://download.eclipse.org/jetty/&lt;project version&gt;/xref</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="releasing-distributions"></a>Deploying Distribution Files</h3></div></div></div><p>Since we also provide alternative locations to download jetty
    distributions we need to copy these into place. There are a couple of
    scripts that will take care of this although they need to be localized to
    your particular execution environment and you need to have authorization
    to put stuff where it needs to go. These scripts are located at: <a class="link" href="http://git.eclipse.org/c/jetty/org.eclipse.jetty.admin.git/tree/release-scripts" target="_top">
    http://git.eclipse.org/c/jetty/org.eclipse.jetty.admin.git/tree/release-scripts</a>.
    Once these are setup you can deploy a release to eclipse and codehaus with
    the following incantation.</p><div class="screenexample"><pre class="screen">

$ ./promote-to-eclipse.sh 9.0.0.v20130322
( for 7 and 8 releases remember the codehaus part)
$ ./promote-to-codehaus.sh 8.1.0.v20130322 8.1.0    

    </pre></div><p>Each of these scripts will download all of the relevant files from
    maven central and then copy them into the correct location on eclipse and
    codehaus infrastructure. On the eclipse side of it they will also adjust
    the documentation links if they remain broken as well as regenerate all of
    the html files on the eclipse download site.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="releasing-stable-links"></a>Updating Stable Links</h3></div></div></div><p>Since we are not allowed to have symbolic links on the download site
    we have to log into the machine manually and remove the previous stable
    directory and update it with a new release. Maintaining the conventions we
    use on the site will allow all 'stable' links to be stable and not needed
    to update to the latest major Jetty build version:</p><div class="screenexample"><pre class="screen">

$ ssh &lt;user&gt;@build.eclipse.org
$ cd ~downloads/jetty/
$ rm -Rf stable-9
$ cp -r &lt;version&gt; stable-9
$ ./index.sh   

    </pre></div><p>This needs to be done for all Eclipse Jetty releases (regardless of
    version). In addition we have to work to reduce the footprint of jetty on
    the primary eclipse download resources so we want to move older releases
    to the eclipse archive site.</p><div class="screenexample"><pre class="screen">

$ cd ~/downloads/jetty
$ mv &lt;old release&gt; /home/data/httpd/archive.eclipse.org/jetty/    

    </pre></div><p>
      Periodically we need to do the same for the osgi P2 repositories to keep the size of our downloads directory at a reasonable size.
    </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="releasing-documentation"></a>Release Documentation</h3></div></div></div><p>
      There are two git repositories you need to be aware of for releasing jetty-documentation.  The jetty-documentation is located in our github repository and the jetty-website is located at eclipse.
    </p><div class="variablelist"><dl><dt><span class="term">jetty-documentation</span></dt><dd><p>
            <a class="link" href="https://github.com/jetty-project/jetty-documentation" target="_top">https://github.com/jetty-project/jetty-documentation</a>
          </p></dd><dt><span class="term">jetty-website</span></dt><dd><p>
            <a class="link" href="http://git.eclipse.org/c/www.eclipse.org/jetty.git" target="_top">http://git.eclipse.org/c/www.eclipse.org/jetty.git</a>
          </p></dd></dl></div><p>
      Since we want an firm documentation url:
    </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
          checkout the jetty-website and copy the contents of <code class="filename">documentation/current</code> into a directory called <code class="filename">documentation/$version</code>
        </p></li><li class="listitem"><p>
          Edit the <code class="filename">index.html</code> file in the <code class="filename">documentation</code> directory and add the newly released documentation url.  Make sure you follow the other examples and include the <code class="code">rel="nofollow"</code> attribute on the link so that search engines do not crawl newly created documentation, otherwise we are subject to duplicate content penalties in SEO.
        </p></li></ol></div><p>
      Lastly, the <code class="code">${project.version}</code> of the <code class="filename">pom.xml</code> is the latest released version of the Jetty so when making a new release we want to update this so that our documentation is being generated with useful defaults in many of our examples.  Throughout much of the documentation we use <code class="code">${project.version}</code> which is resolved in the build to make examples that can be cut and paste straight out of the documentation and automatically use the latest version available, so once the release is available in maven central update the version in the documentation's <code class="filename">pom.xml</code> and push it.  The automated build will update the <a class="link" href="http://www.eclipse.org/jetty/documentation/current" target="_top">documentation/current/</a> url.
    </p></div></div><script type="text/javascript">
      SyntaxHighlighter.all()
    </script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="contributing-patches.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="advanced-contributing.html"><i class="icon-chevron-up"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="release-testing.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Contributing Patches&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="icon-home"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Testing a Jetty Release</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
            See an error or something missing?
            <span class="callout"><a href="http://github.com/jetty-project/jetty-documentation">Contribute to this documentation at
                <span class="website"><i class="icon-github"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2014-08-21T01:00:34-07:00)</i></span></div></p><script xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1149868-7']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
    </script></body></html>

Back to the top