-
Notifications
You must be signed in to change notification settings - Fork 2
/
release-guide.html
189 lines (155 loc) · 8.51 KB
/
release-guide.html
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
182
183
184
185
186
187
188
189
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Camel Extra Component Website by camel-extra</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/pygment_trac.css">
<script src="javascripts/scale.fix.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1 class="header">Camel Extra Component Website</h1>
<p class="header"><img src="/images/camel-extra.png" width="90" height="87"/></p>
<ul>
<li><a class="buttons github" href="https://github.com/camel-extra">GitHub Profile</a></li>
</ul>
</header>
<section>
<h2><a id="welcome-to-github-pages" class="anchor" href="#welcome-to-github-pages" aria-hidden="true"><span class="octicon octicon-link"></span></a>Release Guide</h2>
<h3>Prerequisites</h3>
<p>To prepare or perform a release you MUST BE at least an Camel Extra committer.</p>
<ul>
<li>You need to be a commiter with privileges to the camel-extra project on Sonatype OSSRH.</li>
<li>Make sure you have the correct maven configuration in <code>~/.m2/settings.xml</code>. See below.</li>
<li>Make sure you are using Java 1.8 for Camel Extra 2.18.0 and later (Java 1.7 for older versions).</li>
<li>make sure that you can build project locally for branch being released with the following command
<code>
mvn clean install -PwithRatCheck,integration
</code></li>
<li>make sure that build for branch being released succeeds on the <a href="https://travis-ci.org/camel-extra/camel-extra">Travis CI</a></li>
</ul>
<h3>Maven setup</h3>
<p>You also need to edit your ~/.m2/settings.xml to add the camel-extra servers. So your XML should look something like...</p>
<pre>
<?xml version="1.0"?>
<settings>
<servers>
<server>
<id>sonatype-nexus-staging</id>
<username>MY_SONATYPE_USERNAME</username>
<password>MY_SONATYPE_PASSWORD</password>
</server>
<server>
<id>sonatype-nexus-snapshots</id>
<username>MY_SONATYPE_USERNAME</username>
<password>MY_SONATYPE_PASSWORD</password>
</server>
</servers>
<profiles>
<profile>
<id>apache-extra-release</id>
<properties>
<gpg.useagent>false</gpg.executable>
<gpg.passphrase>the_pass_phrase</gpg.passphrase>
</properties>
</profile>
</profiles>
</settings>
</pre>
<h3>Creating the Camel Extra Release</h3>
<p>The release plugin will prompt for a release version, tag and next release version. Use a three digit release version of the form: 2.x.x and for the tag use a string of the form: camel-extra-2.x.x. The next version string should use the two digit from: 2.x-SNAPSHOT as this can be consistent for future SNAPSHOT releases.</p>
<p>1. Grab the latest source from Git and checkout the target branch to build from. If you build a new release from master create a new branch
<pre>
git checkout BRANCH_NAME # e.g. BRANCH_NAME = camel-extra-2.16.x
</pre>
</p>
<p>2. Verify headers with <a href="http://creadur.apache.org/rat/apache-rat-plugin/usage.html">rat</a>
<pre>
mvn -e org.apache.rat:apache-rat-plugin:check
grep -e ' !?????' target/rat.txt # will show any files without licenses
</pre>
</p>
<p>The grep command will return a list of files that don't have correct license headers. If nothing is returned, you can proceed with the next step. Otherwise fix the license header in all listed files and invoke both commands again until no files are returned.</p>
<p>3. Do a release dry run to check for problems
<pre>
mvn release:prepare -DdryRun=true -Psonatype-oss-release
...
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "Camel Extra"? (org.apache-extras.camel-extra:camel-parent) 2.18.0: :
What is SCM release tag or label for "Camel Extra"? (org.apache-extras.camel-extra:camel-parent) camel-parent-2.18.0: : camel-extra-2.18.0
What is the new development version for "Camel Extra"? (org.apache-extras.camel-extra:camel-parent) 2.18.1-SNAPSHOT: : 2.18-SNAPSHOT
</pre>
</p>
<p>Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. Check also the generated signature files:
<pre>
ullgren$ gpg target/camel-parent-2.18.0-SNAPSHOT.pom.asc
gpg: Signature made 2017-06-14T22:55:49 CEST using DSA key ID A2CF8A38
gpg: Good signature from "Pontus Ullgren"
</pre>
</p>
<p>4. Prepare the release<br/>
<br/>
When you like the results, clean up:
<pre>
mvn release:clean -Psonatype-oss-release
</pre>
</p>
<p>
Then run prepare for real this time
<pre>
mvn release:prepare -Psonatype-oss-release
</pre>
</p>
<p>NOTE: If your git doesn't remember the username and password, you need pass it to the mvn plugin, otherwise the release plugin will wait forever.
<pre>
mvn release:prepare -Dusername=USERNAME -Dpassword=PASSWORD -Psonatype-oss-release
</pre>
</p>
<p>This will create the tag in git and leave various stuff around locally to direct the perform phase.</p>
<p>5. Perform the release to the staging repo
<pre>
mvn release:perform -Psonatype-oss-release
</pre>
</p>
<p>6. Close the staging repository</p>
<p>Login to <a href="https://oss.sonatype.org/#stagingRepositories">https://oss.sonatype.org</a> using your Sonatype credentials. Click on "Staging Repositories".
Then select "orgapache-extrascamel-extra-xxx" in the list of repositories, where xxx represents a 4 digit sequential number. Click "Close" on the tool bar above. This will close the repository from future deployments and make it available for others to view.</p>
<p>7. Verify staged artifacts</p>
<p>If you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If the you don't like the content of the repository, right click your repository and choose "Drop". You can then rollback your release and repeat the process.<br/>
Note the repository URL, you will need this in your vote email.</p>
<h3>Testing the Camel Extra Release Candidate</h3>
<p>When folks need to test out a release candidate, the jars will not have been uploaded to the central Maven repo. This means that the example programs which use Maven will not automatically work and you need to follow the <a href="http://camel.apache.org/testing-a-release-candidate.html">Testing a release candidate guidelines</a>.</p>
<p>Afterwards send out the VOTE for this release candidate to the mailing list.</p>
<h3>Announcing the Camel Extra Release</h3>
<p>If the VOTE pass,</p>
<ol>
<li>Close it by sending the RESULT to the mailing list.</li>
<li>Promote the artifacts to the central repo. For this login to <a href="https://oss.sonatype.org/#stagingRepositories">https://oss.sonatype.org</a> using your Sonatype credentials. Click on "Staging Repositories".<br/>
Then select "orgapache-extrascamel-extra-xxx" in the list of repositories, where xxx represents a 4 digit sequential number. Click "Release" on the tool bar above. This will promote all artifacts to the central maven repo. Enter the name and version of the artifact being released in the "Description" field and then click "Release". This will make it easier to identify it later.</li>
<li>Perform a release in JIRA and create a new release version in JIRA</li>
<li>There should be already a release notes on the page makred as In Progress. Edit the release notes page and add a new in progress version.</li>
</ol>
</section>
<footer>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="release-notes.html">Release Notes</a></li>
<li><a href="maven-repo.html">Maven Repository</a></li>
<li><a href="building.html">Building</a></li>
<li><a href="getting-involved.html">Getting Involved</a></li>
<li><a href="release-guide.html">Release Guide</a></li>
<!--li></li>
<li></li-->
</ul>
<p><small>Hosted on <a href="https://pages.github.com">GitHub Pages</a> using the Dinky theme</small></p>
</footer>
</div>
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
</body>
</html>