Azure DevOps YAML boru hatları, tüm kablo tanımlarını uygulama koduyla birleştirerek, ekipler şeffaflık, tekrarlanabilirlik ve bir duyarlılık sunuyor.Bu yaklaşım, kara kutudan ilk sınıf vatandaşa uzanan bir kod tabanına, aynı incelemeye tabi olan, direktife ve tarihe göre, kaynak koduna tabi olan bir şekilde entegre edilebilirlik.
Mikro hizmet mimarisi için otomatikleştirmek, kod olarak altyapı dağıtmak veya karmaşık multi-environment salı akışları oluşturmak için gerekli olan Azure DevOps YAML boru hatları size güvenilir bir şekilde gemi yazılımına ihtiyaç duyuyor.Bu makale, YAML boru hatlarının ne olduğu, onları nasıl yaratabileceğine, gelişmiş kalıpları nasıl ve üretim ortamlarından gelen en iyi uygulamaları nasıl ortaya koyar.
Azure DevOps YAML Boruları Nedir?
Azure DevOps YAML boru hatları, Azure DevOps hizmet veritabanında kullanılan klasik editörden farklı olarak, YAML boru hatlarının kopya dosyaları olarak var - genellikle adı altında:0) veya bir şekilde yerleştirilmeleri gerekir.Bu dosya Azure DevOps hizmet veritabanında kullanılan tüm boru hatlarının aksine, Azure DevOps boru hatlarının çalıştırdığı bir şekilde tanımlanmasını içerir.
Boru hattı dosyası, diğer YAML dosyalarını (templates) tekrarlanabilir mantık için referans verebilir, koşullu ifadeler, dinamik değişkenler ve hatta şubeye, etikete veya yol filtrelerine dayanan farklı davranışları da tetikleyebilir.Bu, CI/CD sürecini tamamen senaryolu ve manuel müdahale olmadan karmaşık gerçek dünya senaryolarını işlemek için yapabilir.
YAML Borularının Temelleri
A YAML boru hattı, birlikte çalışan birkaç hiyerarşik elementten oluşur: [DÜDÜ:0]triggers)) .), [[Döneticileri[FLT: 16) Bu bina blokları, kullanılabilir ve verimli boru hatları için önemlidir.
Sahneler, Jobs ve Adımlar
[FONT:0]Stages[Döneticiler, Yapı, Test ve Deploy. Her aşamada, [[Dönetici:2 İşi Yapacak bir görev, veya bir şablon[Dönemli havuz veya konteyner) tanımlayarak, [[Döneticileri/veya çalışma alanlarının (örneğin, çalışma alanlarının) bir dizisini içerebilir.
Tesirli Tesir
[FONT=0]Triggers[DÜDÜDÜDÜDÜDÜDÜDÜŞÜNÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ
trigger:
branches:
include:
- main
- releases/*
paths:
exclude:
- docs/*
- README.md
Değişkenler ve Parametreler
[FONT:0]Variables[[Dönetici:0)|Stajlar (Dönderler, sürüm numaraları veya çevre isimleri) ve özellikle de kalıplarda kullanılan ve varsayılan değerler, tip kısıtlamalar ve koşullu mantık.
Azure DevOps ayrıca şifreli ve asla loglarda maruz kalan gizli değişkenleri de destekliyor. Üretim seviyesi sırları için Azure Key Vault ile "Azure Key Vault" görevi veya değişken grup referansını kullanarak entegre edin.
Reusability için Şablonlar
[FONT=0]Templates[[Dönetici:0))
S[FONT boru hatlarının en güçlü özelliklerinden biridir. Tüm bir işi ayrı YAML dosyalarına faktörlemenize ve birden çok boru hattına dahil etmenize izin verirler.
Şablonlar destek parametreleri, bu onları esnek yapar. Örneğin, uygun sürümle bu şablonu "build-node-app.y ml" şablonunu bir parametre olarak alır ve npm install çalıştırın, inşa edin ve test edin. herhangi bir boru hattının uygun sürümle birlikte sadece bu şablonu içerebilir.Bu, düklemeyi ortadan kaldırır ve projelerde tutarlılığı sağlar.
# templates/build-node-app.yml
parameters:
- name: nodeVersion
type: string
default: '18.x'
steps:
- task: NodeTool@0
inputs:
versionSpec: ${{ parameters.nodeVersion }}
- script: npm install
displayName: 'Install dependencies'
- script: npm run build
displayName: 'Build application'
- script: npm test
displayName: 'Run tests'
Version-Controlled CI /CD
YAML boru hatlarının benimsenmesi klasik, UI tabanlı boru hatların birkaç somut avantajı getiriyor:
- [FONT:0) Tam sürüm kontrolü: Boru hattına her değişiklik, uygulama kodu olarak aynı depoda takip edilir. Standart Git iş akışlarını kullanarak tekrar boru hatları değişiklikleri yapabilirsiniz. Bu, "küresel" gizemini ortadan kaldırır ve boru hattının inşa ettiği kodun her zaman senkronize edilmesinden emin olur.
- [FONT:0)Reproducability and denetimability:) Çünkü boru hattı tam olarak aynı adımlarla, değişkenlerle ilgili herhangi bir işlemi yeniden yapılandırabilirsiniz ve ilk inşa edildiğinde olduğu gibi bağımlılıklara bağlı olarak güvenirsiniz.
- [FONT:0)Yapılanların ötesindeki Açıklama: YAML boru hatları, Azure DevOps'ın ifade dili kullanarak koşullu mantık, döngüler ve karmaşık ifadeler kullanarak, birden çok bölgeye dağıtarak, sigara testlerini sadece serbest bırakma gibi karmaşık iş akışlarını uygulayabilirsiniz.
- [FONT:0)Portability:[Dönetici:[Dönetici:0)
- [FONT:0)Collaboration ve kod incelemesi:) Boru değişiklikleri aynı çekme isteği inceleme sürecine kaynak kodu olarak konu oluyor. Bu, altyapı değişikliklerine ilişkin en iyi uygulamaları teşvik ediyor ve yanlış yapılandırmaları azaltır ve DevOps işbirliği kültürünü teşvik eder.
Bir Version-Controlled YAML Boru Hattı
Bir YAML boru hattını sıfırdan kurmak basittir. Aşağıda önerilen adımlar şunlardır:
- [FONT:0) Bir dosya yapısında Decide;[Dönetici:0) Ana boru hattınızı depodaki ([Dönetici: 0:6) veya özel bir klasörde, aynı yaklaşım ölçeklere sahip olduğunuzda daha iyi bir şekilde yer verebilirsiniz.
- [[Dönetici:0) Boru hattı tanımını yaz.[Dönetici:0))En az bir işlemden sonra, bir uyarı, bir havuz (ajan VM görüntüsü veya konteyner) içeren minimum geçerli bir YAML dosyası ile başlayın. Örnek: [[DüzDüzDüzücü|en azından bir iş. Örnek: [[Üyetim: 03.
- [FONT:0] Dosyayı depoladığınız yerde saklar.[DÜT:1] Commit ve uzaktan itin, dosyanın boru hattı için varsayılan olarak kullanmayı planladığından emin olun.
- [FONT=0) Azure DevOps'ta boru hattını oluşturun.[DÜDÜT:1] Boru hatlarına ve "Azure Repos Git" (veya seçtiğiniz kaynağı) seçin ve sonra "Existing Azure Boruları YAML dosyası" seçeneğini seçin.
- [FONT:0]Yenileme ve koşmaya devam edin.[Dönder: 1 ) İlk kez boru hattını yürütmek için "Run" tıklayın. Gerçek zamanlı olarak çıktıyı izleyebilirsin.
Klasik bir boru hattına sahip olan mevcut projeler için, boru hattı tanımına eklenerek veya YAML editörü kullanarak yeniden düzenlemeniz ile YAML'ye göç edebilirsiniz. Microsoft, bir [[Dönetici kılavuzuna sahip olur.[Dönetici:0] geçişini kolaylaştırmak için.
Örnek Boru Walkthrough
Daha gerçekçi bir boru hattını Node.js web uygulaması için inceleyelim, testler, bir sanatifact yayınlar ve bir stilize ortamına dağıtalım. Bu örnek çok aşamalı, değişkenleri ve koşullu dağıtım gösterir.
trigger:
branches:
include:
- main
- develop
paths:
exclude:
- 'README.md'
variables:
nodeVersion: '18.x'
artifactName: 'webapp'
stages:
- stage: Build
displayName: 'Build and Test'
jobs:
- job: BuildJob
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: $(nodeVersion)
- script: npm install
displayName: 'Install dependencies'
- script: npm run lint
displayName: 'Lint code'
- script: npm run build
displayName: 'Build application'
- script: npm test
displayName: 'Run unit tests'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: 'dist'
ArtifactName: $(artifactName)
- stage: DeployStaging
displayName: 'Deploy to Staging'
dependsOn: Build
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: DeployJob
pool:
vmImage: 'ubuntu-latest'
environment: staging
strategy:
runOnce:
deploy:
steps:
- download: current
artifact: $(artifactName)
- script: echo "Deploying artifact to staging server..."
displayName: 'Deploy step'
- script: echo "Running smoke tests..."
displayName: 'Smoke test'
Bu boru hatları gösteriyor:
- [FONT:0) Yol hariçlüğü ile Trigger[Dönetici: 1 ) - Belge değişiklikleri tam bir inşayı tetiklemeyecektir.
- [0]Variables[Dönetici:0))[Döneticilik için üstte tanımlanacaktır.
- [FONT:0] İki aşama[Dönetici: 1) - Yapı (işsiz) ve DeployStating (deployment işi) sadece kaynak şubesinin İLDİT:11 olup olmadığını çalışır.
- [FONT:0]İşçi iş ([Dönetici) [FONT=0) anahtar kelime kullanarak, bu da izlenebilirlik, onaylar ve kapılar sağlar.
- [FONT:0]Artifact yayınını ve indir – inşa çıktı kurtarılır ve daha sonra dağıtım aşaması tarafından alınır.
Gelişmiş Desenler
Manual Onayları ile Çok-Stage
Azure DevOps YAML boru hatları manuel onay kontrolleri ile ortamları destekler. Bu, devam etmeden önce belirli kullanıcıların veya grupların bir dağıtım onaylamasını isteyebilirsiniz. Bu, YAML'de yapılandırılan bir ortamı ifade ederek tanımlanır.
- stage: DeployProduction
dependsOn: DeployStaging
condition: succeeded()
jobs:
- deployment: ProdDeployment
pool:
vmImage: 'ubuntu-latest'
environment: production
strategy:
runOnce:
deploy:
steps:
- script: echo "Deploying to production..."
Durumsal Gerçek
Hangi aşamaları, işlerinizi veya adımların çalıştırıldığı kontrol etmek için ifadeler kullanın. Azure DevOps zengin bir ) ifade dili[Döneticileri için işlevleri ile ilgili olarak
Konteynerler Kullanımı
Bir VM görüntüsü kullanmak yerine, bir konteyner içinde tüm işleri çalıştırabilirsiniz. Bu, gelişim ve CI/CD'de tutarlı ortamlar sağlamak için idealdir. Sadece iş veya havuz altındaki bir elementin belirtilmesi gerekir.
pool:
vmImage: 'ubuntu-latest'
container: node:18-alpine
YAML Boruları için en iyi uygulamalar
Üretim uygulamalarından başlayarak, burada boru hatlarınızı sağlam ve koruyabilir tutmak için temel uygulamalardır:
- [FONT:0]Sc.Use şablonları liberal olarak [Döneticileri parametreli şablonlara ortak adımlar atarak, bu, standartları uygulamak ve tüm projelerin çalıştırılması kolay hale getirir.
- [FONT=0) YAML dosyaları küçük ve odaklanmış durumda tut.[Dönetici: 1 ) Tek bir monolithic dosyası, sahne veya işlev tarafından organize edilen birden fazla dosyayı okumak ve debug. Split (e.g., [[D:
- [[FONT:0) Azure Key Vault ile güvenli sırlar.[DÜT:1) Zor şifrelerden, API anahtarlarından veya sertifikalardan kaçının. Anahtar Vault ile bağlantılı değişken gruplar kullanın ve bunları boru hattınızda referanslayın. Azure DevOps otomatik olarak son değerleri iş zamanında getirecek.
- [FONT=0]Dönemli antajmanlar, (Dönetici) ve eksik anahtarlar yakalamak için bir linter veya IDE eklenti kullanın. Azure DevOps ayrıca boru hattı editöründe "Validate" düğmesine sahiptir.
- [[Düzg:0) kaynaklar açıkça [Dönemli: 1) Ver aşamalar, işler ve adımlar anlamlıdır.
- [FONT:0) Boru hattının ([Dönetici) hızlanması için kullanılan (CFONTT:0) ve NuGet paketleri her çalıştırın. Azure DevOps bu amaç için bir iş sunuyor.
- [FONT:0) Erken başarısızlıkla sonuçlanıyor.[[Dönetici:0) Boru hattı mümkün olduğunca çabuk başarısız oluyor. Run linting and syntax checks before expensive integration testing.Use theTAY:23T:23] seçeneği in script tasks to catch Uyarılar geri döndü.
- [[Dönetici:0) Boru hattınızı belirtin.[[Dönetici:0) Özel olarak, özellikle de ifade veya koşullu mantığı kullanarak, YAML dosyasında yorum yapın.
Diğer Araçlarla Bütünleşme
Azure DevOps YAML boru hatları yerli olarak sayısız hizmetle entegre eder. Ortak entegrasyonlar şunları içerir:
- [FONT=0]SonarQube[Dönetici denetim için [Dönetici] – inşa etmeden önce SonarQubeAnalyze görevi daha önce ekleyin.
- [FONT:0]Docker [Döneticileri için · Docker@2 görevi Azure Konteyner Kayıt veya Docker Hub'a resim inşa etmek ve itmek için kullanın.
- [FONT=0)GitHub – YAML boru hatları GitHub havuzları ile çalışmak için yapılandırılabilir, sadece Azure Repos. sadece GoHub'u boru hattı oluşturma sırasında kaynak olarak seçin.
- [FONT:0]Hizmetler [Dönetici Yönetimi için [Dönetici:0)
Mevcut görevlerin tam bir listesi için, MARDİNT:0)Azure Borus Görevleri).
Ortak Pitfalls ve Them'dan Nasıl Kaçırmak
Deneyimli takımlar bazen YAML boru hatlarıyla ilgili sorunlarla çalışır. Aşağıda sık sık hatalar ve çözümleri vardır:
- [FONT=0)Invalid YAML sözcülüğü[Dönder:)[Döneticiler, izsiz boşluklar, sekmelere izin vermezler.Seser veya Azure DevOps’ YAML ⁇ .
- [FONT=0)Açıkçası [Dönemli değişkenler[Dönemli spertmeler[Dönemli)[[Dönemli) spertme:0)))))))))))))))))))]]-söpücükler, makro sözcümanlık ifadelerini doğru kullanmadığınız sürece üst düzeydeki üst düzeyde tanımlanmış değişkenler.UseENFLT:24).
- [FONT:0)Misimarı,[[Dönemli) tetikler[[Dönetici:0)))[[[FONTT:0)Mis yapılandırılmış tetikleyiciler (Dönemli) - boru hattında sadece manuel veya planlanan tetikleyiciler koymayı unutur.
- [FONT:0] Ajans havuz kapasitesi) - yeterince ajan sağlamadan özel bir ajan havuzu kullanarak gecikmelere veya başarısızlıklara neden olabilir. Microsoft'un ev sahipliği yapan ajanları daha iyi elastikiyet için kullanmayı düşünün.
- [FONT:0) Boru hatları değişiklikleri test etme - her zaman ana kadar bir şube üzerinde bir test inşa etmeye başlamadan önce bir şube üzerinde bir test inşa eder.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Azure DevOps YAML boru hatları, gelişim ve operasyonlar arasındaki olgun, kod-ilk yaklaşımını temsil eder, ancak şablonlar ve en iyi uygulamalarla çiftleştirildiğinde, karmaşık akışlar modellemeye yetecek kadar açıklanır ve muhafaza edilir.
Sürüm kontrollü boru hatları sadece otomasyonla ilgili değildir - projeniz için basit bir boru hattı tanımlamakla ilgilidir, sonra da olgunluk artışları artarken, dağıtım frekansı artırmak, manuel hataları azaltmak ve işbirliğini geliştirmek, Azure DevOps YAML boru hatları kanıtlanmış bir temeldir.