发布和验证发布版本
验证暂存发布版本
登录后可跨设备保存划线和私人笔记登录
| 在 MacOS 和 Linux 上,前 4 个步骤可以自动完成。详情请参阅本章之后关于工具的章节。 |
|---|
- 将发布投票邮件中指定 URL 下的所有暂存构件下载到一个目录中,我们暂且称之为
download-dir。 - 验证签名是否正确:关于如何验证下载文件的额外 Apache 教程可在此处找到](http://www.apache.org/info/verification.html)。
gpg --verify apache-plc4x-{current-full-version}-source-release.zip.asc apache-plc4x-#{current-full-version}-source-release.zip- 检查该检查是否成功。
- 检查签名是否引用了 Apache 邮箱地址。
- 验证 SHA512 哈希值:
Mac/Linux: shasum -a512 apache-plc4x-{current-full-version}-source-release.zip
Windows (PowerShell): Get-FileHash -Algorithm SHA512 .\apache-plc4x-code-generation-{current-full-version}-source-release.zip | Format-List- 解压归档文件:
unzip apache-plc4x-{current-full-version}-source-release.zip- 验证解压后的源码包中存在
LICENSE、NOTICE、README、RELEASE_NOTES文件。 - 验证解压后的源码包中
LICENSE、NOTICE、README、RELEASE_NOTES文件的内容。
(如果这是本年度的首次发布,请特别注意 NOTICE 文件中的年份) |
|---|
- [RM] 验证暂存的源码 README、RELEASE_NOTE 文件与解压后的源码包中的文件一致。
- [RM] 在外部运行 RAT,以确保没有意外问题。
java -jar apache-rat-0.13.jar apache-plc4x-{current-full-version}-source-release.zip > rat.log- 搜索
SNAPSHOT引用:
find . -type f -name 'pom.xml' -exec grep -l "SNAPSHOT" {} \;- 搜索
Copyright引用,如果它们出现在文件头中,请确保包含这些引用的文件已在 LICENSE 文件中列出。 - 按照 README.md 文件中的说明构建项目。
- [RM] 启用所有
with-xyzprofile 和测试、并在空的 Maven 本地仓库下构建项目:追加-Dmaven.repo.local=../.m2(Windows 上请使用-D"maven.repo.local"="../.m2")。
使用 RAT
即使我们使用 RAT 来确保源文件都带有文件头,项目中仍可能存在排除规则,使某些内容躲过检查。
避免遗漏重要文件的唯一方法,是在外部运行 RAT。
如果你还没有它,请从此处下载。
另外,我也喜欢针对包含源码发布包的 zip 归档文件运行 RAT,因为这样可以避免扫描到构建产生的二进制文件的问题(如果你在构建之后运行 RAT,它会为每一个 jar 文件和每一个 class 文件发出警告)。
java -jar apache-rat-0.13.jar apache-plc4x-1.0.0-source-release.zip > rat.log将结果通过管道输出到文本文件,可以让你更方便地检查其中的内容。
发布工具
tools/validate-release.sh 会替你完成最困难的部分:验证 Nexus 中已暂存的制品能够从暂存的源码重新构建出来。
解压你上面下载的 apache-plc4x-1.0.0-source-release.zip,然后在解压后的目录中运行它:
./tools/validate-release.sh它在与构建发布版相同的 Docker 容器中构建项目,然后使用 artifact:compare 将结果与暂存仓库进行比较。它拒绝在 SNAPSHOT 版本上运行,因此不会意外地指向开发用的代码检出,并且它需要 Docker 至少有 12 GB 可用内存。
只有 Java 构件会被比较——C、.NET 和 Python 的构件要么是平台特定的,要么根本不会发布到 Maven,因此没有可供比较的暂存内容。
| 上述签名和哈希校验仍然是手动完成的;不再有相应的脚本。 |
|---|
投票邮件模板
+1/-1 (binding)
Name
[] Download all staged artifacts under the url specified in the release vote email.
[] Verify the signature is correct.
[] Check if the signature references an Apache email address.
[] Verify the SHA512 hashes.
[] Unzip the archive.
[] Verify the existence of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle.
[] Verify the content of LICENSE, NOTICE, README, RELEASE_NOTES files in the extracted source bundle.
[] [RM] Verify the staged source README, RELEASE_NOTE files correspond to those in the extracted source bundle.
[] [RM] Run RAT externally to ensure there are no surprises.
[] Search for SNAPSHOT references
[] Search for Copyright references, and if they are in headers, make sure these files containing them are mentioned in the LICENSE file.
[] Build the project according to the information in the README.md file.
[] [RM] Build the project with all with-xyz profiles and tests enabled and an empty maven local repo.如果一切正常,我会在方括号中填入「OK」。如果存在轻微问题,我会在其中填入「MINOR」;若原因较简短,我会在该行末尾附上说明;若原因较长,我会在清单之后另起一个较长的段落进行说明。如果存在严重问题,我会在其中填入「FAIL」,并以与轻微问题相同的方式添加注释。
评论
登录后参与评论
正在加载评论…
KnowForge