Aracılığıyla paylaş


Bir ortamdaKi Linux VM'lerine dağıtma

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Bu hızlı başlangıçta, bir ortamdaki birden çok Linux sanal makinesi (VM) kaynağına dağıtım için Azure DevOps işlem hattı ayarlamayı öğreneceksiniz. Web dağıtım paketi yayımlayan tüm uygulamalar için bu yönergeleri kullanabilirsiniz.

Önkoşullar

JavaScript veya Node.js uygulamaları için Azure'da Nginx ile ayarlanmış en az iki Linux VM'sini kullanabilirsiniz.

Örnek kodu çatallayın

GitHub'da dağıtmak istediğiniz bir uygulamanız zaten varsa bu kod için bir işlem hattı oluşturabilirsiniz.

Yeni bir kullanıcıysanız GitHub'da bu depoya çatal oluşturun:

https://github.com/MicrosoftDocs/pipelines-javascript

Linux VM'leri ile ortam oluşturma

VM'leri ortamlar içinde kaynak olarak ekleyebilir ve çoklu VM dağıtımları için hedefleyebilirsiniz. Ortamın dağıtım geçmişi, VM'den işlemeye izlenebilirlik sağlar.

VM kaynağı ekleme

  1. Azure DevOps projenizde İşlem Hatları Ortamları'na >gidin ve ardından Ortam oluştur'u veya Yeni ortam'ı seçin.

  2. İlk Yeni ortam ekranında bir Ad ve isteğe bağlı bir Açıklama ekleyin.

  3. Kaynak'ın altında Sanal makineler'i ve ardından İleri'yi seçin.

  4. Sonraki Yeni ortam ekranında İşletim sistemi'nin altında Linux'u seçin.

  5. Linux kayıt betiğini kopyalayın. Betik, ortama eklenen tüm Linux VM'leri için aynıdır.

    VM oluşturma işleminin ekran görüntüsü.

    Not

    Oturum açmış kullanıcının Kişisel Erişim Belirteci (PAT) betikte önceden eklenir ve süresi üç saat sonra dolar.

  6. Kapat'ı seçin ve yeni ortamın oluşturulduğunu unutmayın.

  7. Kopyalanan betiği, ortama kaydetmek istediğiniz her hedef VM'de çalıştırın.

    Not

    VM'nin üzerinde başka bir aracı çalışıyorsa, aracının ortama kaydolması için benzersiz bir ad sağlayın.

VM kaydedildikten sonra, ortamın Kaynaklar sekmesinin altında bir kaynak olarak görünür.

VM kaynak görünümünün ekran görüntüsü.

Daha fazla kaynak oluşturmak üzere betiği yeniden kopyalamak için (örneğin PAT'nizin süresi dolarsa) ortamın sayfasında Kaynak ekle'yi seçin.

Etiket ekleme ve yönetme

Etiketler, dağıtım için bir ortamdaki belirli bir VM kümesini hedeflemenin bir yoludur. Kullanabileceğiniz etiket sayısıyla ilgili bir sınır yoktur. Etiketler her birinde 256 karakterle sınırlıdır.

Etkileşimli kayıt betiğinde veya VM kaynağı için diğer eylemler'i seçerek kullanıcı arabirimi aracılığıyla VM'ler için etiketler ekleyebilir veya etiketleri kaldırabilirsiniz. Bu hızlı başlangıç için ortamınızdaki her VM'ye farklı bir etiket atayın.

Etiketler görünümünün ekran görüntüsü.

CI derleme işlem hattı tanımlama

Web uygulamanızı yayımlayan bir sürekli tümleştirme (CI) derleme işlem hattına ve Linux sunucusunda yerel olarak çalıştırılacak bir dağıtım betiğine ihtiyacınız vardır. CI derleme işlem hattınızı kullanmak istediğiniz çalışma zamanına göre ayarlayın.

Önemli

GitHub yordamları sırasında, oturum açmak, Azure Pipelines'ı yüklemek veya Azure Pipelines'ı yetkilendirmek için GitHub hizmet bağlantısı oluşturmanız veya GitHub'a yönlendirilmeniz istenebilir. İşlemi tamamlamak için ekrandaki yönergeleri izleyin. Daha fazla bilgi için bkz . GitHub depolarına erişim.

  1. Azure DevOps projenizde İşlem Hatları İşlem Hattı> Oluştur'u ve ardından kaynak kodunuzun konumu olarak GitHub'ı seçin.
  2. Depo seçin ekranında, çatallanmış örnek deponuzu seçin.
  3. İşlem hattınızı yapılandırın ekranında Başlatıcı işlem hattı'nı seçin. Azure Pipelines, işlem hattınız için azure-pipelines.yml adlı bir YAML dosyası oluşturur.
  4. Kaydet ve çalıştır'ın yanındaki açılan menü işaretini seçin, Kaydet'i ve sonra yeniden Kaydet'i seçin. Dosya çatallanmış GitHub deponuza kaydedilir.

Kodu düzenleme

Düzenle'yi seçin ve azure-pipelines.yml dosyasının içeriğini aşağıdaki kodla değiştirin. Sonraki adımlarda bu YAML'ye eklersiniz.

Aşağıdaki kod npm ile Node.js projenizi oluşturur.

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    - stage: Build
      displayName: Build stage
      jobs:  
      - job: Build
        displayName: Build
        steps:
        - task: UseNode@1
          inputs:
            version: '16.x'
          displayName: 'Install Node.js'
        - script: |
            npm install
            npm run build --if-present
            npm run test --if-present
          displayName: 'npm install, build and test'
        - task: ArchiveFiles@2
          displayName: 'Archive files'
          inputs:
            rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
            includeRootFolder: false
            archiveType: zip
            archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
            replaceExistingArchive: true
        - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
          artifact: drop

Daha fazla bilgi için derleme oluşturmak için Gulp ile Node.js uygulamanızı derleme adımlarını gözden geçirin.

İşlem hattınızı çalıştırma

Doğrula ve kaydet'i, ardından Kaydet'i, Çalıştır'ı ve yeniden Çalıştır'ı seçin.

İşlem hattınız çalıştırıldıktan sonra, işin başarıyla çalıştığını ve yayımlanmış bir yapıt gördüğünüzü onaylayın.

Linux VM'lerine dağıtma

  1. İşlem hattınızı düzenleyerek aşağıdaki dağıtım işini ekleyin. değerini daha önce oluşturduğunuz ortamın adıyla değiştirin <environment name> . Her VM için tanımladığınız vm'yi belirterek dağıtımı almak üzere ortamdan <VM tag> belirli VM'leri seçin.

    jobs:  
    - deployment: VMDeploy
      displayName: Web deploy
      environment:
        name:  <environment name>
        resourceType: VirtualMachine
        tags: <VM tag> # Update value for VMs to deploy to
      strategy:
    

    Daha fazla bilgi için bkz. tam jobs.deployment tanımı.

    Dağıtım işi tarafından hedeflenen anahtar sözcük ve kaynaklar hakkında environment daha fazla bilgi için jobs.deployment.environment tanımına bakın.

  2. runOnce Dağıtım olarak strategyveya rolling belirtin.

    • runOnce en basit dağıtım stratejisidir. preDeploy deploy, routeTrafficve postRouteTraffic yaşam döngüsü her yürütmeyi bir kez bağlar. on: success Ardından veya on: failure yürütür.

      Aşağıdaki kod için runOncebir dağıtım işi gösterir:

      jobs:
      - deployment: VMDeploy
        displayName: Web deploy
        environment:
          name: <environment name>
          resourceType: VirtualMachine
          tags: <VM tag>
        strategy:
          runOnce:
            deploy:
              steps:
              - script: echo my first deployment
      
    • Aşağıdaki kod, Java işlem hattı kullanarak dağıtım stratejisi için rolling bir YAML kod parçacığı gösterir. Her yinelemede en fazla beş hedef güncelleştirebilirsiniz. parametresi, maxParallel paralel olarak dağıtılacak hedef sayısını belirtir.

      Seçim, maxParallel dağıtılmakta olan hedefler hariç olmak üzere her zaman kullanılabilir kalması gereken hedeflerin mutlak sayısını veya yüzdesini hesaplar ve dağıtım sırasında başarı ve başarısızlık koşullarını belirler.

      jobs: 
      - deployment: VMDeploy
        displayName: web
        environment:
          name: <environment name>
          resourceType: VirtualMachine
          tags: <VM tag>
        strategy:
            rolling:
              maxParallel: 2  #for percentages, mention as x%
              preDeploy:
                steps:
                - download: current
                  artifact: drop
                - script: echo initialize, cleanup, backup, install certs
              deploy:
                steps:
                - task: Bash@3
                  inputs:
                    targetType: 'inline'
                    script: |
                      # Modify deployment script based on the app type
                      echo "Starting deployment script run"
                      sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar'
              routeTraffic:
                steps:
                - script: echo routing traffic
              postRouteTraffic:
                steps:
                - script: echo health check post-route traffic
              on:
                failure:
                  steps:
                  - script: echo Restore from backup! This is on failure
                success:
                  steps:
                  - script: echo Notify! This is on success
      

      Bu işin her çalıştırmasında dağıtım geçmişi, oluşturduğunuz ortama göre kaydedilir ve VM'leri kaydeder.

Ortamda işlem hattı izlenebilirliğine erişme

Ortam Dağıtımları görünümü, işlemelerin ve iş öğelerinin tam izlenebilirliğini ve ortam için işlem hatları arası dağıtım geçmişini sağlar.

Dağıtımlar görünümünün ekran görüntüsü.