练习 - 创建并合并分支

已完成

回到玩具公司,你的网站开发人员计划添加新的 Azure Cosmos DB 数据库,用来存储有关公司销售的玩具的数据。 开发人员要求你更新 Bicep 代码以添加 Cosmos DB 资源。 不过,他们还没有准备好进行更改。 他们希望在完成修改后由你准备好更改。

本练习中,你将在存储库的分支中添加新的 Bicep 模块。 在此过程中,你将:

  • 创建分支并切换到该分支。
  • 在分支上更改 Bicep 代码。
  • 切换回主分支。
  • 将分支合并到主分支。

在存储库中创建和签出分支

  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. 签出主分支。 可以使用以下两种方法中的一种:

    • 在 Visual Studio Code 终端中输入以下命令:

      git checkout main
      
    • 在窗口底部的 Visual Studio Code 状态栏中,选择当前显示“add-database”的分支名称。

      分支列表随即显示。 选择主分支。

  2. 在 Visual Studio Code“资源管理器”窗格中,打开 main.bicep 文件。

    请注意,未包含对 Azure Cosmos DB 所做的任何更改。 切换到主分支后,数据库模块并不在这里。 不必担心,它们安全地存储在 add-database 分支上。

合并分支

你的网站团队已经测试了更改,现在已准备好启动包含 Azure Cosmos DB 数据库的更新后的网站。 将“add-database”分支合并到主分支中。

  1. 通过运行 git status 和查看状态栏中的分支名称,确认你位于主分支上。

  2. 在 Visual Studio Code 终端中,输入以下命令,将“add-database”分支的更改合并到主分支:

    git merge add-database
    
  3. 在 Visual Studio Code“资源管理器”窗格中,打开 main.bicep 文件。

    请注意,文件中现在会显示数据库模块。 现已更新主分支上已知良好的 Bicep 文件,以包含来自“add-database”分支的更改。

  4. 在 Visual Studio Code 终端中,输入以下命令以删除“add-database”分支,因为已不再需要它:

    git branch -d add-database