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
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Azure DevOps kuruluşu ve projesi. Azure Pipelines'a kaydolun.
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
Azure DevOps projenizde İşlem Hatları Ortamları'na >gidin ve ardından Ortam oluştur'u veya Yeni ortam'ı seçin.
İlk Yeni ortam ekranında bir Ad ve isteğe bağlı bir Açıklama ekleyin.
Kaynak'ın altında Sanal makineler'i ve ardından İleri'yi seçin.
Sonraki Yeni ortam ekranında İşletim sistemi'nin altında Linux'u seçin.
Linux kayıt betiğini kopyalayın. Betik, ortama eklenen tüm Linux VM'leri için aynıdır.
Not
Oturum açmış kullanıcının Kişisel Erişim Belirteci (PAT) betikte önceden eklenir ve süresi üç saat sonra dolar.
Kapat'ı seçin ve yeni ortamın oluşturulduğunu unutmayın.
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.
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.
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.
- Azure DevOps projenizde İşlem Hatları İşlem Hattı> Oluştur'u ve ardından kaynak kodunuzun konumu olarak GitHub'ı seçin.
- Depo seçin ekranında, çatallanmış örnek deponuzu seçin.
- İş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.
- 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
İş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.runOnce
Dağıtım olarakstrategy
veyarolling
belirtin.runOnce
en basit dağıtım stratejisidir.preDeploy
deploy
,routeTraffic
vepostRouteTraffic
yaşam döngüsü her yürütmeyi bir kez bağlar.on:
success
Ardından veyaon:
failure
yürütür.Aşağıdaki kod için
runOnce
bir 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.