練習 - 建立及合併分支

已完成

回到玩具公司,您的網站開發人員想要新增 Azure Cosmos DB 資料庫,以儲存公司所銷售玩具的相關資料。 開發人員要求您更新 Bicep 程式碼,以新增 Cosmos DB 資源。 不過,他們還沒準備好要進行變更。 他們只希望您能夠在完成修改時備妥這些變更。

在此練習中,您會在存放庫分支上新增新的 Bicep 模組。 在此過程中,您將會:

  • 建立分支並切換至該分支。
  • 變更分支上的 Bicep 程式碼。
  • 切換回您的主要分支。
  • 將分支合併至 main

在您的存放庫中建立和簽出分支

  1. 使用 Visual Studio Code 終端執行下列命令,以建立和簽出新分支:

    git checkout -b add-database
    
  2. 執行下列命令以檢查存放庫狀態:

    git status
    

    輸出會看似像以下範例:

    On branch add-database
    nothing to commit, working tree clean
    

    輸出的第一行會告知您 Git 位於 add-database 分支上。

  3. 在 Visual Studio Code 中,查看視窗底部左側的狀態列。 請注意,分支名稱已變更為 add-database

    如同您已執行的其他 Git 命令,Visual Studio Code 會保持最新狀態,並包含您 Git 存放庫中的變更,即使是您簽出分支時。

更新您分支上的檔案

現在您已建立分支,您將為網站的 Azure Cosmos DB 帳戶新增 Bicep 模組。

  1. deploy 資料夾的 modules 子資料夾中,建立名為 cosmos-db.bicep 的新檔案。

  2. 開啟並儲存空白的 cosmos-db.bicep 檔案,讓 Visual Studio Code 載入 Bicep 工具。

  3. 將下列程式碼複製到 cosmos-db.bicep

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The type of environment. This must be nonprod or prod.')
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    @description('The name of the Cosmos DB account. This name must be globally unique.')
    param cosmosDBAccountName string
    
    var cosmosDBDatabaseName = 'ProductCatalog'
    var cosmosDBDatabaseThroughput = (environmentType == 'prod') ? 1000 : 400
    var cosmosDBContainerName = 'Products'
    var cosmosDBContainerPartitionKey = '/productid'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
      name: cosmosDBAccountName
      location: location
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
      }
    }
    
    resource cosmosDBDatabase 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2024-05-15' = {
      parent: cosmosDBAccount
      name: cosmosDBDatabaseName
      properties: {
        resource: {
          id: cosmosDBDatabaseName
        }
        options: {
          throughput: cosmosDBDatabaseThroughput
        }
      }
    
      resource container 'containers' = {
        name: cosmosDBContainerName
        properties: {
          resource: {
            id: cosmosDBContainerName
            partitionKey: {
              kind: 'Hash'
              paths: [
                cosmosDBContainerPartitionKey
              ]
            }
          }
          options: {}
        }
      }
    }
    
  4. 儲存並關閉 cosmos-db.bicep 檔案。

  5. 開啟 main.bicep 檔案。

  6. appServiceAppName 參數定義下方新增下列參數定義:

    @description('The name of the Cosmos DB account. This name must be globally unique.')
    param cosmosDBAccountName string = 'toyweb-${uniqueString(resourceGroup().id)}'
    
  7. 將下列模組定義新增至 appService 模組定義下方:

    module cosmosDB 'modules/cosmos-db.bicep' = {
      name: 'cosmos-db'
      params: {
        location: location
        environmentType: environmentType
        cosmosDBAccountName: cosmosDBAccountName
      }
    }
    
  8. 儲存並關閉 main.bicep 檔案。

檢閱差異並認可變更

檢閱檔案差異之後,請暫存並認可變更。 您可以選擇是否要使用 Git CLI 或 Visual Studio Code 來認可檔案。 此範例使用 Git CLI。

  1. 使用 Visual Studio Code 中的原始檔控制,查看這兩個檔案的差異。

    請注意 main.bicep 檔案中醒目提示的變更行。

  2. 檢閱準備好認可的檔案。

    git status
    

    輸出將看起來如下列範例。

    On branch add-database
     Changes not staged for commit:
       (use "git add <file>..." to update what will be committed)
       (use "git restore <file>..." to discard changes in working directory)
             modified:   deploy/main.bicep
    
     Untracked files:
       (use "git add <file>..." to include in what will be committed)
             deploy/modules/cosmos-db.bicep
    
     no changes added to commit (use "git add" and/or "git commit -a")
    
  3. 暫存這兩個檔案的變更。

    git add .
    

    點 (.) 暫存變更的所有檔案。

  4. 認可變更。

    git commit --message "Add Cosmos DB module"
    

    輸出將看起來如下列範例。

    [add-database 513f700] Add Cosmos DB module
      2 files changed, 71 insertions(+)
      create mode 100644 deploy/modules/cosmos-db.bicep
    

切換分支

現在您已在分支上進行變更,您可以確認變更只會顯示在 add-database 分支上。

  1. 簽出 main 分支。 您可以使用下列其中一種方法:

    • 在 Visual Studio Code 終端機中,輸入下列命令:

      git checkout main
      
    • 在視窗底部的 Visual Studio Code 狀態列中,選取目前顯示 add-database 的分支名稱。

      分支清單會隨即出現。 選取 main 分支。

  2. 在 Visual Studio Code 的 [Explorer] 窗格中,開啟 main.bicep 檔案。

    請注意,您所做的 Azure Cosmos DB 變更都未包含在內。 既然您已經切換至 main 分支,此處就不會有資料庫模組。 別擔心,這些變更會安全地儲存在您的 add-database 分支上。

將分支合併

您的網站小組已測試過變更,現在準備啟動包含 Azure Cosmos DB 資料庫的更新網站。 您會將 add-database 分支合併到 main 分支中。

  1. 藉由執行 git status 和查看狀態列中的分支名稱,確認您是在 main 分支上。

  2. 在 Visual Studio Code 終端機中,輸入下列命令,將來自 add-database 分支的變更合併到 main 分支:

    git merge add-database
    
  3. 在 Visual Studio Code 的 [Explorer] 窗格中,開啟 main.bicep 檔案。

    請注意,資料庫模組現在會出現在檔案中。 您現在已在 main 分支上更新已知良好的 Bicep 檔案,以包含您的 add-database 分支變更。

  4. 在 Visual Studio Code 終端機輸入下列命令,以刪除 add-database 分支,因為您不再需要該分支:

    git branch -d add-database