Alıştırma - Ana dalınızı koruma

Tamamlandı

Ekibiniz zaten bir web sitesi ve veritabanı içeren bir Bicep şablonu üzerinde çalışıyor. Bileşenleri üretim ortamınıza dağıttınız. Şimdi sipariş işleme kuyruğunuzu eklemek için Bicep şablonunuzu güncelleştirmeniz gerekir.

Bu alıştırmada, değişikliğiniz için bir özellik dalı oluşturacaksınız. Ayrıca ana dalınızı koruyacak ve değişikliklerin yalnızca gözden geçirildikten sonra ana dalla birleştirilmesine izin vereceksiniz. Ancak bundan önce ortamınızın bu modülün geri kalanını tamamlayacak şekilde ayarlandığından emin olmanız gerekir.

İşlem sırasında şunları yapacaksınız:

  • Bu modül için bir GitHub deposu ayarlayın.
  • Depoyu bilgisayarınıza kopyalayın.
  • Deponuzun ana dalı için dal koruması ekleyin.
  • Değişikliğiniz için yerel bir özellik dalı oluşturun.
  • Özellik dalınızı main ile birleştirmeyi deneyin.
  • Bu modül için bir Azure DevOps projesi ayarlayın.
  • Projenin deposunu bilgisayarınıza kopyalayın.
  • Deponuzun ana dalı için dal ilkeleri ekleyin.
  • Değişikliğiniz için yerel bir özellik dalı oluşturun.
  • Özellik dalınızı main ile birleştirmeyi deneyin.

GitHub deposunu alma

Burada GitHub deponuzun bu modülün geri kalanını tamamlayacak şekilde ayarlandığından emin olun. Şablon deposunu temel alan yeni bir depo oluşturarak bunu ayarlarsınız. Şablon deposu, bu modüle başlamak için ihtiyacınız olan dosyaları içerir.

Şablon deposundan başlayın

GitHub deponuzu ayarlayan bir şablon çalıştırın.

GitHub sitesinde, şablondan bir depo oluşturmak için şu adımları izleyin:

  1. Bu şablonu>kullan Yeni depo oluştur'u seçin.

    Geçerli şablonu kullanma düğmesinin vurgulandığı, şablon deposunu gösteren GitHub arabiriminin ekran görüntüsü.

  2. Yeni projeniz için toy-website-review gibi bir ad girin.

  3. Genel seçeneğini belirleyin.

    Kendi depolarınızı oluştururken bunları özel hale getirmek isteyebilirsiniz. Bu modülde, GitHub'ın yalnızca genel depolarla ve GitHub Enterprise hesaplarıyla çalışan özellikleriyle çalışacaksınız.

  4. Şablondan depo oluştur’u seçin.

    Depo oluşturma sayfasını gösteren GitHub arabiriminin ekran görüntüsü.

Azure DevOps projesini alma

Burada Azure DevOps kuruluşunuzun bu modülün geri kalanını tamamlayacak şekilde ayarlandığından emin olun. Azure DevOps'ta proje oluşturan bir şablon çalıştırarak bunu ayarlarsınız.

Azure DevOps Demo Oluşturucu sitesinde şu adımları izleyin:

  1. Oturum Aç'ı seçin ve kullanım koşullarını kabul edin.

  2. Yeni Proje Oluştur sayfasında Azure DevOps kuruluşunuzu seçin. Ardından toy-website-review gibi bir proje adı girin.

    Azure DevOps Demo Oluşturucu aracılığıyla proje oluşturmayı gösteren ekran görüntüsü.

  3. Proje Oluştur'u seçin.

    Şablonun çalıştırılması birkaç dakika sürer. Sonraki alıştırmalarda kullanacağınız bir işlem hattı ve Bicep dosyasını otomatik olarak oluşturur.

  4. Azure DevOps'ta projenize gitmek için Projeye git'i seçin.

Depoyu kopyalama

Artık kendi hesabınızda şablon deposunun bir kopyası var. Üzerinde çalışmaya başlayabilmeniz için bu depoyu yerel olarak kopyalayın.

  1. Kod'a ve ardından Kopyala simgesine tıklayın.

    Depo U R L kopyalama düğmesinin vurgulandığı yeni depoyu gösteren GitHub arabiriminin ekran görüntüsü.

  2. Visual Studio Code'u açın.

  3. Terminal>Yeni Terminal'i seçerek bir Visual Studio Code terminal penceresi açın. Pencere genellikle ekranın alt kısmında açılır.

  4. Terminalde, yerel bilgisayarınızda GitHub deposunu kopyalamak istediğiniz dizine gidin. Örneğin, depoyu toy-website-review klasörüne kopyalamak için aşağıdaki komutu çalıştırın:

    cd toy-website-review
    
  5. Daha önce kopyaladığınız URL'yi yazın git clone ve yapıştırın ve ardından komutunu çalıştırın. Komut şöyle görünür:

    git clone https://github.com/mygithubuser/toy-website-review.git
    
  6. Visual Studio Code terminalinde aşağıdaki komutu çalıştırarak depo klasöründe Visual Studio Code'un yeniden açılması:

    code -r toy-website-review
    

Artık kendi hesabınızda bir proje var. Üzerinde çalışmaya başlayabilmeniz için bu depoyu yerel olarak kopyalayın.

  1. Dosyaları Depola'ya>tıklayın.

    Dosyalar'ın vurgulandığı Depolar menüsünü gösteren Azure DevOps'un ekran görüntüsü.

  2. Kopyala'yı seçin.

    Depoyu gösteren Ve Kopyala düğmesinin vurgulandığı Azure DevOps'un ekran görüntüsü.

  3. macOS kullanıyorsanız Git deposunu kopyalamak için özel bir parolaya ihtiyacınız vardır. Git kimlik bilgileri oluştur'a tıklayın ve görüntülenen kullanıcı adını ve parolayı güvenli bir yere kopyalayın.

  4. VS Code'da Kopyala'yı seçin. Visual Studio Code'un açılmasına izin vermeniz istenirse Aç'ı seçin.

    Visual Studio Code'da kopyalama düğmesinin vurgulandığı depo ayarlarını gösteren Azure DevOps'un ekran görüntüsü.

  5. Depo için kullanılacak bir klasör oluşturun ve ardından Depo Konumu Seç'i seçin.

  6. Bu depoyu ilk kez kullandığınızdan oturum açmanız istenir.

    • Windows kullanıyorsanız, bu alıştırmanın önceki bölümlerinde Azure DevOps'ta oturum açmak için kullandığınız kimlik bilgilerini girin.

    • macOS kullanıyorsanız, birkaç dakika önce oluşturduğunuz Git kullanıcı adını ve parolasını girin.

  7. Visual Studio Code sizden depoyu açmanızı ister. 'ı seçin.

    Kopyalanan depoyu açma istemini gösteren Ve Aç düğmesinin vurgulandığı Visual Studio Code'un ekran görüntüsü.

Dal korumaları ekleme

Git deponuzu ana dala doğrudan göndermeyi önlemek için yapılandırın.

  1. Tarayıcınızda Ayarlar'ı seçin.

  2. Dallar'ı seçin.

  3. Dal koruma kuralı ekle'yi seçin.

    Dal koruma kuralları ekleme sayfasını gösteren, kural ekleme düğmesinin vurgulandığı GitHub'ın ekran görüntüsü.

  4. Dal adı deseni metin kutusuna main girin.

  5. Birleştirmeden önce Çekme isteği gerektir'i seçin.

    Onay gerektir seçeneğinin işaretini kaldırın. Normalde bu seçeneği seçersiniz. Ancak bu örnekte kendi çekme isteğinizi birleştireceksiniz ve Onay iste seçeneği bunu yapmanıza engel oluyor.

  6. Yukarıdaki ayarların atlanmasına izin verme'yi seçin.

    Bu alıştırmanın devamında nasıl git push başarısız oluneceğini main göstermek için örnek olarak bu ayarı seçersiniz. Üretim ortamında, doğrudan birleştirmeleri yöneticiler veya depo sahipleri için kısıtlamak main istemeyebilirsiniz.

  7. Sayfanın alt kısmında Oluştur'u seçin.

    Oluştur düğmesini gösteren GitHub'ın ekran görüntüsü.

    GitHub kimliğinizi onaylamak için yeniden oturum açmanızı isteyebilir.

Dal ilkeleri ekleme

Git deponuzu ana dala doğrudan göndermeyi önlemek için yapılandırın.

  1. Tarayıcınızda Depo>Dalları'na gidin.

  2. Ana dalın üzerine gelin ve üç noktayı seçin.

  3. Dal ilkeleri'ne tıklayın.

    Bağlam menüsünün ve dal ilkeleri menü öğesinin vurgulandığı dal listesini gösteren Azure DevOps'un ekran görüntüsü.

  4. Dal ilkeleri penceresinde, En az sayıda gözden geçiren gerektir ayarını Açık olarak değiştirin.

  5. Gözden geçirenlerin en az sayısını 1 olarak değiştirin ve İstekte bulunanların kendi değişikliklerini onaylamasına izin ver seçeneğini belirleyin.

    Ana dalın dal ilkeleri sayfasını gösteren Azure DevOps'un ekran görüntüsü.

    Not

    Burada İstekte bulunanların kendi değişikliklerini onaylamasına izin ver seçeneğini etkinleştirebilirsiniz. Bu alıştırmalarda kendi başınıza çalışıyorsunuz, bu nedenle değişikliklerinizi hem oluşturmanız hem de onaylamanız gerekir. Ancak gerçek bir ekip ortamında bu seçeneği etkinleştirmek istemeyebilirsiniz.

Yerel özellik dalı oluşturma

  1. Visual Studio Code terminalinde aşağıdaki deyimi çalıştırın:

    git checkout -b add-orders-queue
    

    Bu komut, çalışmanız için yeni bir özellik dalı oluşturur.

  2. deploy klasöründe main.bicep dosyasını açın.

    Dağıt klasöründeki ana noktalı bicep dosyasını gösteren Visual Studio Code'un ekran görüntüsü.

  3. Parametrelerin altına kuyruğun adı için yeni bir değişken ekleyin:

    var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
    var processOrderQueueName = 'processorder'
    
  4. Depolama hesabı kaynağı içinde kuyruğu iç içe alt kaynak olarak ekleyin:

    resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: storageAccountSkuName
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    
      resource queueServices 'queueServices' existing = {
        name: 'default'
    
        resource processOrderQueue 'queues' = {
          name: processOrderQueueName
        }
      }
    }
    
  5. Modül tanımında appService depolama hesabını ve kuyruk adlarını parametre olarak ekleyin:

    module appService 'modules/appService.bicep' = {
      name: 'appService'
      params: {
        location: location
        appServiceAppName: appServiceAppName
        storageAccountName: storageAccount.name
        processOrderQueueName: storageAccount::queueServices::processOrderQueue.name
        environmentType: environmentType
      }
    }
    

    Bu kod, uygulamanın iletileri göndereceği kuyruğu bulmasını sağlar.

  6. main.bicep dosyasını kaydedin.

  7. deploy/modules klasöründe appService.bicep dosyasını açın.

  8. appService.bicep dosyasının üst kısmına, depolama hesabı ve kuyruk adları için yeni parametreler ekleyin:

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The name of the App Service app to deploy. This name must be globally unique.')
    param appServiceAppName string
    
    @description('The name of the storage account to deploy. This name must be globally unique.')
    param storageAccountName string
    
    @description('The name of the queue to deploy for processing orders.')
    param processOrderQueueName string
    
    @description('The type of the environment. This must be nonprod or prod.')
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
  9. appServiceApp Depolama hesabını ve kuyruk adlarını uygulamanın ortam değişkenlerine yaymak için kaynağı güncelleştirin:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'StorageAccountName'
              value: storageAccountName
            }
            {
              name: 'ProcessOrderQueueName'
              value: processOrderQueueName
            }
          ]
        }
      }
    }
    

Özellik dalınızı işleme ve gönderme

Visual Studio Code terminalinde aşağıdaki komutları çalıştırarak değişikliklerinizi işleyin ve GitHub deponuza gönderin:

Visual Studio Code terminalinde aşağıdaki komutları çalıştırarak değişikliklerinizi işleyin ve Azure Repos deponuza gönderin:

git add .
git commit -m "Add orders queue and associated configuration"
git push --set-upstream origin add-orders-queue

Özellik dalı, uzak deponuzda add-orders-queue olarak da adlandırılan yeni bir dala gönderilir.

Özellik dalını main ile birleştirmeyi deneyin

Doğrudan ana dala göndermenin neden tavsiye edilmediğini öğrendinsiniz. Burada, ana dalınızın korumasının değişikliklerinizi yanlışlıkla korumalı bir dala göndermenizi nasıl engellediğini görebilmek için bu yönergeyi bozmaya çalışırsınız.

  1. Visual Studio Code terminalinde aşağıdaki deyimleri çalıştırarak ana dala geçin ve add-orders-queue dalını bu dalla birleştirin:

    git checkout main
    git merge add-orders-queue
    

    Komut çalıştı, ancak add-orders-queue dalını yalnızca yerel Git deponuzdaki ana dalınızla birleştirdiniz.

  2. Değişikliklerinizi GitHub'a göndermeye çalışmak için aşağıdaki deyimi çalıştırın:

    git push
    

    Gönderiminizin aşağıdakine benzer bir hata iletisiyle başarısız olduğuna dikkat edin:

    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    remote: error: GH006: Protected branch update failed for refs/heads/main.
    remote: error: Changes must be made through a pull request.
    To https://github.com/mygithubuser/toy-website-review.git
     ! [remote rejected] main -> main (protected branch hook declined)
    error: failed to push some refs to 'https://github.com/mygithubuser/toy-website-review.git'
    

    Hata iletisi, ana dala göndermeye izin verilmediğini ve dalı güncelleştirmek için bir çekme isteği kullanmanız gerektiğini bildirir.

  3. Aşağıdaki deyimi çalıştırarak birleştirmeyi geri alın:

    git reset --hard HEAD~1
    

    Bu komut, yerel Git deponuza ana dalın durumunu son işleme birleştirilmeden önceki durumuna sıfırlamasını ve değişikliklerinizi kaydetmemelerini söyler. add-orders-queue dalı etkilenmez.

Doğrudan ana dala göndermenin neden tavsiye edilmediğini öğrendinsiniz. Burada, dal ilkelerinin değişikliklerinizi yanlışlıkla korumalı bir dala göndermenizi nasıl engellediğini görebilmek için bu yönergeyi bozmaya çalışırsınız.

  1. Visual Studio Code terminalinde aşağıdaki deyimleri çalıştırarak ana dala geçin ve add-orders-queue dalını bu dalla birleştirin:

    git checkout main
    git merge add-orders-queue
    

    Komut çalıştı, ancak add-orders-queue dalını yalnızca yerel Git deponuzdaki ana dalınızla birleştirdiniz.

  2. Değişikliklerinizi Azure Repos'a göndermeye çalışmak için aşağıdaki deyimi çalıştırın:

    git push
    

    Gönderiminizin aşağıdakine benzer bir hata iletisiyle başarısız olduğuna dikkat edin:

    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://dev.azure.com/mytoycompany/toy-website-review/_git/toy-website-review
    ! [remote rejected] main -> main (TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.)
    error: failed to push some refs to 'https://dev.azure.com/mytoycompany/toy-website-review/_git/toy-website-review'
    

    Hata iletisi, ana dala göndermeye izin verilmediğini ve dalı güncelleştirmek için bir çekme isteği kullanmanız gerektiğini bildirir.

  3. Aşağıdaki deyimi çalıştırarak birleştirmeyi geri alın:

    git reset --hard HEAD~1
    

    Bu komut, yerel Git deponuza ana dalın durumunu son işleme birleştirilmeden önceki durumuna sıfırlamasını ve değişikliklerinizi kaydetmemelerini söyler. add-orders-queue dalı etkilenmez.