@abgov/nx-release 中文文档教程
About this project
这是阿尔伯塔政府 - DIO - 用于语义发布的 Nx 插件。
该项目包含 Nx 插件生成器,用于设置具有语义发布的 monorepo 配置以及用于语义发布的插件。
Semantic release / monorepo
在 monorepo 中使用语义发布存在多重挑战:
- Each release project needs distinct release tags.
- Each project should be evaluated based on only commits related to it.
- Interdependencies between projects need to be handled.
- Interdependencies between publishable/releasable projects require coordination of releases.
- Channel (next-major, next, latest) information is stored in a git note on a semantic-release ref and does not distinguished between tags (and consequently projects).
对于 (1)、(2) 和 (3),该项目部分使用了 semantic-release-monorepo 以及 Nx 功能:
- Each project uses a distinct
tagFormat
; - A custom plugin wraps default plugins for
analyzeCommits
andgenerateNotes
and filters for only relevant commits; - Nx
dep-graph
is used to determine dependency paths that should also be included.
(4) 当前未处理,但利用 Nx 功能的解决方案是大方向。 例如,Nx 支持基于“受影响”的任务有序执行。
已知问题 (5) 未得到处理,当来自多个项目的发布标签在同一次提交时,非预发布通道升级将导致仅升级第一个项目。
在语义发布中,通道升级与下一个版本分析分开进行,并且没有扩展挂钩来修改行为。 具有不同版本格式(例如 1.0.0-beta.x)的预发布频道被排除在该过程之外并且似乎可以工作。
About this project
This is the Government of Alberta - DIO - Nx plugin for Semantic Release.
The project contains both the Nx plugin generator for setting up a monorepo with semantic release configuration as well as a plugin for semantic release.
Semantic release / monorepo
There are multiple challenges with using semantic release in a monorepo:
- Each release project needs distinct release tags.
- Each project should be evaluated based on only commits related to it.
- Interdependencies between projects need to be handled.
- Interdependencies between publishable/releasable projects require coordination of releases.
- Channel (next-major, next, latest) information is stored in a git note on a semantic-release ref and does not distinguished between tags (and consequently projects).
For (1), (2), and (3) in part this project uses the approach from semantic-release-monorepo along with Nx capabilities:
- Each project uses a distinct
tagFormat
; - A custom plugin wraps default plugins for
analyzeCommits
andgenerateNotes
and filters for only relevant commits; - Nx
dep-graph
is used to determine dependency paths that should also be included.
(4) is not currently handled, but a solution leveraging Nx capabilities is the general direction. For example, Nx supports ordered execution of tasks based on 'affected'.
KNOWN ISSUE (5) from above is not handled, and non-prerelease channel upgrades will result in only the first project being upgraded when release tags from multiple projects are on the same commit.
In Semantic Release the channel upgrade is done separately from the next version analysis and there are no extension hooks to modify the behaviour. Prerelease channels with a distinct version format (e.g. 1.0.0-beta.x) are excluded from that process and appear to work.
你可能也喜欢
- 3dimageview 中文文档教程
- @01ht/ht-layout-row 中文文档教程
- @0x-jerry/v2ray-schema 中文文档教程
- @0x/contracts-libs 中文文档教程
- @1productaweek/react-modal-hooks 中文文档教程
- @2o3t/electron-window-manager 中文文档教程
- @36node/bus-chart-sdk 中文文档教程
- @36node/redux-api 中文文档教程
- @36node/redux-form 中文文档教程
- @3t-transform/transform-datatransformation-lib 中文文档教程