项目发布说明
本节介绍如何发布扩展自 logging-parent
POM 并使用其可重用 CI 工作流的项目的全新版本。
共享说明硬编码了以下常量
您必须为您的项目调整这些值! 例如,项目 ID 需要替换为 Log4j 的 |
准备发布
-
创建发布分支
git fetch -p git checkout -B release/7.8.0 origin/main
-
准备发布的源代码
-
更新
pom.xml
中的revision
属性如果您的项目在站点源代码中引用了自己的版本,则也需要更新这些源代码。例如,
logging-parent
需要更新site-project.version
。 -
发布变更日志
./mvnw -N -P changelog-release
-
编辑发布说明(例如,
src/changelog/7.8.0/.release-notes.adoc.ftl
)
-
-
提交并推送您的更改
git add . git commit -S -a -m 'Prepare to release `7.8.0`' git push -u origin release/7.8.0
以
release/
为前缀的分支会触发特定的 GitHub Actions 工作流,其运行是幂等的。您可以迭代release/7.8.0
分支来完善它。 -
验证关联的 GitHub Actions 工作流 是否成功
-
pom.xml
中的project.build.outputTimestamp
属性已更新 -
已签名的工件 已上传到 repository.apache.org 中的暂存库
-
已签名的发行版及其校验和(例如,
apache-logging-parent-7.8.0-{bin,src}.{zip,.zip.asc,.zip.sha512}
)已上传到 dist.apache.org/repos/dist/dev/logging/logging-parent/7.8.0 Subversion 存储库(以及辅助文件;网站、电子邮件文本等) -
发布暂存网站 使用新填充的
release/7.8.0-site-stg-out
分支进行部署
如果不是,请提交必要的修复,推送并重复。
-
-
在 repository.apache.org 中关闭存储库,使用自解释的描述,例如,
`logging-parent` 版本 `7.8.0` RC1
投票发布
-
发送上传到 dist.apache.org/repos/dist/dev/logging/logging-parent/7.8.0 Subversion 存储库的投票电子邮件
修复生成的电子邮件中引用的 repository.apache.org URL! 它在每次 Nexus 部署后都会更改。
确保您的电子邮件以纯文本形式发送,即 不含 HTML!如果您使用的是 GMail,请在撰写邮件时启用“纯文本模式”。
-
一旦在设定的时间范围内达成共识,请在主题的第一篇文章中回复如下
Adding my +1. With that, the release passes with 3 binding +1 votes from <PMC-member-1>, ..., <PMC-member-N>, and me. I will continue the release process.
发布版本
在 git 存储库中
-
拉取最新的更改和标签
git fetch -p
-
标记发布版本(例如,
rel/7.8.0
)并推送它git tag -a rel/7.8.0 <COMMIT-ID> -m 7.8.0 (1) git push origin rel/7.8.0
1 您可以在生成的投票电子邮件中找到 COMMIT-ID
。ASF 基础设施将以
rel/
为前缀的 git 标签视为特殊标签,并确保它们出于溯源原因而不可变。 -
将
rel/7.8.0
标签(不是release/7.8.0
分支!)合并到main
git checkout main git rebase origin/main # Sync with the remote repository git merge rel/7.8.0 # Pull changes up to the newly created tag
-
在
pom.xml
中将修订属性设置为下一个开发版本(例如,7.9.0-SNAPSHOT
) -
提交更改并推送
main
分支 -
删除
release/7.8.0
分支的本地和远程副本git branch -D release/7.8.0 git push --delete origin release/7.8.0
在 ASF 基础设施中
-
在 repository.apache.org 中发布存储库
-
在 dist.apache.org/repos/dist Subversion 存储库中,
-
创建
release/logging/logging-parent/7.8.0
文件夹,并将已签名的源代码及其校验和从dev/logging/logging-parent/7.8.0
复制到那里 -
从
release/logging/logging-parent
中删除早期版本的文件夹 -
提交您在
release/logging/logging-parent
中的更改 -
删除
dev/logging/logging-parent/7.8.0
文件夹(将生成的公告电子邮件存储在某个地方,您稍后会需要它) -
提交您在
dev/logging/logging-parent
中的更改
这些步骤可以用 shell 总结如下
# Clone repositories (unless you already have them!) svn co https://dist.apache.org/repos/dist/dev/logging logging-dist-dev svn co https://dist.apache.org/repos/dist/release/logging logging-dist-rel # Update `release` folder cd logging-dist-rel mkdir -p logging-parent/7.8.0 cp ../logging-dist-dev/logging-parent/7.8.0/*-{bin,src}.* logging-parent/7.8.0/ svn add logging-parent/7.8.0 svn commit -m 'Add `logging-parent` version `7.8.0` distribution' # Update `dev` folder cd ../logging-dist-dev cp logging-parent/7.8.0/*-email-announce.txt /tmp svn rm logging-parent/7.8.0 svn commit -m 'Remove `logging-parent` version `7.8.0` files released'
-
-
在 reporter.apache.org 上报告发布版本
在 GitHub 中
-
-
使用
rel/7.8.0
标签 -
从生成的电子邮件中复制发布说明
-
-
关闭关联的里程碑 https://github.com/apache/logging-parent/milestones
发布版本网站
-
将
rel/7.8.0
标签(不是release/7.8.0
分支!)合并到main-site-pro
并推送它git checkout main-site-pro git rebase origin/main-site-pro # Sync with the remote repository git merge rel/7.8.0 # Pull changes up to the newly created tag git push origin main-site-pro
如果还没有
main-site-pro
分支从
rel/7.8.0
标签创建它git checkout -B main-site-pro rel/7.8.0 echo "# $RANDOM" >>.asf.yaml git commit -S .asf.yaml -m 'Dummy `.asf.yaml` change to trigger the CI' git push -u origin main-site-pro
-
验证
deploy-site
工作流 是否成功运行deploy-site-pro
作业 -
验证 项目网站 是否已更新
-
删除发布暂存网站分支
git push --delete origin release/7.8.0-site-stg-out
宣布发布版本
-
发送上传到 dist.apache.org/repos/dist/dev/logging/logging-parent/7.8.0 Subversion 存储库的公告电子邮件
确保您的电子邮件以纯文本形式发送,即 不含 HTML!如果您使用的是 GMail,请在撰写邮件时启用“纯文本模式”。