管理發佈
發佈是指專案正式發佈新版本,以便社群可以使用它。發佈有兩種型別
- 遵循 語意化版本控制 且被視為可供生產環境使用的常規發佈。
- 不被視為可供生產環境使用,旨在讓社群預覽即將到來的變更的預先發佈。
發佈管理員
技術指導委員會 (TSC) 的一名成員會被指派管理每個排定的發佈。發佈管理員會在發佈前一天的 TSC 會議上決定。
發佈管理員負責
- 週五的排定發佈
- 週末監控議題
- 判斷週一是否需要發佈修補程式
- 發佈修補程式 (如果需要)
發佈管理員應在發佈後的週一徵求整個團隊的意見,以再次確認是否需要發佈修補程式。
發佈管理員需要有 ESLint 在 npm 上進行發佈的雙重驗證存取權。
發佈溝通
每個排定的發佈都與自動產生的發佈議題相關聯 (範例)。發佈議題是團隊了解發佈狀態的資訊來源,並包含發佈管理員應遵循的檢查清單。
流程
在排定發佈的當天,發佈管理員應遵循發佈議題中的步驟。
所有與發佈相關的溝通都發生在 Discord 的 #team
頻道中的主題中。
在排定發佈後的週一,發佈管理員需要判斷是否需要發佈修補程式。如果自排定發佈以來發生以下任何一種情況,則視為需要發佈修補程式
- 回歸錯誤導致人們的語法檢查建置失敗,而之前是通過的。
- 任何對使用者造成許多問題的錯誤 (通常由於新功能而發生)。
應盡快在週一做出修補程式發佈的決定。如果需要發佈修補程式,則遵循與排定發佈流程相同的步驟。
在極少數情況下,如果已知該發佈存在嚴重的回歸問題,且週一尚未修復,則可能需要發佈第二次修補程式。如果發生這種情況,發佈管理員應在發佈議題中說明情況,並保持該議題開啟,直到所有修補程式發佈完成為止。但是,通常最好在下一個發佈週期修復錯誤,而不是發佈第二次修補程式。
在修補程式發佈後 (或不需要發佈修補程式),關閉發佈議題,並通知團隊他們可以再次開始合併語意化版本次要變更。
發佈參數
下表顯示在 Jenkins 上啟動 eslint-js Release
(@eslint/js
套件發佈) 和 eslint Release
(eslint
套件發佈) 作業時,選擇 RELEASE_TYPE
的選項範例,以發佈具有最新功能的新版本。在這兩個作業中,都應選擇 main
作為 RELEASE_BRANCH
。
HEAD 版本 | 預期的下一個版本 | eslint-js 發佈 RELEASE_TYPE |
---|---|---|
9.25.0 |
9.25.1 |
修補 |
9.25.0 |
9.26.0 |
次要 |
9.25.0 |
10.0.0-alpha.0 |
alpha.0 |
10.0.0-alpha.0 |
10.0.0-alpha.1 |
alpha |
10.0.0-alpha.1 |
10.0.0-beta.0 |
beta |
10.0.0-beta.0 |
10.0.0-beta.1 |
beta |
10.0.0-beta.1 |
10.0.0-rc.0 |
rc |
10.0.0-rc.0 |
10.0.0-rc.1 |
rc |
10.0.0-rc.1 |
10.0.0 |
主要 |
HEAD 版本 | 預期的下一個版本 | eslint 發佈 RELEASE_TYPE |
---|---|---|
9.25.0 |
9.25.1 或 9.26.0 |
最新 |
9.25.0 |
10.0.0-alpha.0 |
alpha |
10.0.0-alpha.0 |
10.0.0-alpha.1 |
alpha |
10.0.0-alpha.1 |
10.0.0-beta.0 |
beta |
10.0.0-beta.0 |
10.0.0-beta.1 |
beta |
10.0.0-beta.1 |
10.0.0-rc.0 |
rc |
10.0.0-rc.0 |
10.0.0-rc.1 |
rc |
10.0.0-rc.1 |
10.0.0 |
最新 |
當發佈先前主要行的新版本時,選擇 RELEASE_TYPE
的選項取決於 HEAD 版本是否為預先發佈。在這兩個作業中,都應選擇對應的開發分支 (例如,v9.x-dev
) 作為 RELEASE_BRANCH
。
HEAD 版本 | 先前的主要行版本 | 預期的下一個版本 | eslint-js 發佈 RELEASE_TYPE |
---|---|---|---|
10.0.0-alpha.0 |
9.25.0 |
9.25.1 |
修補 |
10.0.0-alpha.0 |
9.25.0 |
9.26.0 |
次要 |
10.0.0 |
9.25.0 |
9.25.1 |
maintenance.patch |
10.0.0 |
9.25.0 |
9.26.0 |
maintenance.minor |
HEAD 版本 | 先前的主要行版本 | 預期的下一個版本 | eslint 發佈 RELEASE_TYPE |
---|---|---|---|
10.0.0-alpha.0 |
9.25.0 |
9.25.1 或 9.26.0 |
最新 |
10.0.0 |
9.25.0 |
9.25.1 或 9.26.0 |
maintenance |
緊急發佈
緊急發佈是未經計畫的,並非定期排定的發佈或預期的修補程式發佈。
一般來說,我們盡量不進行緊急發佈。即使有回歸問題,最好還是等到週一,看看是否有其他問題出現,以便修補程式發佈可以修復盡可能多的問題。
唯一的例外是,如果 ESLint 對大多數當前使用者來說完全無法使用。例如,我們曾經推送了一個對所有人都有錯誤的發佈版本,因為它缺少一些核心檔案。在這種情況下,緊急發佈是適當的。
疑難排解
npm publish
返回 404
這通常是由於與 npm 權杖相關的權限錯誤所致。
release-please
使用在一年後過期的細化存取權杖。此權杖與eslintbot
npm 帳戶繫結,需要每年三月重新產生。如果存取權杖已過期,npm publish
將返回 404。- Jenkins 使用沒有過期日的傳統存取權杖,但它確實需要 2FA 程式碼才能發佈。如果 2FA 程式碼不正確,則
npm publish
將返回 404。