將模組發佈至私人登錄

已完成

您現在了解什麼是 Bicep 登錄,以及當您在組織中共用模組時,其可為您帶來什麼幫助。 在此單元中,您會了解如何將模組發佈至私人登錄。

模組路徑

過去當您使用模組時,可能已用過模組的檔案路徑,在範本中加以參考。 當您使用模組和私人登錄時,您必須使用不同的模組路徑,讓 Bicep 知道如何在登錄中找出模組。

以下是私人 Azure 容器登錄中模組的範例路徑:

Diagram that shows the syntax for a module path.

路徑包含四個區段:

  • 配置:Bicep 支援數種模組類型,稱為「配置」。 當您使用 Bicep 登錄時,配置為 br
  • 登錄:包含您要使用之模組的登錄名稱。 在上述範例中,登錄名稱為 toycompany.azurecr.io,這是容器登錄的名稱。
  • 模組識別碼:登錄內模組的完整路徑。
  • 標籤:標籤通常代表模組的版本,因為單一模組可以發佈多個版本。 您在下一個區段中會深入了解標籤和版本。

當您發佈自己的模組識別碼時,請使用有意義的識別碼來指出模組用途。 您可以選擇性地使用「命名空間」,其中使用斜線 (/) 來區別名稱的各個部分。 不過,Azure Container Registry 和 Bicep 都不知道階層。 其會將模組識別碼視為單一值。

標籤和版本

標籤代表模組的版本。 登錄中的單一模組可能有多個版本。 所有版本都會共用模組識別碼,但其有不同的標籤。 當您使用模組時,必須使用標籤來指定要使用的版本,讓 Bicep 知道要擷取的模組檔案。

最好謹慎規劃您將如何針對模組進行版本設定。 您需要制定的兩個重要決策就是要使用的「版本設定配置」與「版本設定原則」

版本設定配置

您的版本設定配置會決定產生版本號碼的方式。 常見的版本設定配置包括:

  • 「基本整數」可用來作為版本號碼。 例如,您的第一個版本可能稱為 1,您的第二個版本為 2,依此類推。 或者,您可以將前置詞新增至每個版本號碼,例如 v1v2
  • 「日期」也會產生良好的版本號碼。 例如,如果您在 2022 年 1 月 16 日發佈第一個版本的模組,您可以將版本命名為 2022-01-16 (使用 yyyy-mm-dd 格式)。 當您在 3 月 3 日發佈另一個版本時,則可將其命名為 2022-03-03
  • 「語意化版本控制系統」是軟體中經常使用的版本設定系統,其中的單一版本號碼包含多個部分。 每個部分都會顯示關於變更本質的不同資訊。

儘管您可以使用任何想要的版本設定配置,但最好選擇可依有意義的順序排序的內容。 數字與日期通常是不錯的選擇。

注意

Azure Container Registry 會儲存每個標籤的建立日期。 即使您未使用以日期為基礎的版本設定,還是可以看到此資訊。

版本設定原則

模組可讓您彈性地選擇建立新版本或更新現有版本的時機。 例如,您可以透過建立並發佈名為 latest 的單一版本,有效退出版本設定。 每當您需要變更模組時,只需更新該版本即可。 雖然這個原則可行,但這並不是個好方法。

相反地,如果您對現有模組進行較小變更,而不會影響其使用方式,則建立新版本可能不是個好主意。 您必須將新的版本號碼傳達給任何使用模組的人。

以下是通常可正常運作的版本設定原則:

  • 當您對模組進行重大變更時,請建立新版本。 重大變更包括可能會對使用您模組的人員產生影響的任何項目。 範例包括將另一個資源新增至模組或變更資源的屬性。
  • 每當您對模組進行小幅變更時 (有時稱為 Hotfix),則更新現有的模組版本。
  • 當舊版本不再相關時,或當您不希望任何人使用時,請將其刪除。

提示

請考慮您模組的使用者,並確定您會考量他們預期將發生什麼事。 如果有人多次使用您的模組並獲得一個結果,然後在 Hotfix 之後再次使用它但獲得不同結果,那麼,他們可能會感到很驚訝。 盡量避免讓您的使用者感到驚訝。

發佈模組

當您建立想要共用的 Bicep 模組時,您會如常撰寫 Bicep 檔案。 接著,您可以使用 bicep publish 命令,將檔案「發佈」至登錄。 當您發佈時,必須指定要將模組儲存到其中的模組路徑:

az bicep publish \
   --file module.bicep \
   --target 'br:toycompany.azurecr.io/mymodules/modulename:moduleversion'
bicep publish module.bicep `
   --target 'br:toycompany.azurecr.io/mymodules/modulename:moduleversion'

發佈作業會執行您在建置或部署 Bicep 檔案時所進行的相同驗證步驟。 這些步驟包括:

  • 檢查您的程式碼沒有任何語法錯誤。
  • 驗證您指定的是有效的資源定義。
  • 執行 Bicep Linter,以驗證您的程式碼會通過一系列的品質檢查。

如果驗證步驟通過,即會將模組發佈至您的登錄。