建立针对 HBase 1。

HBase 1.x 需要 Java 7 才能构建。有关每个 HBase 版本的 Java 要求,请参阅 java

示例 42.示例 〜/ .m2 / settings.xml 文件

发布到 maven 需要您签署要上传的工件。为了让您为自己签名,您可以在 .m2 下的本地存储库中正确配置 settings.xml ,如下所示。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <servers>
    <!- To publish a snapshot of some part of Maven -->
    <server>
      <id>apache.snapshots.https</id>
      <username>YOUR_APACHE_ID
      </username>
      <password>YOUR_APACHE_PASSWORD
      </password>
    </server>
    <!-- To publish a website using Maven -->
    <!-- To stage a release of some part of Maven -->
    <server>
      <id>apache.releases.https</id>
      <username>YOUR_APACHE_ID
      </username>
      <password>YOUR_APACHE_PASSWORD
      </password>
    </server>
  </servers>
  <profiles>
    <profile>
      <id>apache-release</id>
      <properties>
    <gpg.keyname>YOUR_KEYNAME</gpg.keyname>
    <!--Keyname is something like this ... 00A5F21E... do gpg --list-keys to find it-->
    <gpg.passphrase>YOUR_KEY_PASSWORD
    </gpg.passphrase>
      </properties>
    </profile>
  </profiles>
</settings> 

168.1。发布候选人

只有提交者可以发布 hbase 工件。

在你开始之前

确保您的环境设置正确。 Maven 和 Git 是下面使用的主要工具。您需要在本地 〜/ .m2 maven 存储库中正确配置 settings.xml 文件,其中包含 apache repos 的登录信息(参见示例 〜/ .m2 /settings.xml 文件)。您还需要具有已发布的签名密钥。浏览 Hadoop 如何发布 wiki 页面,了解如何发布。它是下面大多数说明的模型。它通常包含有关特定步骤的更多详细信息,例如,在 Apache 中将代码签名密钥添加到项目 KEYS 文件中,或者如何更新 JIRA 以准备发布。

在制作候选版本之前,请通过部署 SNAPSHOT 进行练习。检查以确保最近的版本已经从您将要发布的分支传递到该分支。您还应该在加载的集群上尝试最近的分支提示,可能是通过运行hbase-it集成测试套件几个小时来“烧入”近候选位。

为 Maven 指定堆空间

您可能会遇到 OutOfMemoryErrors 构建,特别是构建站点和文档。通过设置MAVEN_OPTS变量为 Maven 堆起来。您可以将变量作为 Maven 命令的前缀,如下例所示:

MAVEN_OPTS="-Xmx4g -XX:MaxPermSize=256m" mvn package 

您也可以在 shell 中的环境变量或别名中设置它。

脚本 _dev-support / make rc.sh 自动执行以下许多步骤。它将检出标签,清理结帐,构建 src 和 bin tarball,并将构建的 jar 部署到 repository.apache.org。它没有对发布的 CHANGES.txt 进行修改,检查生成的工件以确保它们“良好” - 例如提取生成的 tarball,验证它们是否正确,然后启动 HBase 并检查一切是否正常运行 - 或者将 tarball 签名并推送到 people.apache.org 。看一看。根据需要修改/改进。

程序:发布程序

  1. 更新 CHANGES.txt 文件和 POM 文件。

    使用自上次发布以来的更改更新 CHANGES.txt 。确保 JIRA 的 URL 指向正确的位置,该位置列出了此版本的修复程序。适当调整所有 POM 文件中的版本。如果要创建候选发布版,则必须从所有 pom.xml 文件中的所有版本中删除-SNAPSHOT标签。如果您正在运行此 receipe 以发布快照,则必须在 hbase 版本上保留-SNAPSHOT后缀。 版本 Maven 插件可以在这里使用。要在 hbase 多模块项目的所有 poms 中设置版本,请使用如下命令:

    $ mvn clean org.codehaus.mojo:versions-maven-plugin:2.5:set -DnewVersion=2.1.0-SNAPSHOT 
    

    确保 poms 中的所有版本都已更改!检查 CHANGES.txt 并更改任何 maven 版本。

  2. 更新文档。

    更新 src / main / asciidoc 下的文档。这通常涉及从主分支复制最新版本并进行版本特定调整以适应此候选版本。

  3. 清洁结帐目录

    $ mvn clean
    $ git clean -f -x -d 
    
  4. 运行 Apache-Rat Check 许可证很好

    $ mvn apache-rat 
    

    如果上述操作失败,请检查鼠标日志。

    $ grep 'Rat check' patchprocess/mvn_apache_rat.log 
    
  5. 创建发布标记。假设您已经运行了基本测试,鼠标检查,通过并且一切看起来都很好,现在是标记候选发布者的时间(如果您需要重做,则总是删除标记)。要标记,请在适合您的构建的版本中进行替换。所有标签都应该是签名标签;即通过 -s 选项(参见签署您的工作,了解如何设置您的 git 环境进行签名)。

    $ git tag -s 2.0.0-alpha4-RC0 -m "Tagging the 2.0.0-alpha4 first Releae Candidate (Candidates start at zero)" 
    

或者,如果您要发布,标签应该有一个 rel / 前缀,以确保它们保存在 Apache repo 中,如下所示:

+$ git tag -s rel/2.0.0-alpha4 -m "Tagging the 2.0.0-alpha4 Release" 

推送(特定)标签(仅限)以便其他人可以访问。

$ git push origin 2.0.0-alpha4-RC0 
  • 有关如何删除标签的信息,请参阅如何删除标签。涵盖删除尚未推送到远程 Apache repo 的标签以及删除推送到 Apache 的标签。

  • 构建源代码 tarball。

    现在,构建源代码 tarball。让我们假设我们正在为 /tmp/hbase-2.0.0-alpha4-RC0/ 标记 2.0.0-alpha4-RC0 构建源码 tarball(此步骤要求刚刚完成了上面描述的 mvn 和 git clean 步骤)。

    $ git archive --format=tar.gz --output="/tmp/hbase-2.0.0-alpha4-RC0/hbase-2.0.0-alpha4-src.tar.gz" --prefix="hbase-2.0.0-alpha4/" $git_tag 
    

上面我们将 hbase-2.0.0-alpha4-src.tar.gz tarball 生成到 /tmp/hbase-2.0.0-alpha4-RC0 构建输出目录中(我们不想要 ] RC0 在名称或前缀中。这些位当前是候选版本,但如果 VOTE 通过,它们将成为释放,因此我们不会使用 RCX 来污染工件名称。

  1. 构建二进制 tarball。接下来,构建二进制 tarball。在构建时添加-Prelease配置文件。它运行许可证 apache-rat 检查以及其他有助于确保所有内容都有益的规则。分两步完成。

首先安装到本地存储库

$ mvn clean install -DskipTests -Prelease 

接下来,生成文档并组装 tarball。请注意,下一步可能需要一段时间,几个小时生成站点文档。

$ mvn install -DskipTests site assembly:single -Prelease 
  • 否则,当您尝试一步完成所有操作时,构建会抱怨 hbase 模块不在 maven 存储库中,尤其是在新的存储库中。您似乎需要在两个步骤中都需要安装目标。

  • 提取生成的 tarball - 你会在 hbase-assembly / target 下找到它并检查出来。查看文档,查看它是否运行等。如果好,请复制构建输出目录中源 tarball 旁边的 tarball。

  • 部署到 Maven 资源库。

    接下来,将 HBase 部署到 Apache Maven 存储库。添加 apache-release profile when running the mvn deploy`命令。此配置文件来自我们的 pom 文件引用的 Apache 父 pom。只要 settings.xml 配置正确,它就会对发布到 Maven 的工件进行签名,如示例 〜/ .m2 / settings.xml 文件。此步骤取决于已由前一个 bin tarball 构建填充的本地存储库。

    $ mvn deploy -DskipTests -Papache-release -Prelease 
    

    此命令将所有工件复制到处于“打开”状态的临时暂存 Apache maven 存储库。需要对这些 maven 工件进行更多的工作,以使它们普遍可用。

    我们不会将 HBase tarball 发布到 Apache Maven 存储库。要避免部署 tarball,请不要在mvn deploy命令中包含assembly:single目标。检查已部署的工件,如下一节中所述。

make_rc.s

如果你运行 _dev-support / make rc.sh 脚本,这就是你需要的。要完成发布,请从此处开始编写脚本。

  1. 使候选版本可用。

    工件位于“打开”状态的暂存区域中的 maven 存储库中。在这种“开放”状态下,您可以查看您发布的内容,以确保一切顺利。为此,请使用您的 Apache ID 在 repository.apache.org 上登录 Apache 的 Nexus。在临时存储库中查找工件。单击“Staging Repositories”并查找以“hbase”结尾的新状态,状态为“Open”,然后选择它。使用树视图展开存储库内容列表,并检查您期望的工件是否存在。检查 POM。只要暂存存储仓库处于打开状态,您就可以在缺少某些内容或构建错误时重新上传。

    如果出现严重错误并且您想要撤消上传,可以使用“删除”按钮删除和删除暂存存储库。有时上传在中间失败。这是您可能必须从暂存存储库中“删除”上载的另一个原因。

    如果签出,请使用“关闭”按钮关闭仓库。必须先关闭存储库,然后才能使用它的公共 URL。存储库可能需要几分钟才能关闭。完成后,您将在 Nexus UI 中看到存储库的公共 URL。您可能还会收到一封包含该 URL 的电子邮件。在宣布候选发布版的电子邮件中提供临时登台存储库的 URL。 (人们需要将此 repo URL 添加到其本地 poms 或其本地 settings.xml 文件中以提取已发布的候选工件。)

    当发布投票成功结束时,返回此处并单击“发布”按钮以将工件发布到中央。发布过程将自动删除并删除暂存存储库。

    > HBase 的-downstreamer > > 请参阅 hbase-downstreamer 测试,了解 HBase 下游的项目的简单示例,具体取决于它。检查并运行其简单测试,以确保 maven 工件正确部署到 maven 存储库。请务必编辑 pom 以指向正确的临时存储库。确保在测试运行时从存储库中提取并且未从本地存储库获取,方法是传递-U标志或删除本地存储库内容并检查 maven 是否已从远程存储库中移出。

有关此 maven 登台过程的一些指示,请参阅发布 Maven 工件

  • 如果 HBase 版本以-SNAPSHOT结尾,则工件将转移到其他位置。它们直接放入 Apache 快照存储库并立即可用。发布 SNAPSHOT,这就是您想要发生的事情。

  • 在此阶段,您在“构建输出目录”中有两个 tarball,并且在 maven 存储库的暂存区域中有一组工件处于“关闭”状态。下一个签名,指纹然后通过 svnpubsub“释放”你的发布候选构建输出目录,将你的目录提交到开发分发目录(参见 HBASE-10554 上的评论请从镜像系统中删除旧版本但实质上它是 dev / hbase 的 svn 结账 - 发布在发布/ hbase )。在 _ 版本目录 _ 中运行以下命令:

$ for i in *.tar.gz; do echo $i; gpg --print-md MD5 $i > $i.md5 ; done
$ for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha ; done
$ for i in *.tar.gz; do echo $i; gpg --armor --output $i.asc --detach-sig $i  ; done
$ cd ..
# Presuming our 'build output directory' is named 0.96.0RC0, copy it to the svn checkout of the dist dev dir
# in this case named hbase.dist.dev.svn
$ cd /Users/stack/checkouts/hbase.dist.dev.svn
$ svn info
Path: .
Working Copy Root Path: /Users/stack/checkouts/hbase.dist.dev.svn
URL: https://dist.apache.org/repos/dist/dev/hbase
Repository Root: https://dist.apache.org/repos/dist
Repository UUID: 0d268c88-bc11-4956-87df-91683dc98e59
Revision: 15087
Node Kind: directory
Schedule: normal
Last Changed Author: ndimiduk
Last Changed Rev: 15045
Last Changed Date: 2016-08-28 11:13:36 -0700 (Sun, 28 Aug 2016)
$ mv 0.96.0RC0 /Users/stack/checkouts/hbase.dist.dev.svn
$ svn add 0.96.0RC0
$ svn commit ... 

宣布邮件列表中的候选发布者并进行投票。

168.2。将 SNAPSHOT 发布到 maven

确保您的 settings.xml 设置正确(参见示例 〜/ .m2 / settings.xml 文件)。确保 hbase 版本包含-SNAPSHOT作为后缀。以下是发布其 poms 中 hbase 版本为 0.96.0 的发行版的 SNAPSHOTS 的示例。

 $ mvn clean install -DskipTests  javadoc:aggregate site assembly:single -Prelease
 $ mvn -DskipTests  deploy -Papache-release 

上面提到的 _make rc.sh 脚本(参见 maven.release )可以帮助您发布SNAPSHOTS。在运行脚本之前,请确保hbase.version后缀为-SNAPSHOT。它会将快照放入 apache 快照存储库中。