Alıştırma - Sonucu işlem hattında yayımlama

Tamamlandı

Bu noktada, işlem hattı aracılığıyla Space Game web projesini oluşturabilirsiniz.

Peki derlemenin sonuçları nereye gider? Şu anda, derlemenin çıkışı geçici derleme sunucusunda kalır. Mara'nın teste başlayabilmesi için bu derlemeyi Amita'ya devretmesi gerekiyor.

Derleme yapıtlarını Azure Pipelines'da depolayarak derleme tamamlandıktan sonra ekibinizdeki diğer kişilerin kullanımına sunulmasını sağlayabilirsiniz. Burada yapacağın şey bu. Ayrıca yapılandırmanın okunmasını ve güncel tutulmasını kolaylaştırmak için derleme yapılandırmasını değişkenleri kullanacak şekilde yeniden düzenleyeceksiniz.

Dekont

Azure Pipelines, yerleşik uygulamayı bulutta veya veri merkezinizde çalışan bir test veya üretim ortamına otomatik olarak dağıtmanıza olanak tanır. Şimdilik Mara'nın amacı yalnızca mevcut süreçlerini kullanarak QA'ya dağıtabileceği derlemeler üretmektir.

Derlemeyi işlem hattında yayımlama

.NET'te uygulamanızı .zip dosyası olarak paketleyebilirsiniz. Daha sonra yerleşik görevi kullanarak PublishBuildArtifacts@1 .zip dosyasını Azure Pipelines'da yayımlayabilirsiniz.

  1. Visual Studio Code'da azure-pipelines.yml dosyasını burada gördüğünüz gibi değiştirin:

    trigger:
    - '*'
    
    pool:
      name: 'Default' #replace if needed with name of your agent pool
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK 6.x'
      inputs:
        version: '6.x'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass Tailspin.SpaceGame.Web/wwwroot --output Tailspin.SpaceGame.Web/wwwroot'
      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: Tailspin.SpaceGame.Web/wwwroot
    
    - task: DotNetCoreCLI@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - Release'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration Release'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Publish the project - Release'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: false
        arguments: '--no-build --configuration Release --output $(Build.ArtifactStagingDirectory)/Release'
        zipAfterPublish: true
    
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      condition: succeeded()
    
    trigger:
    - '*'
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK 6.x'
      inputs:
        version: '6.x'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass Tailspin.SpaceGame.Web/wwwroot --output Tailspin.SpaceGame.Web/wwwroot'
      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: Tailspin.SpaceGame.Web/wwwroot
    
    - task: DotNetCoreCLI@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - Release'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration Release'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Publish the project - Release'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: false
        arguments: '--no-build --configuration Release --output $(Build.ArtifactStagingDirectory)/Release'
        zipAfterPublish: true
    
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      condition: succeeded()
    

    azure-pipelines.yml dosyasının bu sürümü önceki sürüme benzer ancak iki ek görev ekler.

    İlk görev, uygulamanın derleme sonuçlarını (bağımlılıkları dahil) bir klasörde yayımlamak veya paketlemek için görevi kullanırDotNetCoreCLI@2. bağımsız değişkeni, zipAfterPublish oluşturulan sonuçların bir .zip dosyasına ekleneceğini belirtir.

    İkinci görev, .zip dosyasını Azure Pipelines'a yayımlamak için bu görevi kullanır PublishBuildArtifacts@1 . bağımsız değişkeni, condition yalnızca önceki görev başarılı olduğunda görevin çalıştırılmasını belirtir. succeeded() varsayılan koşuldur, bu nedenle belirtmeniz gerekmez. Ama biz burada kullanımını göstermek için gösteriyoruz.

  2. Tümleşik terminalden azure-pipelines.yml dosyasını dizine ekleyin, değişikliği işleyin ve değişikliği GitHub'a gönderin.

    Bahşiş

    Bu Git komutlarını çalıştırmadan önce azure-pipelines.yml dosyasını kaydetmeyi unutmayın.

    git add azure-pipelines.yml
    git commit -m "Add publish tasks"
    git push origin build-pipeline
    
  3. Daha önce yaptığınız gibi Azure Pipelines'da adımların her biri aracılığıyla derlemeyi izleyin.

  4. İşlem hattı tamamlandığında derlemenin özetine geri dönün.

  5. İlgili bölümünde 1 tane yayımlanmıştır.

    Screenshot of the build summary. Details include the repository and version, the time started and elapsed, and a link to the published build artifact.

  6. Yapıtı seçin.

  7. Bırakma klasörünü genişletin.

    Yerleşik uygulamanızı ve bağımlılıklarını içeren bir .zip dosyası görürsünüz:

    Screenshot of the packaged web application in the Artifacts explorer.

    İsteğe bağlı bir alıştırma denemek istiyorsanız, bu .zip dosyasını bilgisayarınıza indirebilir ve içeriğini inceleyebilirsiniz.

Okunabilirliği geliştirmek için değişkenleri tanımlama

Mara çalışmalarını incelemek için geri adım atar. Derleme yapılandırması ihtiyacı olan her şeyi yapar, ancak Andy'nin ve diğerlerinin bu yapılandırmanın güncel kalmasına ve kapsamını genişletmeye kolayca yardımcı olabileceğinden emin olmak istiyor.

Değişkenler, değerleri bir kez tanımlamanıza ve işlem hattınızın tamamında bu değerlere başvurmanıza olanak sağlar. Azure Pipelines, işlem hattı çalıştırıldığında her değişkeni geçerli değeriyle değiştirir.

Diğer programlama dillerinde olduğu gibi değişkenler de şunları yapmanıza olanak sağlar:

  • İşlem hattınızın çalıştırmaları arasında değişebilecek değerleri tanımlayın.
  • İşlem hattınızda yinelenen sürüm numarası veya dosya yolu gibi bilgileri tek bir yerde depolayın. Bu şekilde, sizinkinin değişmesi gerektiğinde tüm oluşumları güncelleştirmeniz gerekmez.

Azure Pipelines birçok yerleşik değişken sağlar. Bu değişkenler, derleme tanımlayıcısı ve yazılımınızın derlendiği ve hazırlandığı dizin adları gibi derleme işleminin yönlerini açıklar.

Kendi değişkenlerinizi de tanımlayabilirsiniz. Yayın derlemesi yapılandırmasını tanımlayan adlı buildConfiguration değişkeni gösteren bir örnek aşağıda verilmiştır:

variables:
  buildConfiguration: 'Release'

Aynı değeri birden çok kez tekrarladığınızda veya bağımlılık sürümü gibi bir değer değişebileceğinden değişkenleri kullanın.

Derleme yapılandırmanızın her parçası için bir değişken oluşturmanız gerekmez. Aslında, çok fazla değişken işlem hattı kodunuzun başkalarının okumasını ve anlamasını zorlaştırabilir.

Azure-pipelines.yml dosyasını incelemek için biraz bekleyin. Bu değerlerin yinelendiğini fark edin:

  • Derleme yapılandırması: Release.
  • wwwroot dizininin konumu: Tailspin.SpaceGame.Web/wwwroot.
  • .NET SDK sürümü: 6.x.

Şimdi bu değerleri bir kez tanımlamak için değişkenleri kullanırsınız. Ardından işlem hattı genelinde değişkenlere başvurabilirsiniz.

  1. Visual Studio Code'da azure-pipelines.yml dosyasını burada gördüğünüz gibi değiştirin:

    trigger:
    - '*'
    
    pool:
      name: 'Default' #replace if needed with name of your agent pool
    
    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()
    
    trigger:
    - '*'
    
    pool:
      vmImage: ubuntu-latest
    
    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()
    

    variables Şu değişkenleri tanımlayan bölüme dikkat edin:

    • buildConfiguration: Derleme yapılandırmasını belirtir.
    • wwwrootDir: wwwroot dizininin yolunu belirtir.
    • dotnetSdkVersion: Kullanılacak .NET SDK sürümünü belirtir.

    Bu değişkenlere başvurmak için, yerleşik değişkenler için yaptığınız gibi söz dizimini kullanın $() . Sass dosyalarını CSS'ye dönüştürmek için node-Sass çalıştıran adım aşağıdadır. wwwroot dizininin yolunu almak için değişkenine başvururwwwrootDir.

    - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
      displayName: 'Compile Sass assets'
    

    Betik komutu, sass dosyalarının hem kaynak dizinini hem de CSS dosyalarının yazıldığı dizini tanımlamak için değişkenini kullanır. Ayrıca, kullanıcı arabiriminde gösterilen görev adını tanımlamak için değişkenini kullanır.

  2. Tümleşik terminalden azure-pipelines.yml dosyasını dizine ekleyin, değişikliği işleyin ve değişikliği GitHub'a gönderin.

    git add azure-pipelines.yml
    git commit -m "Refactor common variables"
    git push origin build-pipeline
    
  3. Azure Pipelines'da, adımların her biri aracılığıyla derlemeyi izleyin.

    Derleme çalıştırıldığında değişkenlerin değerleriyle değiştirildiğini göreceksiniz. Örneğin, kullanılacak .NET SDK sürümünü ayarlayan görev aşağıda UseDotNet@2 verilmiştir.

    Screenshot of Azure Pipelines showing the .NET SDK task running in the pipeline.

    Daha önce olduğu gibi derleme tamamlandığında yapıtı görmek için derleme özetine gidebilirsiniz.

Tebrikler! Azure Pipelines'ı başarıyla kullandınız ve ilk derleme yapıtınızı oluşturdunuz.