发布新版本

本指南适用于维护人员。这些特殊人员对一个或多个 Jekyll 存储库拥有写入权限,并帮助合并其他人的贡献。你可能会发现此处编写的内容很有趣,但它绝对不适合所有人。

在发布之前需要了解的最重要的事情是,不必感到紧张。大多数事情都是可逆的,即使你确实发布了不完整的 gem 版本,我们也可以随时跳过该版本。如果你感到不确定或不知道下一步该做什么,请随时联系其他维护人员。

增加版本

唯一需要手动增加版本的重要位置是 lib/jekyll/version.rb。调整该位置,其他所有内容都应正常工作。

版本大多为 "major.minor.patch" 格式。有时,我们可能会决定发布预发布版本,其格式为 "major.minor.patch.suffix"suffix 未标准化,可以是 pre.alpha1pre.rc2beta3 等任何内容。

要确定正确的版本,首先查阅我们的历史文档 History.markdown 中的 ## HEAD 部分。

  • 如果有一个名为 Major Enhancements 的小节
    • 递增版本字符串的 major 组件,并将 minorpatch 组件都重置为 0
    • 如果适用,添加 suffix
    • 例如,"3.9.1" => "4.0.0""3.9.1 => "4.0.0.alpha1"
    • 跳到发布过程的下一步。
  • 如果有一个名为 Minor Enhancements 的小节
    • 仅递增 minor 组件,并将补丁组件重置为 0
    • 如果适用,添加 suffix
    • 例如,"4.0.2" => "4.1.0""4.1.0" => "4.2.0.pre"
    • 跳到发布过程的下一步。
  • 对于其他任何内容,仅递增 patch 组件或 suffix 组件(如果适用)。例如,"4.0.2" => "4.0.3""4.1.0.beta3" => "4.1.0.rc"

撰写发布文章

如果尚未完成,可以使用附带的 rake 命令生成新的发布文章脚手架

bundle exec rake site:releases:new[3.8.0]

其中 3.8.0 应替换为新版本。

然后,撰写文章。务必感谢自上次发布以来做出贡献的所有合作者和维护者。可以使用以下命令生成他们的姓名日志

git shortlog -sn master...v3.7.2

其中 v3.7.2 是前一个版本的 git 标记。如果存储库中不存在该标记,请运行

git pull

完成发布文章后,务必为其打开拉取请求。

更新历史文档

History.markdown 的第一个标题替换为版本里程碑。如下所示

- ## HEAD
+ ## 3.7.1 / 2018-01-25

调整版本号和日期。下一次合并拉取请求时,将重新生成 ## HEAD 标题。

根据优先级递减重新排列小节(作为一个整体),如下所示

## 4.2.0 / 2020-12-14

### Major Enhancements

...

### Minor Enhancements

...

### Bug Fixes

...

### Security Fixes

...

### Optimization Fixes

...

### Development Fixes

...

### Site Enhancements

...

完成此操作后,通过运行以下命令更新网站

bundle exec rake site:generate

这会更新网站的变更日志,并将版本推送到其他各个地方。

建议您再手动检查一遍 History.markdown 文件,以防出现拼写错误等问题。您可以手动修复这些错误,并在生成网站变更日志后提交您的更改。

推送版本

在执行此步骤之前,请确保已完成以下事项

  • 已准备就绪发布帖子,理想情况下已通过之前的拉取请求发布。
  • 已完成所有之前的步骤,尤其是已暂存对 lib/jekyll/version.rb 的更改以提交。
  • 使用提交消息 "Release :gem: v[CURRENT_VERSION]" 将暂存的更改提交到本地 master 分支(最好使用此提交消息)。

现在只需运行此命令

git push upstream master

其中 upstream 引用 git@github.com:jekyll/jekyll.git

这将触发一个 GitHub Actions 工作流,该工作流将自动构建新的 gem,标记发布提交,将标签推送到 GitHub,然后最终将新的 gem 推送到 RubyGems。不必担心创建 GitHub 版本,@jekyllbot 会在发布工作流发布新标签时处理此问题。

然后,如果工作流已成功完成,您就完成了! :tada: 尽情庆祝吧!

如果您有权访问 @jekyllrb Twitter 帐户,您应该从那里发布发布帖子。如果没有,请让另一位维护者执行此操作或授予您访问权限。

构建文档

我们将文档打包为 :gem: Gem 以供离线使用。

这是使用 jekyll-docs 存储库完成的,并且在那里提供了更详细的说明。

对于非核心 gem

如果您不是 jekyll/jekyll 的维护者,那么在很多情况下,该过程会简单得多。通常,该过程仍然如下所示

  • 手动增加 gem 版本,通常在 lib/<plugin_name>/version.rb
  • 调整历史文件
  • 最好使用消息 "Release :gem: v[CURRENT_VERSION]" 提交对默认分支的更改
  • 推送到远程仓库
  • 欢呼

如果您不确定,请务必询问您项目的维护者!