0Pricing
Azure Fundamentals · Ders

Azure Pipelines ile CI İşlem Hattı Oluşturma

Çekme isteklerinde tetiklenen, birim sınamalarını çalıştıran ve bir derleme çıktısı üreten bir YAML işlem hattı tanımlayın; ardından portalda sınama sonuçlarını ve kod kapsamını inceleyin.

Azure Pipelines ile CI İşlem Hattı Oluşturma, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.

Sürekli Tümleştirme Nedir?

Sürekli Tümleştirme (CI), kod değişikliklerini sık sık ortak bir dala birleştirme ve her birleştirmede otomatik olarak bir derleme ile test çalıştırma uygulamasıdır. Amaç, tümleştirme hatalarını büyüyüp çözülmesi zor sorunlara dönüşmeden önce erken tespit etmektir. İyi bir CI pipeline'ı kodu derler, birim testlerini çalıştırır, kod kapsamını ölçer, statik analiz gerçekleştirir ve birkaç dakika içinde dağıtılabilir bir yapıt üretir. Azure Pipelines bu uygulama için otomasyon altyapısı sağlar.

YAML Pipeline Yapısı

Azure Pipelines CI pipeline'ları, deponuzun kök dizinindeki bir azure-pipelines.yml dosyasında tanımlanır. YAML dosyası tetikleyicileri (ne zaman çalışacağını), bir havuzu (hangi Agent türünün kullanılacağını) ve aşamalar, işler ve adımlar hiyerarşisini belirtir. Aşamalar varsayılan olarak sıralı çalışır. Bir aşamadaki işler varsayılan olarak paralel çalışır. Bir iş içindeki adımlar sıralı çalışır. Bu yapı, pipeline'ın yürütme akışı üzerinde ayrıntılı denetim sağlar.

# azure-pipelines.yml skeleton
trigger:
  branches:
    include:
    - main
    - 'feature/*'
  paths:
    exclude:
    - docs/**
    - '*.md'

pool:
  vmImage: ubuntu-latest

variables:
  buildConfiguration: Release
  nodeVersion: '18.x'

stages:
- stage: CI
  displayName: 'Build and Test'
  jobs:
  - job: Build
    displayName: 'Build Application'
    steps: []

Tetikleyici Yapılandırması

Azure Pipelines çeşitli tetikleyici türlerini destekler. Dal tetikleyicileri, kod belirtilen dallara gönderildiğinde pipeline'ı çalıştırır. Çekme isteği tetikleyicileri (PR tetikleyicileri), bir PR hedef dallara yönelik olarak açıldığında veya güncellendiğinde çalışır; bunlar, birleştirmeden önce kodu doğrulamak için gereklidir. Zamanlanmış tetikleyiciler sabit bir zamanda çalışır (örneğin gece derlemeleri). Pipeline tetikleyicileri pipeline'ları birbirine zincirler. Otomatik çalıştırmaları devre dışı bırakıp yalnızca manuel yürütmeye izin vermek için trigger: none belirtin.

# Branch trigger
trigger:
  branches:
    include: [main, develop]

# Pull request trigger
pr:
  branches:
    include: [main]
  autoCancel: true  # Cancel previous runs when PR is updated

# Scheduled trigger (nightly build at 02:00 UTC)
schedules:
- cron: '0 2 * * *'
  displayName: 'Nightly Build'
  branches:
    include: [main]
  always: true  # Run even if no new commits

Adımlar: Betikler ve Görevler

Pipeline adımları ya betiklerden (bash veya PowerShell komutları) ya da görevlerden (Azure DevOps marketplace'inden alınan, önceden oluşturulmuş ve parametreleştirilebilen birimler) oluşur. NodeTool@0, DotNetCoreCLI@2 ve Maven@3 gibi görevler yaygın derleme işlemlerini kapsüller. Okunabilir pipeline günlükleri için her adımda displayName kullanın. Her adım sırayla çalışır ve continueOnError: true ayarlanmadığı sürece herhangi bir adım sıfır olmayan bir kodla çıkarsa pipeline başarısız olur.

steps:
- task: NodeTool@0
  displayName: 'Install Node.js 18'
  inputs:
    versionSpec: '18.x'

- script: npm ci
  displayName: 'Install dependencies (clean install)'

- script: npm run lint
  displayName: 'Run ESLint'

- script: npm run build
  displayName: 'Build production bundle'

- script: npm test -- --ci --coverage
  displayName: 'Run unit tests with coverage'

Sınama Sonuçlarını Yayımlama

Testleri çalıştırdıktan sonra sonuçları PublishTestResults görevini kullanarak Azure DevOps'a yayımlayın. Azure Pipelines, JUnit, NUnit, XUnit veya VSTest sonuç dosyalarını ayrıştırır ve pipeline çalıştırma arayüzünde başarılı/başarısız sayımlarını, test çalıştırma süresini ve tek tek test ayrıntılarını görüntüler. Test geçmişi zaman içinde izlenir; böylece kararsız testleri ve gerilemeleri fark edebilirsiniz. Bu, ekip genelinde kod kalitesinin görünür olması için gereklidir.

# Example: Node.js project with Jest tests
steps:
- script: npm test -- --ci --reporters=jest-junit
  displayName: 'Run tests with JUnit reporter'
  env:
    JEST_JUNIT_OUTPUT_DIR: '$(Agent.TempDirectory)/test-results'

- task: PublishTestResults@2
  displayName: 'Publish test results'
  inputs:
    testResultsFormat: JUnit
    testResultsFiles: '$(Agent.TempDirectory)/test-results/**/*.xml'
  condition: succeededOrFailed()  # Publish even if tests fail

Kod Kapsamını Yayımlama

Azure Pipelines'ın pipeline arayüzünde kapsam yüzdelerini ve eğilimlerini görüntüleyebilmesi için kod kapsamı raporlarını yayımlayın. PublishCodeCoverageResults görevi Cobertura veya JaCoCo biçimindeki raporları kabul eder. Bunu dal kapsamı kapılarıyla birlikte kullanın; en düşük kapsam eşiğini yapılandırın ve kapsam bu değerin altına düşerse derlemeyi başarısız yapın. Kapsam eğilimleri, karşılık gelen testler eklenmeden yeni kod eklendiği durumları belirlemeye yardımcı olur.

# Jest + coverage
- script: npm test -- --ci --coverage --coverageReporters=cobertura
  displayName: 'Run tests with coverage'

- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/coverage'

Pipeline Değişkenleri ve Değişken Grupları

Pipeline yapılandırmasını YAML içinde pipeline, aşama veya iş düzeyinde tanımlanan değişkenlerde depolayın. Hassas değerler (API anahtarları, parolalar) için gizli değişkenler kullanın; bunları pipeline kitaplığında (kullanıcı arayüzü) veya değişken gruplarında ayarlayıp YAML içinde başvurun. Değişken grupları, birden çok pipeline arasında paylaşılan ve yeniden kullanılabilen değişken koleksiyonlarıdır. Gizli değerleri Key Vault'tan pipeline değişkenlerine otomatik olarak eşitlemek için bir değişken grubunu Azure Key Vault'a bağlayın.

# Reference a variable group in a pipeline
variables:
- group: 'Production-Secrets'  # Linked to Azure Key Vault
- name: buildConfiguration
  value: Release

# Use a variable
steps:
- script: echo 'Building $(buildConfiguration) configuration'
- script: az webapp deploy --src-path drop.zip
  env:
    AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)  # From Key Vault
    APP_API_KEY: $(APP_API_KEY)  # Secret, not printed in logs

Yapıtlar: Derleme Çıktısını Paketleme

Başarılı bir derlemeden sonra çıktıyı, sonraki aşamaların (örneğin dağıtımın) erişebilmesi için bir pipeline yapıtı olarak paketleyin. Derleme Agent'ındaki dosyaları Azure DevOps yapıt depolama alanına yüklemek için PublishPipelineArtifact kullanın. Daha sonraki bir aşamada veya işte yapıtı almak için DownloadPipelineArtifact kullanın. Bu yaklaşım, farklı Agent'larda veya farklı aşamalarda çalışabilen derleme işini dağıtım işlerinden ayırır.

# Publish build artifact
- task: PublishPipelineArtifact@1
  displayName: 'Publish build artifact'
  inputs:
    targetPath: '$(System.DefaultWorkingDirectory)/dist'
    artifactName: webapp-drop
    publishLocation: pipeline

# In a later deployment job, download the artifact
- task: DownloadPipelineArtifact@2
  inputs:
    artifactName: webapp-drop
    targetPath: '$(Pipeline.Workspace)/drop'

- script: ls -la $(Pipeline.Workspace)/drop

Daha Hızlı Derlemeler için Paralel İşler

Bir aşama içinde birden çok iş tanımlayarak bağımsız görevleri paralel çalıştırın. Örneğin birim testlerini ve güvenlik taramasını art arda değil, aynı anda çalıştırın. Paralel işler ayrı derleme dakikaları gerektirir; ancak toplam pipeline süresini büyük ölçüde azaltabilir. Bir işin başlamadan önce bir veya daha fazla işin tamamlanmasını beklemesini sağlamak ve bir aşama içinde bağımlılık grafiği oluşturmak için dependsOn özelliğini kullanın.

stages:
- stage: CI
  jobs:
  - job: UnitTests
    displayName: 'Run unit tests'
    steps:
    - script: npm test

  - job: LintAndSecurity
    displayName: 'Lint and security scan'
    steps:
    - script: npm run lint
    - script: npm audit --audit-level=high

  - job: BuildArtifact
    displayName: 'Build and publish artifact'
    dependsOn: [UnitTests, LintAndSecurity]
    condition: succeeded('UnitTests') and succeeded('LintAndSecurity')
    steps:
    - script: npm run build

Dal İlkeleriyle Derleme Doğrulaması

CI pipeline'ınızı Azure Repos'taki bir dal ilkesine bağlayarak main dalını hedefleyen çekme isteklerinde otomatik olarak derleme doğrulama denetimi olarak çalışmasını sağlayın. Pipeline başarılı olana kadar birleştirme engellenir. Birden çok denetimi birleştirin: CI pipeline'ı başarılı olmalı, en az iki gözden geçiren onay vermeli, tüm yorumlar çözümlenmeli ve bağlantılı bir iş öğesi bulunmalıdır. Bu, hatalı kodun ana dala birleştirilmesini imkânsız hâle getiren bir kalite kapısı oluşturur.

# Add build validation via CLI
az repos policy build create \
  --blocking true \
  --branch main \
  --branch-match-type exact \
  --build-definition-id <pipeline-id> \
  --display-name 'CI Build Validation' \
  --enabled true \
  --project MyProject \
  --repository-id <repo-id> \
  --queue-on-source-update-only true \
  --manual-queue-only false \
  --valid-duration 720  # Pipeline result expires after 12 hours

Pipeline Çalıştırma Sonuçlarını Okuma

Bir pipeline çalıştırması tamamlandıktan sonra sonuçları Azure DevOps portalında inceleyin. Summary sekmesi genel başarılı/başarısız durumunu ve zamanlamayı gösterir. Tests sekmesi tüm test sonuçlarını sonuçlara göre filtreleme olanağıyla listeler. Code Coverage sekmesi kapsam yüzdesini gösterir ve kapsanmayan satırları vurgular. Adım adım günlük çıktısını görmek için herhangi bir işe tıklayın. Başarısız pipeline'larda başarısız adım kırmızıyla vurgulanır ve hızlı tanılama için tam hata çıktısı gösterilir.

# View pipeline run results via CLI
az pipelines runs list \
  --pipeline-ids <pipeline-id> \
  --project MyProject \
  --query '[].{id:id, status:status, result:result, startTime:startTime}' \
  -o table

# View logs from a specific run
az pipelines runs logs list \
  --run-id <run-id> \
  --project MyProject

Kısa Kontrol

Bu dersteki Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: Azure Pipelines YAML, derleme, test ve yapıt oluşturma işlemleri için aşamalar, işler ve adımlarla CI pipeline'larını tanımlar; PR tetikleyicileri ve dal ilkeleri, hatalı kodun birleştirilmesini engelleyen kalite kapılarını zorunlu kılar ve PublishTestResults ile PublishCodeCoverageResults görevleri, test kalitesini ekip genelinde görünür hâle getirir. Sırada Azure'a sürekli dağıtımı inceleyeceğiz.

Sıkça Sorulan Sorular

“Azure Pipelines ile CI İşlem Hattı Oluşturma” dersi ücretsiz mi?

Evet — “Azure Pipelines ile CI İşlem Hattı Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.

“Azure Pipelines ile CI İşlem Hattı Oluşturma” dersinde ne öğreneceğim?

Çekme isteklerinde tetiklenen, birim sınamalarını çalıştıran ve bir derleme çıktısı üreten bir YAML işlem hattı tanımlayın; ardından portalda sınama sonuçlarını ve kod kapsamını inceleyin. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Azure Pipelines ile CI İşlem Hattı Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Azure DevOps Services Genel Bakış
  2. Azure Pipelines ile CI İşlem Hattı Oluşturma
  3. Azure'a Sürekli Dağıtım
  4. Azure'da GitHub Actions
← Azure Fundamentals Sayfasına Dön