AMP

AMP 版本發佈排程

AMP 的新版本每週二都會推送至所有 AMP 網頁。一旦 AMP 的變更合併到 amphtml 儲存庫的主要分支中,通常需要 1-2 週的時間才能讓所有使用者都能使用該變更。

AMPHTML 驗證工具有其自己的發佈排程

發佈管道

AMP 執行階段和擴充功能透過各種不同的發佈管道提供。每個管道都為開發人員和 AMP HTML 專案本身服務。請參閱發佈節奏章節,以更詳細地了解來自 ampproject/amphtml 儲存庫的程式碼如何以及何時進入發佈版本。

若要判斷 PR 是否已包含在下列任何發佈管道中,請尋找 GitHub 標籤PR Use: In CanaryPR Use: In ProductionPR Use: In LTS (詳情請參閱判斷您的變更是否包含在發佈版本中章節)。

每夜版 (Nightly)

每夜版 (nightly) 發佈管道 (顧名思義) 每週工作日都會更新。此程序是自動化的,且不保證任何給定的每夜版 (nightly) 發佈版本都沒有錯誤或其他問題。每天午夜 (太平洋時間) 過後,會選取當天最後一個「綠色」提交作為發佈截止點。綠色建構表示所有自動化測試都已在該建構中通過。

每夜版 (nightly) 發佈提供一種機制,可在問題到達流量更大的每週版 (weekly) 發佈管道之前快速偵測並解決問題。它還有助於減少受新引入問題影響的使用者數量。

可以選擇加入 每夜版 (nightly) 管道,以測試過去幾天合併的提取請求。請參閱 [developing.md] 中的選擇加入章節以了解詳細資訊。

每週版 (Weekly)

每週版 (weekly) 發佈管道被視為主要的「常青」發佈管道。每週,前一週的 beta 發佈版本會升級到 stable 發佈管道,而前一週的最後一個 每夜版 (nightly) 發佈版本會升級到 experimentalbeta 發佈管道 (請參閱詳細排程)。

建立發佈版本時,會使用兩組建構組態:canary 組態和 production 組態。experimentalbeta 發佈管道是根據相同的提交建構的。但是,experimental 管道使用 canary 組態,而 beta 管道使用 production 組態。canary 組態啟用可能在 production 中關閉的實驗性元件和功能。可以透過 實驗頁面選擇加入 experimentalbeta 管道。

stable 發佈管道是使用 production 組態建構的,並提供給大多數 AMP 流量。由於 beta 發佈管道也是從 production 組態建構的,因此它代表了將在下週成為 stable 的確切建構 (可能會進行少量挑選以修正最後一刻的問題;請參閱貢獻程式碼)。

Beta 版與實驗版 (Experimental) 管道

Beta 版實驗版 (Experimental) 管道是 AMP 下一個 Stable 版本的預先發佈候選版本。每週二 (除非遇到發佈凍結期的週),上週的 每夜版 (nightly) 會升級到開發人員選擇加入的 betaexperimental 管道。在為期 1 天的期間,我們會驗證這些管道中是否未引入任何功能或效能倒退問題,然後在週三將此發佈版本升級到一小部分流量。然後,同一個發佈版本會在下週二升級到 stable 管道。

可以選擇加入這些管道。請參閱 [developing.md] 中的選擇加入章節以了解詳細資訊。

選擇加入 Beta 版管道的目的在於

  • 測試和玩玩即將發佈的 AMP 執行階段版本
  • 在品質保證 (QA) 中使用,以確保您的網站與下一個版本的 AMP 相容

實驗版 (Experimental) 管道的目的在於

  • 測試和玩玩尚未向所有使用者提供的全新功能
  • 在品質保證 (QA) 中使用,以確保您的網站與仍在開發中的 AMP 即將推出的功能相容

實驗版 (Experimental) 管道 可能較不穩定,並且可能包含尚未向所有使用者提供的功能。

長期穩定版 (Long-Term Stable, LTS)

lts 發佈管道為一個月的間隔提供先前的 stable 建構版本。在每個月的第二個星期一,目前的 stable 發佈版本會升級到 lts。不建議所有 AMP 發佈商使用此管道。它提供的目的是讓希望不頻繁地對其網站執行 QA 週期發佈商可以透過將特定網頁選擇加入 lts 管道來做到這一點 (請參閱 lts 讀我檔案)。

如果該月的第二個星期一適逢假日,則升級將在發佈凍結期結束後執行。

使用 lts 發佈管道的發佈商不應使用新推出的功能。由於週期較長,lts 發佈版本可能會比 ampproject/amphtmlHEAD 版本落後長達七週。請參閱判斷您的變更是否包含在發佈版本中章節,以驗證變更是否已準備好用於您選擇的發佈週期。

判斷您的變更是否包含在發佈版本中

Type: Release GitHub 問題用於追蹤目前和過去發佈版本的狀態;從初始版本剪輯,到透過 experimental/beta 管道進行測試,再到最終透過 stablelts 管道發佈。有關發佈版本的公告會在 AMP Slack #release 管道上發佈 (註冊 Slack)。

您可以使用下列其中一種方法判斷給定發佈版本中包含哪些變更

發佈節奏

我們的發佈節奏刻意謹慎。

在判斷我們應該多久向所有人推送 AMP 新版本時,我們必須權衡許多因素,包括

  • 使用 AMP 建置的數百萬個網站/數十億個網頁的穩定性
  • 推送新版本時可能發生的快取失效
  • 快速推出新功能的期望

在考慮所有這些因素後,我們得出 1-2 週的推送週期。到目前為止,我們發現這是一個合理的折衷方案,但我們將繼續評估所有這些因素,並可能在未來做出變更。

詳細排程

我們盡力嚴格遵守此排程,但複雜情況可能會導致延遲。您可以在 Type: Release GitHub 問題AMP Slack #release 管道 (註冊 Slack) 中追蹤任何發佈版本的最新狀態。

  • 每週工作日:新的 每夜版 (nightly) 建構會自動剪輯並發佈到 AMP 每夜版 (Nightly) 管道
  • 週二 @ 太平洋時間上午 11 點:新的 experimentalbeta 發佈版本是從最近已知的良好每夜版 (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
  • 但是,新的 betaexperimental 發佈版本將在凍結期 (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 確定程式碼庫的穩定性被認為特別重要的其他情況。

在所有情況下,緊急情況除外,發佈凍結期將至少提前一個月宣佈。

請注意,除非另行宣佈,否則發佈凍結期並不表示程式碼凍結。程式碼仍可在發佈凍結期期間編寫、審查和合併。