AMP 版本發佈排程
AMP 的新版本每週二都會推送至所有 AMP 網頁。一旦 AMP 的變更合併到 amphtml 儲存庫的主要分支中,通常需要 1-2 週的時間才能讓所有使用者都能使用該變更。
AMPHTML 驗證工具有其自己的發佈排程
發佈管道
AMP 執行階段和擴充功能透過各種不同的發佈管道提供。每個管道都為開發人員和 AMP HTML 專案本身服務。請參閱發佈節奏章節,以更詳細地了解來自 ampproject/amphtml
儲存庫的程式碼如何以及何時進入發佈版本。
若要判斷 PR 是否已包含在下列任何發佈管道中,請尋找 GitHub 標籤PR Use: In Canary、PR Use: In Production 或 PR Use: In LTS (詳情請參閱判斷您的變更是否包含在發佈版本中章節)。
每夜版 (Nightly)
每夜版 (nightly) 發佈管道 (顧名思義) 每週工作日都會更新。此程序是自動化的,且不保證任何給定的每夜版 (nightly) 發佈版本都沒有錯誤或其他問題。每天午夜 (太平洋時間) 過後,會選取當天最後一個「綠色」提交作為發佈截止點。綠色建構表示所有自動化測試都已在該建構中通過。
每夜版 (nightly) 發佈提供一種機制,可在問題到達流量更大的每週版 (weekly) 發佈管道之前快速偵測並解決問題。它還有助於減少受新引入問題影響的使用者數量。
可以選擇加入 每夜版 (nightly) 管道,以測試過去幾天合併的提取請求。請參閱 [developing.md] 中的選擇加入章節以了解詳細資訊。
每週版 (Weekly)
每週版 (weekly) 發佈管道被視為主要的「常青」發佈管道。每週,前一週的 beta 發佈版本會升級到 stable 發佈管道,而前一週的最後一個 每夜版 (nightly) 發佈版本會升級到 experimental 和 beta 發佈管道 (請參閱詳細排程)。
建立發佈版本時,會使用兩組建構組態:canary 組態和 production 組態。experimental 和 beta 發佈管道是根據相同的提交建構的。但是,experimental 管道使用 canary 組態,而 beta 管道使用 production 組態。canary 組態啟用可能在 production 中關閉的實驗性元件和功能。可以透過 實驗頁面選擇加入 experimental 或 beta 管道。
stable 發佈管道是使用 production 組態建構的,並提供給大多數 AMP 流量。由於 beta 發佈管道也是從 production 組態建構的,因此它代表了將在下週成為 stable 的確切建構 (可能會進行少量挑選以修正最後一刻的問題;請參閱貢獻程式碼)。
Beta 版與實驗版 (Experimental) 管道
Beta 版和實驗版 (Experimental) 管道是 AMP 下一個 Stable 版本的預先發佈候選版本。每週二 (除非遇到發佈凍結期的週),上週的 每夜版 (nightly) 會升級到開發人員選擇加入的 beta 和 experimental 管道。在為期 1 天的期間,我們會驗證這些管道中是否未引入任何功能或效能倒退問題,然後在週三將此發佈版本升級到一小部分流量。然後,同一個發佈版本會在下週二升級到 stable 管道。
可以選擇加入這些管道。請參閱 [developing.md] 中的選擇加入章節以了解詳細資訊。
選擇加入 Beta 版管道的目的在於
- 測試和玩玩即將發佈的 AMP 執行階段版本
- 在品質保證 (QA) 中使用,以確保您的網站與下一個版本的 AMP 相容
實驗版 (Experimental) 管道的目的在於
- 測試和玩玩尚未向所有使用者提供的全新功能
- 在品質保證 (QA) 中使用,以確保您的網站與仍在開發中的 AMP 即將推出的功能相容
實驗版 (Experimental) 管道 可能較不穩定,並且可能包含尚未向所有使用者提供的功能。
長期穩定版 (Long-Term Stable, LTS)
lts 發佈管道為一個月的間隔提供先前的 stable 建構版本。在每個月的第二個星期一,目前的 stable 發佈版本會升級到 lts。不建議所有 AMP 發佈商使用此管道。它提供的目的是讓希望不頻繁地對其網站執行 QA 週期發佈商可以透過將特定網頁選擇加入 lts 管道來做到這一點 (請參閱 lts 讀我檔案)。
如果該月的第二個星期一適逢假日,則升級將在發佈凍結期結束後執行。
ampproject/amphtml
的 HEAD
版本落後長達七週。請參閱判斷您的變更是否包含在發佈版本中章節,以驗證變更是否已準備好用於您選擇的發佈週期。判斷您的變更是否包含在發佈版本中
Type: Release GitHub 問題用於追蹤目前和過去發佈版本的狀態;從初始版本剪輯,到透過 experimental/beta 管道進行測試,再到最終透過 stable 和 lts 管道發佈。有關發佈版本的公告會在 AMP Slack #release 管道上發佈 (註冊 Slack)。
您可以使用下列其中一種方法判斷給定發佈版本中包含哪些變更
- 每個發佈版本的 Type: Release GitHub 問題將包含指向特定發佈頁面的連結,其中列出了該發佈版本中包含的變更。
- PR Use: In Beta / Experimental、PR Use: In Stable 和 PR Use: In LTS 標籤會在 PR 進入每週版 (weekly) 或 lts 發佈版本時新增至 PR。發佈版本建立與標籤新增之間可能會存在延遲。
發佈節奏
我們的發佈節奏刻意謹慎。
在判斷我們應該多久向所有人推送 AMP 新版本時,我們必須權衡許多因素,包括
- 使用 AMP 建置的數百萬個網站/數十億個網頁的穩定性
- 推送新版本時可能發生的快取失效
- 快速推出新功能的期望
在考慮所有這些因素後,我們得出 1-2 週的推送週期。到目前為止,我們發現這是一個合理的折衷方案,但我們將繼續評估所有這些因素,並可能在未來做出變更。
詳細排程
我們盡力嚴格遵守此排程,但複雜情況可能會導致延遲。您可以在 Type: Release GitHub 問題和 AMP Slack #release 管道 (註冊 Slack) 中追蹤任何發佈版本的最新狀態。
- 每週工作日:新的 每夜版 (nightly) 建構會自動剪輯並發佈到 AMP 每夜版 (Nightly) 管道。
- 週二 @ 太平洋時間上午 11 點:新的 experimental 和 beta 發佈版本是從最近已知的良好每夜版 (nightly) 管道發佈版本建立的,並提供給選擇加入 AMP 實驗版 (Experimental) 管道 或 AMP Beta 版管道 的使用者。
- 週三:我們檢查實驗版 (Experimental) 管道和Beta 版管道使用者的錯誤報告,如果一切看起來正常,我們會將 beta 推送至 1% 的 AMP 網頁
- 週四至週一:我們繼續監控實驗版 (Experimental) 管道和Beta 版管道使用者以及具有 experimental/beta 建構版本的 1% 網頁的錯誤率和錯誤報告
- 下週二:beta 發佈版本完全升級到 stable (即,所有 AMP 網頁現在都將使用此發佈版本)
發佈凍結期
在某些情況下,我們會跳過 AMP 的生產發佈,稱為發佈凍結期。
如果宣佈 Week N 的一週發佈凍結期
- 前一週的 stable 發佈版本將額外保留一週,即,在 Week N 中不會像往常一樣將新發佈版本升級到 stable。
- 但是,新的 beta 和 experimental 發佈版本將在凍結期 (Week N) 期間建立。
- 正常排程將在 Week N+1 中恢復,即,Week N 的 experimental/beta 發佈版本會在 Week N+1 中升級到 stable。此外,新的 experimental/beta 發佈版本會在 Week N+1 中建立,並在 Week N+2 期間升級到 stable。
- 如果在 Week N-1 期間升級的 stable 發佈版本原本排定在 Week N 期間升級到 lts,則現在將在 Week N+1 的星期一升級到 lts。
- 每夜版 (nightly) 發佈版本仍會產生和升級,因為它們是完全自動化的。
發佈凍結期可能會因下列原因發生
- 沒有足夠的人員可以將 AMP 發佈版本推送至 stable 並監控它。目前,大多數執行 AMP 發佈的人員都位於美國,因此這通常會是美國主要假日 (獨立紀念日 (7 月 4 日)、感恩節 (11 月的第四個星期四)、聖誕節 (12 月 25 日) 和新年夜/元旦 (12 月 31 日/1 月 1 日)) 的週。
- 緊急情況,例如由 技術指導委員會 (TSC) 或執行發佈的人員確定的安全性或隱私權問題。
- TSC 確定程式碼庫的穩定性被認為特別重要的其他情況。
在所有情況下,緊急情況除外,發佈凍結期將至少提前一個月宣佈。
請注意,除非另行宣佈,否則發佈凍結期並不表示程式碼凍結。程式碼仍可在發佈凍結期期間編寫、審查和合併。