blob: d4b711043396bb829cbf9d49d9560514241bd831 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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 xmlns="http://maven.apache.org/XDOC/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
<properties>
<title>Generating Patches</title>
</properties>
<body>
<section name="Generating patches" id="Generatingpatches">
<p>Releasing new version of Apache Giraph may take 2 weeks or more. Please, plan accordingly.</p>
<p>Follow these steps to release new version of Apache Giraph.</p>
<ul>
<li>Check out the Giraph source from the <a href="http://gitbox.apache.org/repos/asf/giraph.git">git repository</a>.</li>
<li>Make a release branch <tt>git checkout -b release-1.2; git push origin release-1.2</tt></li>
<li>Once you have a release branch, setup continuous integration in Jenkins. <a href="https://builds.apache.org/job/Giraph-1.2/">See for example a setup for Giraph 1.2 release</a></li>
<li>Fix test cases and build errors until you have a clean build for both hadoop_1 and hadoop_2 profiles</li>
<li>Check JIRA tickets associated with this release and make sure you don't have any open</li>
<li>When you have everything ready for the release, create a tag <tt>git tag -a rel/1.2.0-RC1 -m "Preparing release 1.2.0"</tt></li>
<li>Do the license check: <tt>mvn apache-rat:check -Phadoop_1</tt> and make sure you don't have any issues <tt>grep '!?????' target/rat.txt</tt>
</li>
<li>When all of above are clean, you can do the build: <tt>mvn clean install -Phadoop_1 -Prelease</tt>
If this command fails generating signatures <a href="http://www.apache.org/dev/release-signing.html">check this page for more information</a></li>
<li>You can now get the prepared binaries, source files and signatures in <tt>giraph-dist/target/</tt></li>
<li>To generate remaining md5 and sha1 hashes, wou can use the following set of commands:
<source>
md5 -r * |grep -v asc | while read k f; do
echo $k > "$f.md5"
done
shasum * |grep -v asc |grep -v md5 | while read k f; do
echo $k > "$f.sha1"
done
</source>
</li>
<li>Now you need to build release for hadoop_2. First, change version in all pom.xml files:
<source>
mvn versions:set -DnewVersion=1.2.0-hadoop2
grep -R 'version.*1.2.0' . | grep pom.xml | grep -v hadoop2
</source>
Make sure the output of the second command is empty. Modify missed pom.xml manually otherwise.
</li>
<li>Repeat steps for hadoop_2 profile:
<source>
mvn apache-rat:check -Phadoop_2
grep '!?????' target/rat.txt
mvn clean install -Phadoop_2
</source>
Get release files from <tt>~/.m2/repository/org/apache/giraph/giraph-dist/1.2.0-hadoop2</tt> and sign them.
</li>
<li>Finally make files available in dist SVN:
<tt>svn checkout https://dist.apache.org/repos/dist/dev/giraph/</tt>, and
<tt>svn checkout https://dist.apache.org/repos/dist/release/giraph/</tt>
Make sure that the content there looks ok (try to build and run Giraph just from those tarballs).
</li>
<li>
Configure your .m2/settings.xml as described <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">here</a>. And deploy released artifacts to the maven repository:
<source>
mvn -Prelease -Phadoop_1 deploy
mvn -Prelease -Phadoop_2 deploy
</source>
</li>
</ul>
</section>
</body>
</document>