版本

管理發佈

發佈是指專案正式發佈新版本,以便社群可以使用它。發佈有兩種型別

  • 遵循 語意化版本控制 且被視為可供生產環境使用的常規發佈。
  • 不被視為可供生產環境使用,旨在讓社群預覽即將到來的變更的預先發佈。

發佈管理員

技術指導委員會 (TSC) 的一名成員會被指派管理每個排定的發佈。發佈管理員會在發佈前一天的 TSC 會議上決定。

發佈管理員負責

  1. 週五的排定發佈
  2. 週末監控議題
  3. 判斷週一是否需要發佈修補程式
  4. 發佈修補程式 (如果需要)

發佈管理員應在發佈後的週一徵求整個團隊的意見,以再次確認是否需要發佈修補程式。

發佈管理員需要有 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.19.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.19.26.0 最新
10.0.0 9.25.0 9.25.19.26.0 maintenance

緊急發佈

緊急發佈是未經計畫的,並非定期排定的發佈或預期的修補程式發佈。

一般來說,我們盡量不進行緊急發佈。即使有回歸問題,最好還是等到週一,看看是否有其他問題出現,以便修補程式發佈可以修復盡可能多的問題。

唯一的例外是,如果 ESLint 對大多數當前使用者來說完全無法使用。例如,我們曾經推送了一個對所有人都有錯誤的發佈版本,因為它缺少一些核心檔案。在這種情況下,緊急發佈是適當的。

疑難排解

npm publish 返回 404

這通常是由於與 npm 權杖相關的權限錯誤所致。

  • release-please 使用在一年後過期的細化存取權杖。此權杖與 eslintbot npm 帳戶繫結,需要每年三月重新產生。如果存取權杖已過期,npm publish 將返回 404。
  • Jenkins 使用沒有過期日的傳統存取權杖,但它確實需要 2FA 程式碼才能發佈。如果 2FA 程式碼不正確,則 npm publish 將返回 404。
變更語言