Ana içeriğe atla

Azure Pipelines Eğitimi: Yeni Başlayanlar için Eksiksiz CI/CD Rehberi

Bu eğitim, Azure Pipelines kullanarak CI/CD iş akışlarını kurma, çalıştırma ve optimize etme adımlarını anlatır.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

CI/CD hattınız sürekli bozuluyor ya da yavaş ve hantal mı geliyor? Yalnız değilsiniz. Başarısız derlemeler, uyumsuz ortamlar ve ekip arkadaşlarımın yanlışlıkla çalışmalarımı üzerine yazdığı durumlarla ben de karşılaştım. Azure Pipelines, neredeyse her projeyi her platformda derleyebilen, test edebilen ve dağıtabilen bulut barındırmalı bir hizmetle bu sorunları ortadan kaldırır.

Bu yüzden bu eğitimde size şunları nasıl yapacağınızı göstereceğim:

  1. İlk Azure Pipeline’ınızı oluşturma
  2. Projenizi bulutta derleme
  3. Hataları erken yakalamak için otomatik testler ekleme
  4. Tek bir itmeyle geçiş ya da üretime dağıtma
  5. Hattınızı hız ve güvenilirlik için izleme ve optimize etme
  6. Gerçek projelerde kanıtlanmış en iyi uygulamaları takip etme

Hadi başlayalım!

Azure Pipelines nedir?

Azure Pipelines, uygulama geliştirme, test ve dağıtımı basitleştiren bulut tabanlı bir çözümdür. 

Azure DevOps araç setinin bir bileşenidir ve yazılım geliştirme yaşam döngüsünün tamamını destekler. Çeşitli platformlar ve programlama dillerini desteklediği için her ölçekte ekip için esnek bir seçenektir. GitHub, Azure Repos ve diğer bilinen sürüm kontrol sistemleriyle entegredir. 

Azure Pipelines’ın temel özellikleri şunlardır: 

Hizmet

Amaç

Çoklu platform desteği

Azure Pipelines, Linux, macOS ve Windows gibi çeşitli işletim sistemleri için uygulamaların derlenmesini ve dağıtılmasını otomatikleştirir.

Sürüm kontrolü ile entegrasyon

Azure Pipelines, Azure Repos, GitHub ve diğer bilinen sürüm kontrol sistemlerindeki kod depolarınıza bağlanır.

YAML tabanlı hat yapılandırması

Azure Pipelines, derleme ve dağıtım süreçlerini kod olarak tanımlamamıza olanak tanır ve sürümlemeyi mümkün kılar.

Sürekli entegrasyon ve sürekli dağıtım (CI/CD)

Azure Pipelines, kod değişikliklerinin entegre edilmesi ve uygulamaların dağıtılması sürecini uçtan uca kolaylaştırır.

Deneyimlerime göre, Azure Pipelines, ekibi içinde düzgün bir CI/CD süreci isteyen herkes için faydalıdır. Esnektir, ölçeklenebilirdir ve diğer Azure hizmetleriyle iyi entegre olur.

Azure Pipelines Mimarisi, kodun derlenmesi, test edilmesi ve dağıtılması sürecini otomatikleştiren bir kurulumdur. Geliştiricilerin kod değişikliklerini bir depoya itmesiyle başlar. Sistem, kod denetimi, derleme ve test gibi bir dizi otomatik görevi çalıştırır. Bu görevler tamamlandığında, kod hazırlık (staging) ve üretim gibi farklı ortamlara dağıtılır. Bu mimari, kod değişikliklerinin tutarlı ve güvenilir biçimde teslim edilmesini sağlar, ekiplerin yüksek kaliteli yazılımı sürdürmesine yardımcı olur.

Azure Pipelines Mimarisi (Kaynak: Microsoft).

Pipelines’ın ötesinde Azure DevOps’u daha geniş bir çerçevede anlamak istiyorsanız, Azure DevOps eğitimi baştan sona tüm CI/CD yaşam döngüsünü adım adım ele alıyor.

İlk Azure Pipeline’ınızı Kurma

Azure Pipelines ortamında çalışmak için önce uçtan uca derleme, test ve dağıtım sürecini mümkün kılacak her şeyi kurmamız gerekir.

Önkoşullar

İlk hattınızı oluşturmaya başlamadan önce, aşağıdakilere sahip olduğunuzdan emin olun:

  1. Azure DevOps hesabı ve organizasyon kurulumu: Zaten bir hesabınız yoksa Azure DevOps hesabına kaydolun. Projelerinizi yönetmek için bir organizasyon oluşturun. 
  2. Depo: Örnek bir projeye sahip bir kod deposuna ihtiyacınız olacak. Bu, Azure Repos veya GitHub’da barındırılabilir. Bu eğitimde basit bir Node.js projesi kullanacağız.
  3. Azure portal erişimi: Azure Kubernetes Service (AKS) ve daha birçok Azure hizmetine dağıtım yapmak istediğinizde Azure portalına da erişiminiz olmalı.

Daha geniş Azure ekosistemini tazelemek isterseniz Understanding Microsoft Azure kursuna göz atmanızı öneririm. 

Yeni proje ve depo oluşturma

Azure DevOps hesabınız ve organizasyonunuz hazır olduğuna göre, ilk projemizi ve depomuzu oluşturalım.

  • Yeni bir proje oluşturun:
    • Azure DevOps hesabınıza giriş yapın.
    • New Project’e tıklayın, bir ad verin (ör. "AzureDevOps-DataCamp-Tutorial"), ve görünürlüğü (public veya private) seçin.
    • Create Project’e tıklayın.

Azure DevOps’ta yeni bir proje kurmak basittir:

Proje adı, kısa bir açıklama girin ve görünürlüğü (public veya private) ayarlayın.

Son olarak başlamak için "Create the Project"’e tıklayın.

  • Bir depo kurun:
    • Azure Repos kullanıyorsanız Repos bölümüne gidip yeni bir depo başlatın.
    • Alternatif olarak, Import Repository seçeneğini belirleyerek mevcut bir GitHub deposunu bağlayabilirsiniz.
    • Depo adını verin, Repository type (Git veya TFVC) seçin, klonladığınız depo URL’sini yapıştırın ve Import’a tıklayın.

Kodunuzu yönetirken Azure Pipelines’ta sürüm kontrol sistemi seçmek kritiktir. İki seçenek:

Git: Geliştirici topluluğunda yaygın ve modern bir dağıtık sürüm kontrol sistemi. Çoğu proje için en iyi seçimdir.

TFVC (Team Foundation Version Control): Daha nadir kullanılan merkezi bir sürüm kontrol sistemi, genellikle eski projelerde tercih edilir.

Bu sezgisel düzen, projenizin ihtiyaçlarına en uygun sistemi seçmenizi kolaylaştırır.

  • GitHub kullanıyorsanız, proje arayüzünüzün sol altından Project Settings > GitHub Connections > Connect your GitHub account seçerek GitHub hesabınızı Azure DevOps’a bağlayabilirsiniz.

Arayüzün sol alt köşesindeki Project Settings’e giderek bir GitHub hesabının Azure DevOps’a nasıl bağlanacağını gösteren görsel.

Ardından GitHub Connections’ı seçin.

Son olarak, Connect your GitHub account’a tıklayın.

Bu eğitim için kod depomuz olarak Azure Repos’u kullanacağız. Yeni başlıyorsanız veya TFVC’yi seçmek için özel bir nedeniniz yoksa Git’i tercih etmenizi öneririm.

İlk hattınızı (pipeline) oluşturma

Şimdi ilk hattımızı oluşturalım. Aşağıdaki adımları izleyin:

  • Pipelines bölümünüzde Create Pipeline’a tıklayın.

Azure DevOps projenizde Pipelines bölümüne gidin:

Azure DevOps projenizi açın.

Sol menüden Pipelines’a tıklayın.

Bu bölüm, derleme ve yayın hatlarınızı verimli şekilde yönetmenizi sağlar.

Yeni bir hat kurulumuna başlamak için Create Pipeline’a tıklayın.

Bu basit adım, Azure DevOps içinde iş akışlarınızı otomatikleştirme sürecini başlatır.

  • Kaynak olarak Azure Repos Git’i seçin ve deponuzu belirleyin.

Hattınız için bir kaynak seçin:

Kaynak olarak Azure Repos Git’i seçin.

Ardından çalışmak istediğiniz depoyu seçin.

Bu basit süreç, hattınızı doğru kod deposuna bağlayarak verimli yönetim sağlar.

  • Hattınızı YAML veya Classic editor ile yapılandırabilirsiniz. Adım tanımlarını kodla ifade eden YAML’ı seçelim.
  • Hattı kaydedin ve her şeyin düzgün çalışıp çalışmadığını görmek için çalıştırın.

YAML mı, Classic Editor mü?

Azure Pipelines hatlarınızı tanımlamak için iki yöntem sunar:

  • YAML hatları: Hattınızı kodla tanımlamanın bir yolu. .yaml veya .yml dosyasında kaynak deponuzda tutulur; sürümleme ve daha iyi işbirliği sağlar.
  • Classic Editor: Klasik Editor, kullanıcı dostu görsel bir sürükle-bırak arayüzüdür ve daha karmaşık senaryolarda daha az esnektir.

Kriter

YAML Hatları

Classic Editor

Sürüm kontrolü

YAML Hatları sürüm kontrolünü destekler ve kaynak kod deposunda saklanır.

Classic Editor sürüm kontrolünü desteklemez. GUI tabanlıdır.

Esneklik

YAML Hatları üst düzey esneklik sunar.

Classic Editor sınırlı esneklik sunar.

En uygun kullanım

YAML Hatları, uzun vadeli, karmaşık iş akışları ve otomasyon için en iyisidir.

Classic Editor, hızlı kurulumlar için daha uygundur.

Deneyimlerime göre, YAML hatları Infrastructure as Code (IaC) uygulamalarını izleyen ekipler için daha fazla esneklik sağlar. Ancak Classic Editor, işleri daha görsel şekilde yapmak isteyen yeni başlayanlar için idealdir. 

Bununla birlikte, uzun vadeli ölçeklenebilirlik için Classic Editor yerine YAML hatları önerilir.

Azure Pipelines ile Derleme

Şimdi Azure Pipelines ile nasıl derleme yapabileceğimize bakalım. 

Bu bölümde Azure Pipelines’ın bağımlılıkları yükleme, derleme ve testleri çalıştırma gibi kodunuzu derlemek için attığı adımları belirleyeceğiz. Bu adımları, kaynak kod depomuzda YAML kullanarak bir yapılandırma dosyasında ifade edeceğiz; YAML, tarifteki adımları basit ve insan tarafından okunabilir şekilde tanımlamanın bir yoludur.

YAML hat sözdizimi

İşte basit bir YAML hat örneği:

# This section defines the trigger(s) for the pipeline.
# 'main' specifies that the pipeline will run whenever changes are pushed to the 'main' branch.
trigger:
- main  # automatically triggers this pipeline when changes are made to the 'main' branch.

# This defines the pool where the pipeline will run.
# 'ubuntu-latest' specifies the virtual machine image for executing tasks.
pool:
  vmImage: 'ubuntu-latest'  # This uses the latest Ubuntu image provided by Azure DevOps.

# Steps contain the individual tasks or actions that the pipeline will execute.
steps:
- script: echo Hello, world!  # A script task to run shell commands. This one prints "Hello, world!".
  displayName: 'Run my first pipeline script'  # A friendly name for this step, making it easier to identify in the pipeline logs.

Kodu adım adım inceleyelim:

  • trigger: Hattı tetikleyen dalı belirtir (ör. main).
  • pool: Derleme aracısını tanımlar (ör. ubuntu-latest).
  • steps: Bağımlılıkları yüklemek ve derleme betiğini çalıştırmak gibi yürütülecek görevleri listeler.

Derleme adımlarını yapılandırma

YAML hattınıza derleme adımları eklemek için ‘steps’ bölümü altında ‘script’ tanımlamanız gerekir.

Basit bir Node.js uygulaması için örneğin, aşağıdaki azure-pipelines.yml dosyamızda Azure DevOps’un otomatik oluşturduğu kod bulunur.

# Node.js
# Build a general Node.js project with npm.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

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

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'

Yukarıdaki YAML hattındaki steps bölümüne bakalım: 

  1. Node.js’i yükleyin: Node.js sürümünü belirtmek için NodeTool@0 görevi kullanın. 
  2. Bağımlılıkları yükleyin: Proje bağımlılıklarını yüklemek için npm install çalıştırın. 
  3. Kodu derleyin (projeyi build edin): Kodu derlemek için npm run build çalıştırın. 

Hattı çalıştırma

Hattımızı manuel olarak tetikleyebilir veya dal itmeleri gibi olaylar gerçekleştiğinde otomatik çalışacak şekilde ayarlayabiliriz.

  • Manuel tetikleme: Hattı manuel tetiklemek için Azure DevOps arayüzünde Run Pipeline’a tıklayın.

Azure DevOps arayüzünde hattı manuel başlatmak için kullanılan Run Pipeline düğmesi.

  • Otomatik tetikleme: Depo olaylarına dayalı tetikleyiciler kurun; main dalına yapılan itmeler hattı otomatik tetiklesin. Örnek:
trigger:
- main

Hattınızı çalıştırdıktan sonra günlükleri görüntüleyebilir ve sorun giderebilirsiniz.

Günlüklere erişmek için hat çalıştırma özetine gidip belirli işi veya görevi seçin. Bu, o adıma ait günlükleri gösterecektir; aşağıdaki görselde olduğu gibi ham günlükleri görüntülemek için herhangi bir işi (Build, Push veya Update) seçebilirsiniz.

Hattın çalışma özeti; her adımın ham günlüklerine erişmek için iş seçenekleri (Build, Push, Update) gösteriliyor.

Hattın çalışma özeti; her adımın ham günlüklerine erişmek için iş seçenekleri (Build, Push, Update) gösteriliyor.

Yaygın sorunları gidermek için zaman aşımı, kaynak kısıtları veya yanlış yapılandırmalar gibi tipik problemleri kontrol edebilirsiniz.

Hattınıza Testler Ekleme

Kod kalitesini sağlamak ve sorunları geliştirme sürecinin başında yakalamak için hattınıza testler eklersiniz. Azure Pipelines’ta birim, entegrasyon veya diğer testleri hat yapılandırmanıza adımlar ekleyerek entegre edebilirsiniz.

Test adımlarını yapılandırma

Hattınıza test adımları dahil ederek kod kalitesini güvence altına alın. Jest, Mocha veya NUnit gibi popüler çerçeveleri kullanabilirsiniz. Örneğin, Jest ile birim testleri şöyle eklenir:

- script: |
    npm test
  displayName: 'Run unit tests with Jest'

Test sonuçlarını görüntüleme

Azure Pipelines’ta yerleşik test raporlama bulunur. Takibi kolaylaştırmak için test sonucu yayımlamayı ayarlayabilir ve test sonuçlarını hat günlüklerinde görüntüleyebilirsiniz. İşte nasıl:

  • Önce Builds > Test Results bölümüne gidin.
  • Test sonuçlarını yayımlamak için PublishTestResults@2 görevini kullanın. Bu, genel takibi kolaylaştırır. Örneğin:
- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/test-results.xml'
    testRunTitle: 'Unit Tests'

Azure Pipelines ile Dağıtım

Azure hattı YAML dosyanızdaki dağıtım adımlarında, uygulamanızı test, hazırlık (staging) ve üretim gibi çeşitli ortamlara otomatik olarak dağıtabilirsiniz. Bu bölümde Azure Pipelines ile dağıtım yapmanın birkaç yolunu gözden geçireceğiz.

Azure Web Apps’e dağıtım

Azure Web Apps, Azure Portal’da ölçekli şekilde web uygulamaları geliştirmenizi, dağıtmanızı ve yönetmenizi sağlayan bir hizmettir. 

Azure Web Apps’e dağıtım için iki hizmeti birbirine bağlamanız gerekir. İşte nasıl:

  • Projenizin sol altından Project Settings bölümüne gidin ve Pipelines altındaki Service Connections ögesine tıklayın. 

Azure hizmetlerini bağlamak için sol alt köşede Project Settings seçeneğini gösteren Azure DevOps arayüzü.

Pipelines bölümüne gidin:

Pipelines altında Service Connections’a tıklayın.

Bu adım, Azure Hizmetlerine bağlantı kurmanıza ve projenizin yeteneklerini geliştirmenize yardımcı olur.

  • New Service Connection’a tıklayın ve Azure Resource Manager’ı seçin. 

Yeni bir servis bağlantısı kurun:

New Service Connection’a tıklayın.

Bu basit süreç, projenizin yeteneklerini artırarak Azure kaynaklarına bağlanmanıza yardımcı olur.

Yeni bir servis bağlantısı kurun:

Azure Resource Manager’ı seçin.

Bu basit süreç, projenizin yeteneklerini artırarak Azure kaynaklarına bağlanmanıza yardımcı olur.

  • Azure hesabınızla kimlik doğrulayın.
  • Azure App Service’e dağıtın:
    • Pipelines bölümüne geri dönün ve hattınızı yapılandırın.
    • Hattınıza Azure’a dağıtım yapacak bir görev ekleyin.
    • Kaynak grubu ve hizmet ayrıntılarını belirtin. 

İşte basit bir Node.js uygulamasını Azure App Service’e dağıtmak için bir YAML dağıtım hattı örneği:

# Define the task for deploying to an Azure Web App
- task: AzureWebApp@1
  inputs:
    # This specifies your Azure subscription service connection
    azureSubscription: 'your-azure-subscription'
    # This specifies the name of your web app
    appName: 'your-app-name'
    # This specifies the location of the app package or files to be deployed
    package: '$(Build.ArtifactStagingDirectory)'

Yukarıdaki kodu kendi kullanım senaryonuza uyarlayabilmeniz için parçalayalım:

  • your-azure-subscription ifadesini, Azure aboneliğinize erişim veren servis bağlantısının adıyla değiştirin.
  • your-app-name ifadesini Azure’daki web uygulamanızın gerçek adıyla değiştirin. 
  • $(Build.ArtifactStagingDirectory) ifadesini dağıtım için web uygulaması paketini veya dosyalarını koyacağınız dizinle değiştirin. $(Build.ArtifactStagingDirectory) — Bu değişken, derlemeden sonra uygulama dosyalarınızın (build artifaktlarınızın) bulunduğu klasörü işaret eder.

Sürekli dağıtımı (CD) kurma

Kodumuzdaki her şey tüm testlerden ve kontrollerden geçtiğinde sıradaki adım sürekli dağıtımı kurmaktır. Aşağıda açıklanan adımları izleyin.

Azure Yayın Hattı modeli; artifakt kaynaklarının dağıtım için yayın hattına aktığını gösterir.

Azure yayın hattı dağıtım modeli (Kaynak: Microsoft)

  • Bir yayın hattı oluşturun:
    • Pipelines > Releases bölümüne gidin ve New Pipeline’a tıklayın.

Azure DevOps’ta Pipelines > Releases yolunu izleyip New Pipeline’ı seçerek yayın hattı oluşturma yolunu gösteren arayüz.

Azure DevOps’ta yayın hattı oluşturmak basittir:

Sol menüden Pipelines bölümüne gidin.

Releases’a tıklayın.

Sonra yayın sürecinizi kurmaya başlamak için New Pipeline’ı seçin.

Bu kullanıcı dostu arayüz, yayın iş akışlarınızı verimli şekilde yönetmenize ve otomatikleştirmenize yardımcı olur.

  • Azure App Service Deployment şablonunu seçin.

Azure DevOps arayüzünde yayın hattı kurulumu için Azure App Service Deployment şablonunu seçme seçeneği.

  • Ortamları yapılandırın:
    • Uygulamanızın dağıtılmasını istediğiniz Dev, Staging, QA ve Production ortamlarını ekleyin ve yapılandırın.

Azure DevOps arayüzünde Dev, Staging, QA ve Production gibi dağıtım ortamlarının yapılandırılmış görünümü.

  • Yayın hattının kaynağı olarak derleme hattınızdan gelen artifaktı bağlamak için Add an artifact seçeneğini belirleyin.

Yayın hattı kurulumu için kaynak olarak derleme hattından bir artifakt ekleme seçeneğini gösteren Azure DevOps arayüzü.

  • Onayları ve geçitleri (gates) yapılandırın:
    • Üretim gibi hassas ortamlar için dağıtım öncesi onayların ayarlanması gereklidir. Örneğin, yayın için bir ekip liderinin onayı gerekebilir. Dağıtımın kalite standartlarını karşıladığından emin olmak için otomatik testler veya izleme kontrolleri gibi geçitler de ekleyebilirsiniz.

Deneyimlerime göre, bu aşama zorlu geliştirme ortamlarında istikrarı korumak için gereklidir. Onaylar ve geçitler, kontrol sağlar ve üretime yalnızca yüksek kaliteli kodun ulaşmasını güvence altına alır.

Kubernetes’e dağıtım

Kubernetes, konteynerleştirilmiş uygulamaları güvenilir ve ölçeklenebilir şekilde çalıştırmayı kolaylaştırır. Azure Kubernetes Service (AKS) kullandığınızda, dağıtımı ve işletimi basitleştiren yönetilen bir ortam elde edersiniz. Bu bölümde, Azure Pipelines kullanarak uygulamanızı AKS’ye nasıl dağıtacağınızı göstereceğim.

AKS kümenizi hazırlayın

AKS kümesini Azure portalı veya CLI ile oluşturabilirsiniz. İşte küme sağlamak için temel bir Bash CLI komutu:

az aks create \
  --resource-group <ResourceGroupName> \
  --name <AKSClusterName> \
  --node-count 3 \
  --enable-addons monitoring \
  --generate-ssh-keys

Yukarıdaki komutu açıklayalım:

  • --resource-group: AKS kümesinin oluşturulacağı Azure kaynak grubunu belirtir.
  • --name: AKS kümenizin adını ifade eder.
  • --node-count: Kümedeki düğüm sayısını ayarlar (örnekte 3).
  • --enable-addons monitoring: Azure Monitor for Containers ile izleme ve analitiği etkinleştirir.
  • --generate-ssh-keys: Sağlanmamışsa düğümlere güvenli erişim için SSH anahtarlarını otomatik oluşturur.

<ResourceGroupName> ve <AKSClusterName> ifadelerini, gerçek kaynak grubu ve küme adlarınızla değiştirmeyi unutmayın.

AKS kümeniz kurulduktan sonra kubectl yapılandırılmalıdır. Bu, hat aracısının veya yerel bilgisayarınızın küme ile kubectl üzerinden iletişim kurabilmesini sağlar.

Komut satırı araçlarıyla Azure görevlerinizi hızlandırabilirsiniz—şu Azure CLI cheat sheet hızlı bir başvuru kaynağıdır.

Bir dağıtım YAML dosyası oluşturun 

Kubernetes’e bir Docker imajı dağıtmak için temel bir dağıtım YAML dosyasını örnek alalım:

# This defines the API version and the kind of Kubernetes resource we are creating.
# 'apps/v1' is the API version, and 'Deployment' is the resource type.
apiVersion: apps/v1
kind: Deployment

# Metadata contains information to identify the resource uniquely.
# 'name' specifies the name of the Deployment.
metadata:
  name: my-app  # Name of the Deployment, used for identification.

# "spec" specifies the intended deployment state.
spec:
  # Number of replicas/pods we want for this Deployment.
  replicas: 3  # Ensures high availability by running three app replicas.

  # Selector is used to define the labels that this Deployment will manage.
  selector:
    matchLabels:
      app: my-app  # This ensures that only Pods with the label 'app: my-app' are managed by this Deployment.

  # Template specifies the blueprint for the pods created by the Deployment.
  template:
    metadata:
      labels:
        app: my-app  # Labels for the Pods, matching the selector above.

    # A specification for the containers of the Pods.
    spec:
      containers:
      - name: my-app  # Name of the container. This is useful for linking to the container in logs, etc.
        image: mycontainerregistry.azurecr.io/my-app:latest  # Pull the container image you will call from your container registry.
        ports:
        - containerPort: 80  # The container listens on port 80.

Azure Pipelines kullanarak dağıtım

YAML hattınıza AKS’ye dağıtım yapacak bir görev ekleyin.

# This defines a task for deploying Kubernetes manifests within an Azure DevOps pipeline.
- task: KubernetesManifest@0  # Task type for working with Kubernetes manifest files.
  inputs:
    # This configures what to do with the Kubernetes manifest files.
    action: 'deploy'  # 'deploy' action ensures the Kubernetes manifests are applied to the cluster.

    # This defines the namespace where the Kubernetes resources will be deployed.
    namespace: 'default'  # 'default' is the namespace for deploying resources. Change if needed.

    # All this does is point to the manifest files that define the desired state of your Kubernetes resources.
    manifests: '$(Build.ArtifactStagingDirectory)/manifests/*.yaml'
    # The 'manifests' variable points to the location of all the YAML files (e.g., Deployment, Service, etc.) that will be applied during the deployment.

    # To access private container registry images, use the image pull secret.
    imagePullSecrets: 'my-registry-secret'
    # This instructs Kubernetes on which secret to use when pulling images from a private container registry.
    # Ensure that 'my-registry-secret' exists in the namespace before the deploy

Dağıtımı tetiklemek için YAML dosyasını commit edin ve push’layın.

AKS, ölçekleme, güncellemeler ve geri almaları yönetmeyi kolaylaştırarak konteyner düzenlemeyi basitleştirir. Deneyimlerime göre, modern bulut yerel uygulamalar için vazgeçilmezdir.

Hatlarınızı Optimize Etme ve İzleme

Kariyerimin başlarında asıl zorluk hat kurmak değildi—hızlı ve güvenilir bir hat oluşturmaktı. İyi optimize edilmiş bir hat sadece derlemeleri hızlandırmakla kalmaz; ekipteki hayal kırıklığını azaltır, dağıtım risklerini düşürür ve teslimatı hızlandırır. 

Azure DevOps Hatlarınızı hızlı, düzenli ve güvenilir tutmak için kullanabileceğiniz bazı ipuçlarını ve stratejileri paylaşacağım.

Hat önbellekleme

Bağımlılıkların kurulumu, hatlarda karşılaşılan bir diğer yaygın darboğazdır. npm, .NET veya diğer paket yöneticileriyle çalışıyor olun, aynı bağımlılıkların tekrar tekrar indirilmesi ciddi zaman kaybına yol açabilir. Çalıştırmalar arasında bağımlılıkları ve artifaktları önbelleğe almak, yürütme süresini ciddi ölçüde düşürür. 

Azure Pipelines’ta bağımlılıkları nasıl önbelleğe alacağınız şöyle.

Öncelikle paket yöneticilerini belirlemelisiniz, örneğin:

  • Node.js (node_modules)
  • NuGet paketleri
  • Python (pip paketleri)
  • Maven/Gradle bağımlılıkları

Azure Pipelines, Cache@2 görevi gibi çalıştırmalar arasında bağımlılıkları önbelleğe almanıza olanak tanıyan mekanizmaları destekler. 

Basit bir Node.js önbelleklemesini örnek alalım:

# This task is used to cache files to speed up your pipeline.
- task: Cache@2  # This is the task name for caching files in Azure Pipelines.
  inputs:
    # Key is used to identify the cache. It combines npm (package manager), operating system (OS), and package-lock.json files.
    key: 'npm | "$(Agent.OS)" | package-lock.json'



    # RestoreKeys is an optional value used when the specific cache key is not found. It helps to find a fallback cache.
    restoreKeys: |
      npm | "$(Agent.OS)"



    # Path defines the location of files or folders to be cached.
    # Here, we are caching the 'node_modules' directory to avoid reinstalling dependencies.
    path: '$(Build.SourcesDirectory)/node_modules'



    # CacheHitVar is a variable that stores whether the cache was successfully used (restored).
    # This can be checked later in the pipeline to decide if tasks need to run.
    cacheHitVar: 'NPM_CACHE_RESTORED'

Daha sonra önbelleğe alınmışsa kurulumu koşullu olarak atlayabilirsiniz. Bu, npm kurulumunu tamamlamadan önce akıllı bir kontroldür. Koşula dayalı verimli bir mantıktır.

Aşağıda basit bir örnek:

# This step runs the command to install Node.js dependencies using npm.

- script: npm install  # Installs packages listed in the package.json file.
  
# The condition checks whether the cache was restored successfully.
# This step will run if the cache is not restored ('NPM_CACHE_RESTORED' is not true).
  condition: ne(variables.NPM_CACHE_RESTORED, 'true')  # Run only if the cache is not restored.

Node.js uygulaması için bu basit önbellekleme örneği, package-lock.json’ı anahtar olarak kullanarak npm önbellek dizinini saklar. Bağımlılıklarınız değişmediğinde bunları geri yükler ve her derlemede dakikalar kazandırır. 

Önbelleklemenin özellikle büyük projelerde derleme süresini dramatik biçimde azalttığına defalarca tanık oldum, ancak önbellek anahtarları özenle seçilirse. Geçmişteki projelerimden birinde bu yaklaşım, bir Node.js uygulamasının derleme süresini %55 düşürdü.

Hat sağlığını izleme

Başarılı bir hat yalnızca yeşil tiklerden ibaret değildir; görünürlük ve hızlı geri bildirim de önemlidir. Bir şey bozulduğunda, ekibinizin anında haberdar olmasını istersiniz. İşte sorunların önüne nasıl geçilir.

Azure DevOps panolarını nasıl kurarsınız

Azure DevOps, hat durumu, son çalıştırmalar, hata oranları ve ortalama süreleri göstermek için yerleşik widget’lar sunar. 

  • Önce projeniz altında Dashboards bölümüne gidin.

Azure DevOps arayüzünde hat durumu, son çalıştırmalar, hata oranları ve ortalama süreler için yerleşik widget’ların bulunduğu Dashboards bölümü.

  • Ardından New Dashboard’a tıklayın veya mevcut birini kullanın.

Dashboards bölümünde yeni bir pano oluşturma veya mevcut birini seçme seçeneğini gösteren Azure DevOps arayüzü.

  • Şu widget’ları ekleyebilirsiniz: Build History, Release Pipeline Overview, Test Results Trend ve daha fazlası.

Build History, Release Pipeline Overview ve Test Results Trend gibi widget’ları ekleme seçeneklerini gösteren Azure DevOps arayüzü.

Bunlar, geçme/kalma eğilimlerini izlemek, sorunlu ortamları görmek ve daha fazlası için gereklidir.

Başarısız hatlar için uyarıları yapılandırma

  • Projenizin sol altından Project Settings’e gidin.

Başarısız hatlar için uyarıları yapılandırmak üzere sol alt köşedeki Project Settings seçeneğini gösteren Azure DevOps arayüzü.

  • Notifications’a tıklayın.

Hat uyarılarını yapılandırmak için Notifications seçeneğini gösteren Azure DevOps arayüzü.

  • Ardından New Subscription’a tıklayın.

Notifications bölümünde yeni bir bildirim aboneliği oluşturma seçeneğini gösteren Azure DevOps arayüzü.

Bir senaryo düşünelim: Category bölümünde Build’i seçin; Template bölümünde “A build fails” şablonunu seçin ve Next’e tıklayın.

Aşağıdakine benzer bir arayüz görürsünüz:

Azure DevOps arayüzünde Bildirim aboneliği oluştururken Category bölümünde 'Build' ve Template bölümünde 'A build fails' seçili görünüm.

  • Son olarak Finish’e tıklayın.
  • Notifications bölümünde, az önce oluşturduğunuz “A build fails” için Build açıklamasını kontrol edebilirsiniz. 

Notifications bölümünde daha önce oluşturulan 'A build fails' bildirimi için Build açıklamasını gösteren Azure DevOps arayüzü.

Bir keresinde, uyarılar kurulmadığı için kritik bir dağıtım hatasını kaçırmıştım. O zamandan beri, her üretim dağıtımı için ekip uyarılarını mutlaka kurup yapılandırıyorum. Böylece bozuk bir derlemeyi veya yayın döngümde bir gecikmeyi asla kaçırmıyorum.

Hat performansını analiz etme

Biliyoruz ki hattınız çalışsa bile yavaş olabilir ve yavaş hatlar verimliliği öldürür. Darboğazları erken tespit etmek, ileride sorun yaşamayı önler.

Hat metrikleri, derlemelerin ve dağıtımların performansına ışık tutar. İşte onlara nasıl ulaşılır. 

Önce Analytics Views’u proje ayarları altında etkinleştirmeniz ve Power BI’a bağlanmanız veya yerleşik grafiklerle keşfetmeniz gerekir.

Hat sağlığını izleme

  • Pipelines bölümünde Analytics’e gidin. 
  • Hat geçiş oranı, test geçiş oranı ve hat süresi gibi metrikleri görüntüleyin.

Hat sağlığını izleyin:

Pipelines’a gidin, ardından Analytics’i seçin.

Hat geçiş oranı, test geçiş oranı ve hat süresi gibi önemli metrikleri görüntüleyin.

Bu özellik, hattınızın performansını takip etmenize ve her şeyin sorunsuz çalıştığından emin olmanıza yardımcı olur.

Analitiklerde hangi kilit metrikleri izleyebileceğimizi ve neden önemli olduklarını biraz daha açalım:

Metrik

Neden Önemli

Derleme Süresi Eğilimleri

Zaman içindeki yavaşlamaları kolayca tespit etmeyi sağlar.

Dala Göre Hata Oranı

Dengesiz özellikleri belirlemeye yardımcı olur.

Kuyrukta Bekleme Süresi

Aracı (agent) yetersizliğini tespit etmeye yardımcı olur.

Birkaç ay önce bir müşterinin hattı üzerinde çalışırken en çok dikkatimi çeken Kuyrukta Bekleme Süresi oldu. Kendi kendine barındırılan bir aracı havuzunu aşırı yüklediğimizi ve hat süremizin %40’ının müsait bir koşucu beklemekle geçtiğini keşfettim. Analitikler bunu açıkça gösterene kadar kimse fark etmemişti.

Bunu, iki tane daha kendi kendine barındırılan aracı ekleyip yükü iş türüne göre dağıtarak çözdük. Sonuçlar anlıktı; hattın ortalama derleme süresi yaklaşık %35 azaldı.

Günlükleri kullanarak izleme

Metriklerin ötesinde, zaman çizelgesi günlükleri özellikle uzun süren görevlerde çok değerlidir. Yıllar içinde, betiklerin kritik adımlarına özel günlük işaretleri ekleyerek gecikmeleri nokta atışı belirleme alışkanlığı edindim.

Basit bir örnek verelim:

# This step prints a message to the console in the pipeline logs.
# It helps to mark the start of the dependency installation process.

echo "=== START: Dependency Install ==="  # Display a message indicating the beginning of dependency installation.

Azure Pipelines için En İyi Uygulamalar

Artık Azure Pipelines’ın çekirdek hizmetlerini ve daha fazlasını ele aldığımıza göre, bu en iyi uygulamaları izleyerek onlardan en iyi şekilde nasıl yararlanacağınıza bakalım. 

Şimdi performanstan yapıya geçelim; çünkü bakımı zor olan hızlı bir hat da ekiplere zarar verir.

Ekipler için hatları düzenleme

Birden fazla ekip veya ortam hatları paylaştığında işler genelde karışır. Yapıya ihtiyacınız olacak. Geliştirme, hazırlık ve üretim ortamları için tek ve dev bir hat kaosa yol açar. 

Hattınızı düzenlemek için onu ortamlara ayırmanız gerekir. Aşağıda basit bir yapıya bakalım. 

Ortam

Hat Adı

Tetikleyici

Geliştirme

dev.yml

Özellik dalları (Her commit’te çalışır)

Hazırlık (Staging)

staging.yml

Çekme istekleri → Staging (Manuel tetik)

Üretim

prod.yml

Manuel veya yayın hatları (Onay gereklidir)

Bu basit yapıdan anlaşılması gereken kilit noktalar:

  • Her dosya paylaşılan şablonlardan yararlanır.
  • Her dosya ortama özgü değişkenler kullanır.
  • Her dosya, hat izinleri aracılığıyla erişimi kontrol eder.

Deneyimlerime göre, bu ayrım hataların ayıklanmasını kolaylaştırır ve junior geliştiricilerin Üretim ortamını riske atmadan Dev ortamına dağıtım yapmasına olanak tanır.

Şablonlar ve yeniden kullanılabilir kod kullanma

DevOps, yazılım geliştirme sürecinde manuel iş akışını azaltmak ve otomasyonu artırmakla ilgilidir. 

YAML kodu, projeler arasında kopyala-yapıştır yapıldığında hataya açıktır. Azure DevOps, YAML hatları aracılığıyla DRY (Don’t Repeat Yourself) kurulum için hat şablonlarına sahiptir. YAML hat şablonlarını birden çok projede yeniden kullanabilir, hatlarınızı tutarlı tasarlayabilir ve hatta hat işleme süresini azaltabilirsiniz.

Basit, yeniden kullanılabilir bir derleme şablonu örneği verelim.

Önce build-template.yml adlı derleme şablonunuzu tanımlayın:

# Here we configure the platform and the build configuration.
parameters:
  buildPlatform: 'Any CPU'  # This specifies the build platform (e.g., Any CPU, x86, x64).
  buildConfiguration: 'Release'  # This specifies the build configuration (Release) to avoid warning.

# A pipeline is composed of steps (a series of tasks that will be executed)
steps:
- task: DotNetCoreCLI@2  # Task for running .NET Core commands in the pipeline.
  inputs:
    command: 'build'  # This runs the 'build' command to compile the project(s).
    projects: '**/*.csproj'  # This specifies to build all .csproj files in the repository.
    arguments: '--configuration ${{ parameters.buildConfiguration }}'
    # This passes the build configuration parameter (e.g., Release or Debug) to the command.

Derleme şablonunuzu ana hattınızda kullanın:

# A pipeline job is a group of tasks. Here, the job is named 'Build'.
jobs:
- job: Build  # The job name where the build process occurs.

  # Steps define the tasks or actions the pipeline will perform.
  steps:
  - template: templates/build-template.yml  # Reference an external YAML template for reusable steps.

Gizlileri ve değişkenleri yönetme

Projelerde, özellikle işbirlikçi ortamlarda çalışırken, veritabanı bağlantı dizeleri, API anahtarları, parolalar veya belirteçler gibi hassas bilgileri kullanmak yaygındır. Bu gizliler kod tabanınıza gömülür veya günlüklerde açığa çıkarsa kolayca tehlikeye girebilir.

Gizlilerimizi ve değişkenlerimizi Azure Pipelines gizlileri ve değişken gruplarıyla güvenli şekilde yönetmenin yollarına bakalım.

Adım 1: Bir değişken grubu oluşturma

  • Sol kenar çubuğundaki Pipelines sekmesine tıklayın.
  • Pipelines bölümünde Library’e tıklayın.

Sol kenar çubuğundaki Pipelines sekmesini ve Pipelines bölümündeki Library seçeneğini gösteren Azure DevOps arayüzü.

  • Bir değişken grubu oluşturun:
    • Variable groups sekmesine tıklayın.

Kolayca yeni bir değişken grubu oluşturun:

Azure DevOps’ta Pipelines’a gidin, ardından Library’yi seçin.

Yeni bir değişken grubu oluşturun.

Bu adım, değişkenlerinizi verimli hat yapılandırmaları için yönetmenize ve düzenlemenize yardımcı olur.

  • Add variable group düğmesine tıklayın.
  • Değişken grubunuz için bir ad girin (ör. MyAppSecrets).

Add variable group düğmesini ve MyAppSecrets gibi değişken grubu adı girme alanını gösteren Azure DevOps arayüzü.

Adım 2: Değişken grubuna gizliler ekleme

  • Değişkenler ekleyin: 
    • Değişken grubunda yeni bir değişken oluşturmak için Add’e tıklayın. 

Değişken grubunda Add’e tıklayarak değişken ekleme seçeneğini gösteren Azure DevOps arayüzü.

  • Değişkenin adını girin (ör. DB_CONNECTION_STRING).
  • “ Keep this value secret ” kutusunu işaretleyerek gizli olarak işlenmesini sağlayın. 
  • Değişkenin değerini girin (ör. veritabanı bağlantı dizem).

Değişken adı (ör. DB_CONNECTION_STRING) girme, gizli olarak işaretleme ve değer atama alanlarını gösteren Azure DevOps arayüzü.

  • Değişkeni kaydetmek için Save’e tıklayın.

Yeni eklenen değişkeni değişken grubuna kaydetmek için kullanılan Save düğmesini gösteren Azure DevOps arayüzü.

Adım 3: Gizlileri hattınızda kullanma

Artık gizliler içeren bir değişken grubu oluşturduğunuza göre, bu değişkenleri YAML hat dosyanızda kullanabilirsiniz.

  • Değişken grubuna referans verin: Değişken grubunu YAML hat dosyanıza ekleyin: 
variables:
- group: MyAppSecrets
  • Gizlileri adımlarınızda kullanın: Hattınızdaki adımlarda $(VariableName) sözdizimini kullanarak gizlilere referans verebilirsiniz. İşte DB_CONNECTION_STRING’in bir betik adımında nasıl kullanılacağına bir örnek:
# This defines the trigger for the pipeline.
# The pipeline runs automatically whenever changes are pushed to the 'main' branch.
trigger:
- main  # Trigger the pipeline on changes to the 'main' branch.

# The pool specifies the environment where the pipeline will run.
# 'ubuntu-latest' means the pipeline will use the latest Ubuntu operating system image.
pool:
  vmImage: 'ubuntu-latest'  # Use the latest Ubuntu image provided by Azure Pipelines.

# Variables section defines reusable values for the pipeline.
# 'group: MyAppSecrets' links to a variable group that stores sensitive information like secrets.
variables:
- group: MyAppSecrets  # Load secrets, such as database credentials, from a variable group.

# Steps define the tasks that the pipeline will execute one by one.
steps:
- script: |
    echo "Connecting to the database..." # Print a message indicating the start of database connection.
    echo "Connection String: $(DB_CONNECTION_STRING)" # Display the database connection string from the variable group.
  displayName: 'Connect to Database'  # A simple name for this step that appears in the pipeline logs.

Adım 4: Hattı çalıştırma

  • YAML dosyanızı kaydettikten sonra Pipelines bölümüne gidip Run Pipeline’a tıklayın.
  • Hattınız çalıştıktan sonra günlüklerinizi kontrol edebilirsiniz. Gizli değerin gizli tutulduğunu, hassas bilgilerinizin güvende kaldığını göreceksiniz.

Sonuç

Bu eğitimde, Azure Pipelines kullanmanın tam yolculuğunu—ilk hattınızı kurmaktan derleme, test, dağıtım, izleme ve optimizasyona kadar—ele aldık.

Dağıtım aşaması pratik ister. Basit başlayın, sürekli iyileştirin ve zamanla CI/CD iş akışlarını yönetmede özgüven ve akıcılık kazanacaksınız. Azure Pipelines araçları sunar; siz yineleme ve öğrenmeyi getirirsiniz.

Tutarlı çabayla geliştirme sürecinizi yalınlaştırabilir ve büyük ölçekte yüksek kaliteli yazılım teslim etmede güven kazanabilirsiniz.

Azure DevOps ve Microsoft Azure’a daha derin dalmak için aşağıdaki kaynaklara göz atın: 

SSS

Azure Pipelines’ı Azure dışı projeler için kullanabilir miyim?

Evet. Azure Pipelines, şirket içi (on-premise) ve AWS, GCP gibi çeşitli bulut ortamlarına dağıtımları destekler.

Azure Pipelines hangi programlama dillerini destekler?

Azure Pipelines, Node.js, Python, Java, .NET ve daha birçok programlama dilini destekler.

Azure Pipelines ile GitHub Actions arasındaki fark nedir?

Azure Pipelines, Azure ekosistemiyle daha derin entegrasyon ve güçlü dağıtım araçları sunarken GitHub Actions, daha basit ve GitHub’a özgü bir CI/CD deneyimi sağlar. Her ikisi de YAML iş akışlarını ve konteynerli dağıtımları destekler.

Azure Pipelines’ı Python veya Java gibi Microsoft dışı teknolojilerle kullanabilir miyim?

Evet, Azure Pipelines Python, Java, Node.js ve daha fazlası dahil tüm ana platform ve dilleri destekler. YAML kullanarak herhangi bir teknoloji yığını için derleme ve dağıtım yapılandırabilirsiniz.

Azure Pipelines’ı ücretsiz kullanabilir miyim?

Azure Pipelines, genel projeler için ayda 1.800 dakika ve özel projeler için sınırlı ücretsiz derleme süresi sunan bir ücretsiz katmana sahiptir. Ek kullanım için ücretli plan veya kendi barındırdığınız aracıları gerekir.

Azure DevOps Service Connections nedir ve neden önemlidir?

Service Connections, Azure Pipelines’ı Azure Web Apps veya Kubernetes kümeleri gibi harici hizmetlere güvenle bağlar. Otomatik dağıtımlar ve altyapı yönetimi için kritik önemdedirler.

Azure Pipelines, Jenkins veya CircleCI ile nasıl karşılaştırılır?

Azure Pipelines, Azure kullanıcıları için daha entegre bir deneyim ve Microsoft hizmetleri için daha iyi destek sağlar. Jenkins daha özelleştirilebilir ancak daha fazla kurulum gerektirir; CircleCI ise hız ve paralellikte öne çıkar.


Emmanuel Akor's photo
Author
Emmanuel Akor
LinkedIn
Twitter

Emmanuel Akor, etkili projeleri hayata geçirmek için bulut teknolojilerini ve DevOps araçlarını ustalıkla kullanan bir Bulut ve DevOps Mühendisidir. Babcock University Bilgisayar Bilimleri bölümünden birincilikle mezun olmuş ve GDSC için eski Bulut Eş Lideri olarak, akademik başarıyı pratik deneyimle birleştirir. Teknik İçerik Yazarı olarak, bilgiyi paylaşma ve ekiplerle iş birliği yapma konusunda uzmandır.

Konular
Azure
Cloud

Azure hakkında daha fazlasını bu kurslarla öğrenin!

Kurs

Microsoft Azure'ı Anlamak

3 sa
50.7K
Veri mühendisliği becerilerinizi geliştirmenize yardımcı olacak Microsoft Azure ve bulut bilişim yazılımlarının gücünü keşfedin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör