semantic release
资源
资源 | 组织 | 类型 |
---|---|---|
语义化发布 (Semantic release) | sentimentalversioning | 规范 |
semantic-release | semantic-release | 工具 |
semantic version | semver | 规范 |
semantic release gitbook | semantic-release | 文档 |
Semantic Release
Usage
1 | # 本地测试 |
Angular Standard Commit
1 | <type>(<scope>): <short summary> |
links:
Common Conventional Commit
1 | <type>[optional scope]: <description> |
提交说明包含了下面的结构化元素,以向类库使用者表明其意图:
-
fix: 类型 为 fix 的提交表示在代码库中修复了一个 bug(这和语义化版本中的 PATCH 相对应)。
-
feat: 类型 为 feat 的提交表示在代码库中新增了一个功能(这和语义化版本中的 MINOR 相对应)。
-
BREAKING CHANGE: 在脚注中包含 BREAKING CHANGE: 或 <类型>(范围) 后面有一个!的提交,表示引入了破坏性 API 变更(这和语义化版本中的 MAJOR 相对应)。 破坏性变更可以是任意 类型 提交的一部分。
-
除 fix: 和 feat: 之外,也可以使用其它提交 类型 ,例如 @commitlint/config-conventional(基于 Angular 约定)中推荐的 build:、chore:、 ci:、docs:、style:、refactor:、perf:、test:,等等。
-
脚注中除了 BREAKING CHANGE:
,其它条目应该采用类似 git trailer format 这样的惯例。
其它提交类型在约定式提交规范中并没有强制限制,并且在语义化版本中没有隐式影响(除非它们包含 BREAKING CHANGE)。 可以为提交类型添加一个围在圆括号内的范围,以为其提供额外的上下文信息。例如 feat (parser): adds ability to parse arrays.。
Release Workflow
常用的 release workflow 方式有如下 3 种:
QA
Integrate with CI
GitLab CI
links:
GitLab CI Configuration
-
GITLAB_TOKEN: 权限认证
-
gitlab plugin: 用于 gitlab 发布 release 插件
-
gitlab assets: 用于附加到 release 的 assets
links:
Github Action
要使用 semantic-release 工具配置项目的 GitHub Action 以实现自动化版本发布,需要做以下几步:
-
安装 semantic-release 和相关插件。在项目的根目录下创建一个 package.json 文件,然后添加以下内容:
1 | { |
然后运行 npm install 来安装这些依赖.
-
创建一个.releaserc 文件来配置 semantic-release。在项目的根目录下创建一个.releaserc 文件,然后添加以下内容:
1 | { |
-
在 GitHub Actions 中配置 semantic-release。在.github/workflows 目录下创建一个新的 workflow 文件,例如 release.yml,然后添加以下内容:
1 | name: Release |
这个 workflow 会在每次 push 到 main 分支时运行,自动分析 commit messages 来决定新的版本号,然后创建一个新的 GitHub release。
links:
-
https://github.com/open-turo/actions-python/blob/main/release/action.yaml
-
https://github.com/spaceship-prompt/spaceship-prompt/blob/master/.github/workflows/release.yml
Semantic Release Plugin
links:
semantic-release/commit-analyzer
用于解析提交消息,并判断是否需要执行发布 release
links:
semantic-release/release-notes-generator
用于将 commit-analyzer
解析出的符合规范的提交消息筛选并根据规则 conventional changelog configuration spec 生成发布信息说明
links:
semantic-release/changelog
用于将 release-notes-generator
生成内容更新到 CHANGELOG.md
google/semantic-release-replace-plugin
用于在发布时替换内容.
在发布 release 时替换版本.
1 | [ |
links:
-
https://github.com/jpoehnelt/semantic-release-replace-plugin
-
https://gitlab.com/msclock/gitlab-ci-templates/-/blob/master/.releaserc.js
semantic-release/git
用于在触发发布时的提交更改回仓库,tag 将会创建在当前提交上
1 | [ |
links:
semantic-release/exec
语义发布插件执行自定义 shell 命令。
links: