发布验证流程#

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

原则#

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

如果在验证过程中出现任何问题,请在邮件线程上报告这些问题以诊断问题。