Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Sanal makineleri Azure Pipelines ortamlarına kaynak olarak ekleyebilir ve dağıtımlar için hedefleyebilirsiniz. Sürekli tümleştirme ve sürekli dağıtım (CI/CD) iş akışı için, ortamın dağıtım geçmişi her VM için tetikleme işlemesine kadar izlenebilirlik sağlar.
Bu makalede, bir ortamdaki birden çok Linux sanal makinesi (VM) kaynağına dağıtımlar için Bir Azure DevOps işlem hattının nasıl ayarlanacağı gösterilmektedir. Bu yönergeler bir JavaScript veya Java uygulaması derleyip dağıtır, ancak bunları web dağıtım paketi yayımlayan tüm uygulamalar için uyarlayabilirsiniz.
Dağıtım işi tarafından hedeflenen ortamlar ve kaynaklar hakkında daha fazla bilgi için jobs.deployment.environment YAML şema tanımına bakın. Dağıtım işleri hakkında daha fazla bilgi için jobs.deployment tanımına bakın.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Azure DevOps kuruluşu ve projesi. Azure Pipelines'a kaydolun.
Ayrıca JavaScript veya Node.js uygulamaları için:
- Azure'da Nginx ile ayarlanan en az iki Linux VM.
- GitHub örnek kod deposunun https://github.com/MicrosoftDocs/pipelines-javascript adresindeki kendi kopyanız. GitHub'da dağıtmak istediğiniz bir uygulamanız zaten varsa, bunun yerine kodunuzu kullanabilirsiniz.
Önemli
- Uygulamaları dağıtmak için hedef ortam VM kaynaklarının tüm gerekli yazılımlara, bağımlılıklara, izinlere ve oturum açma bilgilerine yüklenmiş ve yapılandırılmış olması gerekir.
- GitHub kaynak kodunu kullanmak için bir GitHub hizmet bağlantısına ihtiyacınız vardır. GitHub ayrıca oturum açmanızı, Azure Pipelines GitHub uygulamasını yüklemenizi veya Azure Pipelines'ı yetkilendirmenizi isteyebilir. Her işlemi tamamlamak için ekrandaki yönergeleri izleyin. Daha fazla bilgi için bkz . GitHub depolarına erişim.
Ortam oluşturma ve Linux VM'leri ekleme
Azure Pipelines projenizde bir ortam oluşturun ve Ortam oluşturma ve VM ekleme başlığı altındaki yönergeleri izleyerek Linux VM'lerinizi ortam kaynakları olarak ekleyin.
Kopyalanan aracı kayıt betiğini her VM'de çalıştırarak ortama kaydedin. Etkileşimli istemleri yanıtlayarak tek tek VM'lere etiketler de atayabilirsiniz.
Derleme işlem hattını oluşturma ve çalıştırma
Kod deponuzun main dalına bir işleme yapıldığında uygulamanızı derleyip yayımlayan bir CI işlem hattı oluşturun.
YAML işlem hattını oluşturma
- Azure DevOps projenizde İşlem Hatları>Yeni işlem hattı veya İşlem Hattı Oluştur'u ve ardından kaynak kodunuzun konumu olarak GitHub'ı seçin.
- Depo Seç ekranında, çatalladığınız örnek deponuzu seçin.
- İşlem hattınızı yapılandırın ekranında Başlatıcı işlem hattı'nı seçin.
- İşlem hattı YAML'nizi gözden geçirin ekranında, çalışma zamanınıza bağlı olarak oluşturulan başlangıç kodunu aşağıdaki kodla değiştirin.
Derleme işini ekle
Build görevleri projenizi derlemek ve test etmek için çalışır ve derleme çıktısını bir drop konumuna yükler. Bu iş, Linux ortamı VM'lerinizde değil, işlem hattındapool belirtilen oluşturma aracılarında çalışır.
Aşağıdaki işlem hattı, Node.js tabanlı uygulamanızı npm ile derleyip test eder, ardından çıkışı paketler ve bir hedef konumuna yükler.
trigger:
- main
pool:
vmImage: ubuntu-latest
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: tar
tarCompression: gz
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).gz
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).gz
artifact: drop
Daha fazla bilgi için Gulp ile Node.js uygulamanızı derleme bölümünde derleme oluşturma adımlarını gözden geçirin.
İşlem hattını çalıştırma
azure-pipelines.yml dosyanızı deponuza kaydetmek ve CI/CD işlem hattını başlatmak için Kaydet ve çalıştır'ı ve ardından Kaydet ve yeniden çalıştır'ı seçin.
İşlem hattı tamamlandığında, derleme işinin başarıyla çalıştırıldığını ve yayımlanan 1 yapıtın İlgili altında göründüğünü doğrulamak için iş Özeti sayfasını görüntüleyin.
Dağıtım işini ekleyin ve çalıştırın
Dağıtım işipreDeploy, deploy, routeTraffic ve postRouteTraffic yaşam döngüsü kancalarını bir kez yürütür ve sonra ya on: success ya da on: failure yürütür. Ortam VM'lerine dağıtırsanız, preDeploy aşama ortam VM'lerinde değil derleme aracısında çalışır. Diğer tüm adımlar ortamdaki kayıtlı VM'lerde çalıştırılır.
- İsteğe bağlı
preDeployadım dağıtımdan önce çalışır. Orkestrasyon, VM ve artefakt hazırlama ve sağlık kontrolleri için bu adımı kullanabilirsiniz. - Bu
deployadım, dağıtım nesnesini hedef ortam VM'lerine dağıtır. - İsteğe bağlı
routeTrafficadım trafik yönlendirmesi yapabilir. - İsteğe bağlı
postRouteTrafficadım sistem durumu denetimleri ve bildirimler yapabilir. - Özel
on.failureveon.successadımlar bildirim veya kurtarma sağlayabilir.
Ile resourceType: VirtualMachine bir ortama dağıtım işi, ortam VM'lerinin Bash veya Azure CLI gibi tüm işlem hattı görevlerini çalıştırabilmesini gerektirir. Hedef VM'lere preDeploy gerekli yazılımları ve izinleri yüklemek için bu adımı kullanabilirsiniz.
Örneğin, bir dağıtım adımıNda Azure CLI kullanılıyorsa aracı VM'lerde Azure CLI yüklü olmalı ve aracı kullanıcı için PATH'de kullanılabilir olmalıdır. Aracı kullanıcısının CLI'yi çalıştırma iznine sahip olması ve Azure'da kimlik doğrulaması yapması gerekir. Aracı kullanıcısını sudoers'a eklemeniz veya yüklemeyi otomatikleştirmek için ortam değişkenlerini ayarlamanız gerekebilir.
Azure CLI'yi hedef VM'lere yüklemek için bir preDeploy betik kullanabilirsiniz. Azure'da kimlik doğrulaması yapmak için az login çalıştırabilir veya otomasyon için bir hizmet temsili tanımlayarak bir az login --service-principal adımında preDeploy çalıştırabilirsiniz.
Dağıtım işini ekleme
Aşağıdaki örnek dağıtım işi, Build işi başarıyla tamamlandığında başlar. İşi işlem hattınıza eklemek için:
Özet sayfasının sağ üst kısmındaki Diğer eylemler simgesini seçin, İşlem hattını düzenle'yi seçin ve işlem hattınızın sonuna aşağıdaki kodu ekleyin.
<environment-name>ifadesini oluşturduğunuz ortamın adıyla değiştirin.İsteğe bağlı olarak,
tagsparametresini kullanarak ve<VMtag>belirterek, VM'ler için tanımladığınız, ortamdan belirli VM'leri dağıtımı almak üzere seçebilirsiniz.- deployment: VMDeploy displayName: Web deploy dependsOn: Build condition: succeeded() environment: name: <environment-name> resourceType: VirtualMachine tags: <VMtag> # VMs to deploy toİşe bir
strategydeploymentekleyin. runOnce dağıtım stratejisi en basittir ve belirtmezsenizstrategyvarsayılan olarak çalışır. Bu strateji, herhangi bir paralellik veya trafik yönetimi olmadan ortamdaki her VM'de dağıtım adımlarını bir kez yürütür.strategy: runOnce: deploy: steps: - script: echo my first deploymentDağıtım işini ekledikten sonra Doğrula ve kaydet'i, ardından Kaydet'i, Çalıştır'ı ve sonra yeniden Çalıştır'ı seçin. Bu iş her çalıştırıldığında, dağıtım geçmişi ortamda kayıt altına alınır.
Not
Ortamı kullanan işlem hattını ilk kez çalıştırdığınızda, aracı havuzuna ve ortama erişmek için işlem hattının tüm çalıştırmaları için izin vermelisiniz. İşlem hattı çalıştırma özeti ekranında işin yanındaki Bekleme simgesini seçin ve ardından gerekli izinleri vermek için İzin Ver'i seçin.
Sıralı dağıtım stratejisi
rolling stratejisini runOnce dağıtım stratejisi yerine kullanabilirsiniz.
Sıralı dağıtım stratejisi paralelliği, sistem durumu denetimlerini ve trafik yönlendirmeyi düzenleyebilir.
runOnce Strateji aynı anda tek bir VM'de yürütülürken, sıralı dağıtım, ayara bağlı olarak beşe kadar hedef VM'nin sıralı kümelerinde paralel olarak maxParallel çalıştırılabilir.
maxParallel parametresi, kullanılabilir kalması gereken VM'lerin sayısını veya yüzdesini ayarlayarak uygulamanın istekleri işleyebilmesini sağlar ve dağıtımlar sırasında genel kapalı kalma süresini azaltır. Bu parametre ayrıca dağıtımın başarı ve başarısızlık koşullarını da belirler.
Sıralı dağıtım stratejisi hakkında daha fazla bilgi için bkz . jobs.deployment.strategy.rolling şema tanımı.
Dağıtım işi örneği
VM kaynaklarına yapılan dağıtımlar, VM'lerin tüm gerekli uygulamaların, bağımlılıkların ve izinlerin yüklü ve yapılandırılmış olmasını gerektirir. Bu gereksinimleri el ile önceden yüklemeniz veya işlem hattının bunları yüklemesi veya uygulaması gerekir.
Vm kaynaklarına Java uygulaması dağıtımı, kendi içinde olduğundan daha kolaydır. Java Sanal Makinesi (JVM) genellikle VM aracılarına önceden yüklenmiştir ve uygulama bağımlılıkları, izinler veya paket yönetimi konusunda endişelenmeniz gerekmez. JAR dosyasını indirip ardından java -jar ile çalıştırabilirsiniz.
Node.js uygulaması, Node, olasılıkla npm bağımlılıkları ve systemd gibi bir hizmet yöneticisinin her aracı VM'de bulunmalı ve yapılandırılmış olmasını gerektirir. İşlem hattı dağıtım betiğinin otomatik hale getirmek için etkileşimsiz olması ve uygulamanın hizmetini yeniden başlatabilmesi ve yönetebilmesi gerekir.
JavaScript uygulaması için aşağıdaki YAML rolling dağıtım işi, aşamanın başarıyla Build tamamlanmasına bağlıdır. Dağıtım işi, aşağıdaki gereksinimlerin her aracı VM'ye önceden yüklenmiş veya önceden yapılandırılmış olduğunu varsayar. Tam otomasyon için bu uygulamaları ve hizmetleri işlem hattının bir parçası olarak VM'lere yükleyebilir ve yapılandırabilirsiniz.
- Node.js 16.x yüklüdür ve derleme aracısının PATH'sinde npm kullanılabilir.
- Hizmeti başlatan Node.js uygulaması için /etc/systemd/system/pipelines-javascript.service gibi bir systemd hizmet dosyası ile yapılandırılmış systemd.
- Gerekli komutlar için aracıdırıcı kullanıcıya şifresiz sudo erişimi vermek amacıyla
NOPASSWD:dosyasında ile ayarlayın. - Aracı kullanıcısının /opt/pipelines-javascript veya diğer dağıtım hedefine yazma izinleri.
Tavsiye
Çoğu Node.js uygulaması için dağıtım işleri yerine, Azure App Service'e dağıtmayı veya Microsoft tarafından barındırılan aracılarla normal işlem hattı işleri kullanmayı düşünün. Bu yaklaşım daha basittir ve VM ortamlarını yönetmenin operasyonel yükünü önler. Belirli VM kaynaklarına dağıtım, VM sunucularının, gelişmiş düzenlemenin veya eski altyapının doğrudan denetlenmesi gereken senaryolar için idealdir.
- stage: Deploy
displayName: Rolling Deploy to VMs
dependsOn: Build
condition: succeeded()
jobs:
- deployment: RollingDeploy
displayName: Rolling deploy to Ubuntu VMs
environment:
name: <environment-name>
resourceType: VirtualMachine
strategy:
rolling:
maxParallel: 1 #or 2 for parallel. For percentages, use x%
preDeploy:
steps:
- download: current
artifact: drop
- script: echo "Pre-deploy on $(hostname)"
deploy:
steps:
- script: |
echo "Unpacking Node.js app on $(hostname)"
sudo mkdir -p /opt/pipelines-javascript
sudo tar -xzf $(Pipeline.Workspace)/drop/$(Build.BuildId).tar.gz -C /opt/pipelines-javascript --strip-components=1
cd /opt/pipelines-javascript
echo "Installing production dependencies"
sudo npm ci --only=production
echo "Restarting Node.js service"
sudo systemctl restart pipelines-javascript
displayName: 'Extract, install, and restart Node.js service'
routeTraffic:
steps:
- script: echo "Routing traffic on $(hostname)"
postRouteTraffic:
steps:
- script: echo "Post-route health check on $(hostname)"
on:
failure:
steps:
- script: echo "Deployment failed on $(hostname)"
success:
steps:
- script: echo "Deployment succeeded on $(hostname)"
Ortamdaki işlem hattı izlenebilirliğine ulaşım sağlama
Ortam Dağıtımları sekmesi, işlemelerin ve iş öğelerinin tam izlenebilirliğini ve ortam için işlem hatları arası dağıtım geçmişini sağlar.