发布验证流程#

此页面提供有关在主要平台上执行发布验证时所遵循步骤的详细信息。

原则#

Apache Arrow 发布审批流程遵循 Apache 软件基金会发布审批 中定义的指南。

要使发布投票通过,必须投出至少三个肯定的约束性投票,并且肯定的约束性投票必须多于否定的约束性投票。发布不得被否决。PMC 成员投出的票是约束性的,但是,强烈鼓励非约束性投票,并且是非约束性投票是项目健康的标志。

运行发布验证#

Linux 和 macOS#

要运行源代码发布或二进制构件的验证脚本,请参阅以下指南

必需的源代码验证#

个人需要将所有已签名的源代码包下载到自己的硬件上,验证所有加密签名,按照提供的说明进行编译,并在自己的平台上测试结果,以便投 +1 票。

# this will create and automatically clean up a temporary directory for the verification environment and will run the source verification
TEST_DEFAULT=0 TEST_SOURCE=1 verify-release-candidate.sh $VERSION $RC_NUM

# to verify only certain implementations use the TEST_DEFAULT=0 and TEST_* variables
# here are a couple of examples, but see the source code for the available options
TEST_DEFAULT=0 TEST_CPP=1 verify-release-candidate.sh $VERSION $RC_NUM  # only C++ tests
TEST_DEFAULT=0 TEST_CPP=1 TEST_PYTHON=1 verify-release-candidate.sh $VERSION $RC_NUM  # C++ and Python tests
TEST_DEFAULT=0 TEST_INTEGRATION_CPP=1 TEST_INTEGRATION_JAVA=1 verify-release-candidate.sh $VERSION $RC_NUM  # C++ and Java integration tests

二进制验证#

二进制文件是从已验证的源代码生成的。这些二进制文件在 CI 上进行了测试,但可以在本地进行测试以进行进一步验证。为了投肯定票,无需对其进行测试。

# this will create and automatically clean up a temporary directory for the verification environment and will run the binary verification
TEST_DEFAULT=0 TEST_BINARIES=1 dev/release/verify-release-candidate.sh $VERSION $RC_NUM

# to verify certain binaries use the TEST_* variables as:
TEST_DEFAULT=0 TEST_WHEELS=1 verify-release-candidate.sh $VERSION $RC_NUM  # only Wheels
TEST_DEFAULT=0 TEST_APT=1 verify-release-candidate.sh $VERSION $RC_NUM  # only APT packages
TEST_DEFAULT=0 TEST_YUM=1 verify-release-candidate.sh $VERSION $RC_NUM  # only YUM packages
TEST_DEFAULT=0 TEST_JARS=1 verify-release-candidate.sh $VERSION $RC_NUM  # only JARS

Windows#

要在 Windows 上运行验证脚本,您必须从 SVN dist 系统下载您希望验证的源代码 tarball。

dev\release\verify-release-candidate.bat %VERSION% %RC_NUM%

系统配置说明#

您需要安装一些工具,例如 curl、git 等。

Ubuntu#

您可能需要在系统上安装一些软件包。以下实用程序脚本可用于设置您的 Ubuntu 系统。这将安装在干净的 Ubuntu 上执行源代码验证所需的软件包

# From the arrow clone
sudo dev/release/setup-ubuntu.sh

macOS ARM#

# From the arrow clone
brew install gpg
brew bundle --file=cpp/Brewfile
brew bundle --file=c_glib/Brewfile
brew uninstall node
# You might need to add node, ruby java and maven to the PATH, follow
# instructions from brew after installing.
brew install node@20
brew install ruby
brew install openjdk
brew install maven

Windows 11#

待定

投票#

完成验证后,您可以通过回复 dev@arrow.apache.org 上的投票主题并提供您的结果来投票。

如果验证成功,您可以发送 +1 票。我们通常会随投票一起发送执行的命令和使用的本地版本。例如

I've verified successfully the sources and binaries with:

TEST_DEFAULT=0 TEST_SOURCE=1 dev/release/verify-release-candidate.sh 15.0.0 1
with:
* Python 3.10.12
* gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
* NVIDIA CUDA Build cuda_11.5.r11.5/compiler.30672275_0
* openjdk version "17.0.9" 2023-10-17
* ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
* dotnet 8.0.204
* Ubuntu 22.04 LTS

如果在验证期间遇到一些问题,请在邮件主题中报告这些问题以诊断问题。