語義釋放自動化整個軟件包發布工作流程,包括:確定下一個版本號,生成發行說明並發佈軟件包。
這消除了人類情緒和版本編號之間的直接聯繫,嚴格遵循語義版本規範並傳達變化對消費者的影響。
相信我們,這將使您的工作流程更好。 - 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 | 克里斯托夫·維茨科 |