语义释放自动化整个软件包发布工作流程,包括:确定下一个版本号,生成发行说明并发布软件包。
这消除了人类情绪和版本编号之间的直接联系,严格遵循语义版本规范并传达变化对消费者的影响。
相信我们,这将使您的工作流程更好。 - Egghead.io
全自动释放
执行语义版本指定
用户立即使用新功能和修复程序
通知维护者和用户新版本
使用正式的提交消息约定来记录代码库中的更改
根据GIT合并,在不同的分销渠道(例如NPM DIST标签)上发布
与您的连续集成工作流程集成
避免与手动版本相关的潜在错误
通过插件支持任何软件包经理和语言
简单且可重复使用的配置,可共享配置
支持NPM软件包出处,通过对GitHub行动的签署证明来促进供应链安全提高
语义释放使用提交消息来确定代码库中更改的消费者影响。在对提交消息的正式约定之后,语义释放会自动确定下一个语义版本编号,生成一个变形值并发布该版本。
默认情况下,语义释放使用Angular提交消息约定。可以使用 @语义释放/提示 - 安分析仪和 @语义释放/realease-notes-generator插件的preset
或config
选项更改提交消息格式。
诸如commitizen或commitlint之类的工具可用于帮助贡献者并执行有效的提交消息。
下表显示了在运行semantic-release
时为您提供哪种发行类型(使用默认配置):
提交消息 | 释放类型 |
---|---|
fix(pencil): stop graphite breaking when too much pressure applied | 补丁程序释放 |
feat(pencil): add 'graphiteWidth' option | 次要功能发布 |
perf(pencil): remove graphiteWidth option BREAKING CHANGE: The graphiteWidth option has been removed. The default graphite width of 10mm is always used for performance reasons. | 主要的打破释放 (请注意, BREAKING CHANGE: 令牌必须在提交的页脚中) |
在发行分支上每个成功构建后,语义释放旨在在CI环境上执行。这样一来,任何人都直接参与了释放过程,并且保证发行版是无浪漫和无情的。
对于每个新提交的提交,添加到一个发行分支之一(例如: master
, main
, next
, beta
),使用git push
或通过合并拉的请求或从另一个分支合并,触发CI构建并运行semantic-release
自从上次版本以来影响软件包功能以来的代码库更改,请命令发行。
语义释放提供了各种控制时间,内容和听众发行版本的方法。请参阅以下食谱中的示例工作流程:
使用分配渠道
维护版本
预释放
运行测试后,命令semantic-release
将执行以下步骤:
步 | 描述 |
---|---|
验证条件 | 验证所有条件以进行发布。 |
获取最后一个版本 | 通过分析GIT标签,获得与上次版本相对应的提交。 |
分析提交 | 根据自上次发行版以来添加的提交确定发布的类型。 |
验证发布 | 验证释放符合性。 |
生成笔记 | 自上次版本以来添加的提交的发行说明生成发行说明。 |
创建git标签 | 创建一个与新版本版本相对应的git标签。 |
准备 | 准备发行版。 |
发布 | 发布版本。 |
通知 | 通知新版本或错误。 |
为了使用语义释放,您需要:
在GIT存储库中托管您的代码
使用连续的集成服务,使您可以安全地设置凭据
符合我们连续集成环境中安装的版本要求的GIT CLI版本
一个符合我们连续集成环境中安装的版本要求的node.js版本
用法
入门
安装
CI配置
配置
插件
工作流程配置
可共享配置
扩展
插件
可共享配置
食谱
CI配置
GIT托管服务
发布工作流程
开发人员指南
JavaScript API
插件开发
可共享配置开发
支持
资源
常见问题
故障排除
节点版本要求
节点支持策略
Github讨论
堆栈溢出
叽叽喳喳
让人们知道您的软件包是使用语义释放发布的,并且在您的自述中加入了哪个委员会。
[](https://github.com/semantic-rease /语义释放)
![]() | ![]() | ![]() |
---|---|---|
格雷戈尔·马丁努斯(Gregor Martynus) | Pierre Vanduynslager | 马特·特拉维(Matt Travi) |
![]() | ![]() | ![]() | ![]() | ![]() |
---|---|---|---|---|
斯蒂芬·伯恩曼(StephanBönnemann) | Rolf Erik Lekang | 约翰内斯·乔格·施密特(JohannesJörgSchmidt) | Finn Pauls | 克里斯托夫·维茨科 |