Alıştırma - Çekme isteği oluşturma

Tamamlandı

Bu ünitede, herkesin çalışmanızdan yararlanabilmesi için çekme isteği gönderme ve değişikliklerinizi dalda main birleştirme işlemini uygulayacaksınız.

Azure Pipelines ile derleme işlem hattı oluşturma bölümünde, Space Game web sitesi için temel bir derleme işlem hattı tanımladığınız adlı build-pipelinebir Git dalı oluşturdunuz. Derleme tanımınızın azure-pipelines.yml adlı bir dosyada olduğunu hatırlayın.

Dalınız bir derleme yapıtı oluştursa da, bu çalışma yalnızca dalda build-pipeline bulunur. Dalınızı dalla main birleştirmeniz gerekir.

Çekme isteğinin diğer geliştiricilere gerekirse gözden geçirmeye hazır bir kodunuz olduğunu ve değişikliklerinizin dal gibi main başka bir dalda birleştirilmesini istediğinizi söylediğini hatırlayın.

Başlamadan önce Mara ve Andy'ye bakalım.

Merhaba Mara. Azure'da çalışan bir derleme işlem hattınız olduğunu biliyorum. Web sitesine bir özellik ekliyorum ve derleme işlemini kendim görmek istiyorum. Bunu yapmaya hazır mısınız?

Kesinlikle. İşlem hattını bir dalda oluşturdum. Neden bir çekme isteği oluşturup işlem hattını da kullanabilmeniz için bunu birleştirmiyoruz main ?

Kulağa harika geliyor. Bir göz atalım.

Dal oluşturma ve başlangıç kodu ekleme

Önceki modülde oluşturduğunuz derleme işlem hattını kullanabilseniz de adlı code-workflowyeni bir dal oluşturalım. Bu dal tabanlıdır main, bu nedenle işlemi en baştan uygulayabilirsiniz.

  1. Visual Studio Code'da tümleşik terminali açın.

  2. Dala main geçin:

    git checkout main
    
  3. GitHub'dan kodun en son sürümüne sahip olduğunuzdan emin olun:

    git pull origin main
    
  4. adlı code-workflowbir dal oluşturun:

    git checkout -B code-workflow
    

    -b bağımsız değişkeni, yoksa yeni bir dal oluşturulmasını belirtir. Var olan bir dala geçmek istediğinizde bağımsız değişkeni atlar -b .

    Varsayılan olarak, yeni dalınız komutu çalıştırdığınız git checkout önceki dalda derlanır. Burada üst dal şeklindedir main, ancak üst dal, üzerinde derlemek veya denemek istediğiniz başka birinin başlattığı özellik dalı gibi başka bir dal olabilir.

    Artık kendi yerel dalınızda olduğunuzdan, ihtiyacınız olan değişiklikleri yapmak güvenlidir. Hangi dalda olduğunuzu görmek istiyorsanız komutunu çalıştırın git branch -v.

  5. Dosya gezgininden azure-pipelines.yml dosyasını açın ve içeriğini şununla değiştirin:

    trigger:
    - '*'
    
    pool:
      vmImage: 'ubuntu-20.04'
      demands:
      - npm
    
    variables:
      buildConfiguration: 'Release'
      wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot'
      dotnetSdkVersion: '6.x'
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK $(dotnetSdkVersion)'
      inputs:
        version: '$(dotnetSdkVersion)'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
      displayName: 'Compile Sass assets'
    
    - task: gulp@1
      displayName: 'Run gulp tasks'
    
    - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
      displayName: 'Write build info'
      workingDirectory: $(wwwrootDir)
    
    - task: DotNetCoreCLI@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Publish the project - $(buildConfiguration)'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: false
        arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)'
        zipAfterPublish: true
    
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      condition: succeeded()
    

    Bu yapılandırma, önceki modülde oluşturduğunuz temel yapılandırmaya benzer. Kısa olması için yalnızca projenizin Yayın yapılandırmasını oluşturur.

Dalınızı GitHub'a gönderme

Burada dalınızı code-workflow GitHub'a göndererek Azure Pipelines'ın uygulamayı derlemesini izleyeceksiniz.

  1. Terminalde, dalınız üzerinde hangi uncommitted work'un mevcut olduğunu görmek için komutunu çalıştırın git status :

    git status
    

    azure-pipelines.yml dosyasının değiştirildiğini göreceksiniz. Bunu kısa süre içinde dalınıza işlemeniz gerekir, ancak önce Git'in dosyayı hazırlama olarak adlandırılan bu dosyayı izlediğinden emin olmanız gerekir.

    yalnızca çalıştırdığınızda git commithazırlanmış değişiklikler işlenir. Ardından, hazırlama alanına veya dizine azure-pipelines.yml eklemek için komutunu çalıştırırsınızgit add.

  2. Hazırlama alanına azure-pipelines.yml eklemek için aşağıdaki git add komutu çalıştırın:

    git add azure-pipelines.yml
    
  3. git commit Aşağıdaki komutu çalıştırarak hazırlanmış dosyanızı dala işleyincode-workflow:

    git commit -m "Add the build configuration"
    

    -m bağımsız değişkeni işleme iletisini belirtir. İşleme iletisi, değiştirilen bir dosyanın geçmişinin bir parçası olur. Gözden geçirenlerin değişikliği anlamasına yardımcı olur ve gelecekteki bakımcıların dosyanın zaman içinde nasıl değiştiğini anlamasına yardımcı olur.

    Bahşiş

    En iyi işleme iletileri "Bu işlemeyi uygularsanız,..." cümlesini tamamlar.

    Bağımsız değişkeni atlarsanız -m Git, değişikliği ayrıntılı olarak belirtebileceğiniz bir metin düzenleyicisi getirir. Bu seçenek, birden çok satıra yayılan bir işleme iletisi belirtmek istediğinizde kullanışlıdır. İlk boş satıra kadar olan metin işleme başlığını belirtir.

  4. GitHub'daki deponuza dal göndermek veya karşıya yüklemek code-workflow için şu git push komutu çalıştırın:

    git push origin code-workflow
    
  5. İsteğe bağlı bir adım olarak Azure Pipelines'da projenize gidin ve çalıştırılırken derlemeyi takip edin.

    Bu derlemeye CI derlemesi adı verilir. İşlem hattı yapılandırmanız, derleme işlemine hangi dalların katıldığını denetlemek için tetikleyici olarak adlandırılan öğeyi kullanır. Burada "*" tüm dalları belirtir.

    trigger:
    - '*'
    

    Daha sonra, yalnızca ihtiyacınız olan dallardan derlemek için işlem hattı yapılandırmanızı nasıl denetleyebileceğinizi göreceksiniz.

    Derlemenin başarıyla tamamlandığını ve derlenmiş web uygulamasını içeren bir yapıt ürettiğini göreceksiniz.

Çekme isteği oluşturma

Burada, dalınız için bir çekme isteği oluşturacaksınız:

  1. Tarayıcıda GitHub'da oturum açın.

  2. mslearn-tailspin-spacegame-web deponuza gidin.

  3. Dal açılan listesinde dalınızı code-workflow seçin.

    Screenshot of GitHub showing how to select the branch from the drop-down menu.

  4. Çekme isteğinizi başlatmak için Katkıda Bulun'a ve ardından Çekme isteğini aç'a tıklayın.

    Screenshot of GitHub showing the location of the Open pull request button.

  5. Tabanın Microsoft deposunu değil çatallanmış deponuzu belirttiğinden emin olun.

    Seçiminiz şöyle görünür:

    Screenshot of GitHub confirming that the branch can be merged.

    Önemli

    Değişikliklerinizi Microsoft deposuyla birleştiremediğinizden bu adım önemlidir. Temel deponun MicrosoftDocs'u değil GitHub hesabınızı işaretdiğinden emin olun.

    MicrosoftDocs'a karşı bir çekme isteğiyle sonuçlanırsa, çekme isteğini kapatmanız ve bu adımları yinelemeniz yeterlidir.

    Çatallanmış bir depoda çalıştığınız için bu işlem fazladan bir adım içerir. Çatalla değil de doğrudan kendi deponuzla çalışırken main dalınız varsayılan olarak seçilir.

  6. Çekme isteğiniz için bir başlık ve açıklama girin.

    • Başlık:

      Azure Pipelines'ı yapılandırma

    • Açıklama:

      Bu işlem hattı yapılandırması uygulamayı oluşturur ve Yayın yapılandırması için bir derleme oluşturur.

  7. Çekme isteğinizi tamamlamak için Çekme isteği oluştur'u seçin.

    Bu adım hiçbir kodu birleştirmez. Diğer kişilere, dalda main birleştirilecek değişiklikler önerdiğinizi bildirir.

    Screenshot of GitHub showing the pull request description and the location of the Create pull request button.

    Çekme isteği penceresi görüntülenir. Azure Pipelines'da derleme durumunun çekme isteğinin bir parçası olarak görünecek şekilde yapılandırıldığını görebilirsiniz. Bu şekilde, siz ve diğerleri derlemenin çalışır durumdaki durumunu görüntüleyebilirsiniz.

    Screenshot of GitHub showing build checks running in Azure Pipelines.

    GitHub'a dal gönderdiğinizde olduğu gibi, çekme isteği varsayılan olarak Uygulamanızı derlemek için Microsoft Azure Pipelines'ı tetikler.

    Bahşiş

    Derleme durumunun hemen göründüğünü görmüyorsanız, birkaç dakika bekleyin veya sayfayı yenileyin.

  8. İsteğe bağlı olarak Ayrıntılar bağlantısını seçin ve işlem hattında ilerledikçe derlemeyi takip edin.

    Derlemenizi, soru-cevap gibi işlemdeki bir sonraki adıma devredebilirsiniz. Daha sonra işlem hattını, değişikliğinizi soru-cevap laboratuvarınıza veya üretim ortamınıza göndermek üzere yapılandırabilirsiniz.

  9. GitHub'da çekme isteğinize geri dönün.

    Derlemenin tamamlanmasını bekleyin. Artık çekme isteğinizi birleştirmeye hazırsınız.

    Screenshot of GitHub showing successful build checks in Azure Pipelines.

  10. Birleştirme çekme isteğini seçin ve ardından Birleştirmeyi onayla'yı seçin.

  11. Dalı code-workflow GitHub'dan silmek için Dalı sil'i seçin.

    Screenshot of GitHub showing the location of the Delete branch button.

    Çekme isteğinizi birleştirdikten sonra GitHub'dan bir dal silmek tamamen güvenlidir. Aslında bu yaygın bir uygulamadır çünkü dal artık gerekli değildir. Değişiklikler birleştirilir ve değişikliklerle ilgili ayrıntıları GitHub'da veya komut satırında bulabilirsiniz. Birleştirilmiş dalı silmek, başkalarının yalnızca etkin olan çalışmayı görmesine de yardımcı olur.

    Git dalları kısa ömürlü olmalıdır. Bir dalı birleştirdikten sonra, dalın üzerine ek işlemeler göndermez veya ikinci kez birleştirmezsiniz. Çoğu durumda, yeni bir özellik veya hata düzeltmesiyle her başladığınızda, dalı temel alan main temiz bir dal ile başlarsınız.

    GitHub'da bir dal silindiğinde bu dal yerel sisteminizden silinmez. Bunu yapmak için anahtarı komutuna git branch geçirirsiniz-d.

Değişiklik kaç kez oluşturulur?

Yanıt, derleme yapılandırmanızın nasıl tanımlandığına bağlıdır. Azure Pipelines, derlemelerin gerçekleşmesine neden olan olayları belirten tetikleyiciler tanımlamanızı sağlar. Hangi dalların derlenmesini, hatta derlemeyi tetikleyen dosyaları denetleyebilirsiniz.

Örneğin, herhangi bir Git dalında GitHub'a bir değişiklik gönderildiğinde derlemenin gerçekleşmesini istediğinizi varsayalım. Ancak yalnızca projenizin docs klasöründeki dosyalarda değişiklik yapıldığında derlemenin gerçekleşmesini istemezsiniz. Bu trigger bölümü derleme yapılandırmanıza eklemek isteyebilirsiniz:

trigger:
  branches:
    include:
    - '*'     # build all branches
  paths:
    exclude:
    - docs/*  # exclude the docs folder

Varsayılan olarak, bir değişiklik herhangi bir daldaki herhangi bir dosyaya gönderildiğinde bir derleme tetikler.

Sürekli tümleştirme (CI) derlemesi, bir dala değişiklik gönderdiğinizde çalışan bir derlemedir.

Çekme isteği (PR) derlemesi, çekme isteğini açtığınızda veya mevcut bir çekme isteğine ek değişiklikler gönderdiğinizde çalışan bir derlemedir.

Dal aracılığıyla code-workflow yaptığınız değişiklikler üç koşul altında oluşturulur:

  • Bir CI derlemesi, değişiklikleri dalına gönderdiğinizde code-workflow gerçekleşir.
  • Bir çekme isteği derlemesi, dalda dal main üzerinde code-workflow bir çekme isteği açtığınızda gerçekleşir.
  • Çekme isteği dalla birleştirildikten sonra son CI derlemesi main gerçekleşir.

Çekme isteği derlemeleri, önerilen değişikliklerinizin veya başka bir hedef dal ile main birleştirildikten sonra düzgün çalışacağını doğrulamanıza yardımcı olur.

Son CI derlemesi, çekme isteği birleştirildikten sonra değişikliklerin hala iyi olduğunu doğrular.

İsteğe bağlı bir adım olarak Azure Pipelines'a gidin ve dalda son CI derlemesinin gerçekleşmesini main izleyin.