发布验证流程#

本页详细介绍了在主要平台上执行发布验证的步骤。

原则#

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 分发系统下载源代码压缩包

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 票。我们通常会随投票一起发送已执行的命令和使用的本地版本。例如

+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

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