项目发布说明

本节介绍如何发布扩展自 logging-parent POM 并使用其可重用 CI 工作流的项目的全新版本。

共享说明硬编码了以下常量

项目 ID

logging-parent

项目版本

7.8.0

您必须为您的项目调整这些值! 例如,项目 ID 需要替换为 Log4j 的 log4j,Log4j Kotlin 的 log4j-kotlin 等。

准备发布

  1. 创建发布分支

    git fetch -p
    git checkout -B release/7.8.0 origin/main
  2. 准备发布的源代码

    1. 更新 pom.xml 中的 revision 属性

      如果您的项目在站点源代码中引用了自己的版本,则也需要更新这些源代码。例如,logging-parent 需要更新 site-project.version

    2. 发布变更日志

      ./mvnw -N -P changelog-release
    3. 编辑发布说明(例如,src/changelog/7.8.0/.release-notes.adoc.ftl

  3. 提交并推送您的更改

    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 分支来完善它。

  4. 验证关联的 GitHub Actions 工作流 是否成功

    1. pom.xml 中的 project.build.outputTimestamp 属性已更新

    2. 已签名的工件 已上传到 repository.apache.org 中的暂存库

    3. 已签名的发行版及其校验和(例如,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 存储库(以及辅助文件;网站、电子邮件文本等)

    4. 发布暂存网站 使用新填充的 release/7.8.0-site-stg-out 分支进行部署

    如果不是,请提交必要的修复,推送并重复。

  5. repository.apache.org关闭存储库,使用自解释的描述,例如,`logging-parent` 版本 `7.8.0` RC1

投票发布

  1. 发送上传到 dist.apache.org/repos/dist/dev/logging/logging-parent/7.8.0 Subversion 存储库的投票电子邮件

    修复生成的电子邮件中引用的 repository.apache.org URL! 它在每次 Nexus 部署后都会更改。

    确保您的电子邮件以纯文本形式发送,即 不含 HTML!如果您使用的是 GMail,请在撰写邮件时启用“纯文本模式”

  2. 一旦在设定的时间范围内达成共识,请在主题的第一篇文章中回复如下

    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 存储库中

  1. 拉取最新的更改和标签

    git fetch -p
  2. 标记发布版本(例如,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 标签视为特殊标签,并确保它们出于溯源原因而不可变。

  3. 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
  4. pom.xml 中将修订属性设置为下一个开发版本(例如,7.9.0-SNAPSHOT

  5. 提交更改并推送 main 分支

  6. 删除 release/7.8.0 分支的本地和远程副本

    git branch -D release/7.8.0
    git push --delete origin release/7.8.0

在 ASF 基础设施中

  1. repository.apache.org发布存储库

  2. dist.apache.org/repos/dist Subversion 存储库中,

    1. 创建 release/logging/logging-parent/7.8.0 文件夹,并将已签名的源代码及其校验和从 dev/logging/logging-parent/7.8.0 复制到那里

    2. release/logging/logging-parent 中删除早期版本的文件夹

    3. 提交您在 release/logging/logging-parent 中的更改

    4. 删除 dev/logging/logging-parent/7.8.0 文件夹(将生成的公告电子邮件存储在某个地方,您稍后会需要它)

    5. 提交您在 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'
  3. reporter.apache.org 上报告发布版本

在 GitHub 中

  1. 在 GitHub 中创建一个新的发布版本:

    • 使用 rel/7.8.0 标签

    • 从生成的电子邮件中复制发布说明

  2. 关闭关联的里程碑 https://github.com/apache/logging-parent/milestones

发布版本网站

  1. 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
  2. 验证 deploy-site 工作流 是否成功运行 deploy-site-pro 作业

  3. 验证 项目网站 是否已更新

  4. 删除发布暂存网站分支

    git push --delete origin release/7.8.0-site-stg-out

宣布发布版本

  1. 发送上传到 dist.apache.org/repos/dist/dev/logging/logging-parent/7.8.0 Subversion 存储库的公告电子邮件

    确保您的电子邮件以纯文本形式发送,即 不含 HTML!如果您使用的是 GMail,请在撰写邮件时启用“纯文本模式”