演習 - ブランチを作成およびマージする

完了

おもちゃ会社に戻すと、Web サイト開発者は、会社が販売しているおもちゃに関するデータを格納するための新しい Azure Cosmos DB データベースを追加することを計画しています。 開発者は、あなたに Cosmos DB リソースを追加するために、Bicep コードを更新するように求めています。 しかし、まだ変更を行う準備ができていません。 変更が完了したときに備えて、変更の準備を整えることを希望しています。

この演習では、リポジトリのブランチに新しい 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 リポジトリの最新の変更が認識されています。

ブランチでファイルを更新する

ブランチを作成したので、Web サイトの Azure Cosmos DB アカウント用の新しい Bicep モジュールを追加します。

  1. deploy フォルダーの modules サブフォルダーで、cosmos-db.bicep という名前の新しいファイルを作成します。

  2. Visual Studio Code によって Bicep ツールが読み込まれるように、空の cosmos-db.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 のエクスプローラー ウィンドウで、main.bicep ファイルを開きます。

    行った Azure Cosmos DB の変更は含まれていないことに注意してください。 これで main ブランチに切り替えたので、データベース モジュールはそこにありません。 心配は無用です。add-database ブランチに安全に保存されています。

ブランチをマージする

Web サイト チームが変更をテストし、これで Azure Cosmos DB データベースを含む更新された Web サイトを起動する準備が整いました。 add-database ブランチを main ブランチにマージします。

  1. main ブランチにいることを確認するには、git status を実行し、ステータス バーのブランチ名を確認します。

  2. Visual Studio Code ターミナルで、次のコマンドを入力して、add-database ブランチの変更を main ブランチにマージします。

    git merge add-database
    
  3. Visual Studio Code のエクスプローラー ウィンドウで、main.bicep ファイルを開きます。

    データベース モジュールがファイルに表示されるようになったことに注意します。 これで、main ブランチで、既知の正常な Bicep ファイルが更新され、add-database ブランチの変更が含まれました。

  4. add-database ブランチは不要になったため、Visual Studio Code ターミナルで、次のコマンドを入力して、それを削除します。

    git branch -d add-database