Lewati ke konten utama

Tutorial Azure Pipelines: Panduan Lengkap CI/CD untuk Pemula

Tutorial ini memandu Anda menyiapkan, menjalankan, dan mengoptimalkan alur kerja CI/CD menggunakan Azure Pipelines.
Diperbarui 28 Sep 2026  · 15 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Jika pipeline CI/CD Anda sering rusak atau terasa lambat dan kikuk, Anda tidak sendirian. Saya pernah berurusan dengan build gagal, lingkungan yang tidak selaras, dan rekan tim yang tanpa sengaja menimpa pekerjaan saya. Azure Pipelines menghilangkan frustrasi ini dengan layanan cloud-hosted yang dapat membangun, menguji, dan menerapkan hampir proyek apa pun di platform apa pun.

Itu sebabnya dalam tutorial ini, saya akan menunjukkan cara untuk:

  1. Membuat Azure Pipeline pertama Anda
  2. Membangun proyek Anda di cloud
  3. Menambahkan pengujian otomatis untuk menangkap kesalahan sejak dini
  4. Menerapkan ke staging atau produksi dengan sekali push
  5. Memantau dan mengoptimalkan pipeline untuk kecepatan dan keandalan
  6. Mengikuti praktik terbaik yang terbukti di proyek dunia nyata

Mari kita mulai!

Apa itu Azure Pipelines?

Azure Pipelines adalah solusi berbasis cloud yang menyederhanakan pengembangan, pengujian, dan penerapan aplikasi. 

Ini merupakan komponen dari toolkit Azure DevOps, yang mendukung seluruh siklus hidup pengembangan perangkat lunak. Ini juga merupakan opsi yang fleksibel untuk tim dari berbagai ukuran karena mendukung berbagai platform dan bahasa pemrograman. GitHub, Azure Repos, dan sistem kontrol versi terkenal lainnya terintegrasi dengannya. 

Fitur inti Azure Pipelines mencakup: 

Layanan

Tujuan

Dukungan multi-platform

Azure Pipelines mengotomatiskan proses build dan deployment aplikasi untuk berbagai sistem operasi, seperti Linux, macOS, dan Windows.

Integrasi dengan kontrol versi

Azure Pipelines terhubung ke repositori kode Anda seperti Azure Repos, GitHub, dan sistem kontrol versi terkenal lainnya.

Konfigurasi pipeline berbasis YAML

Azure Pipelines memungkinkan kita mendefinisikan proses build dan deployment sebagai kode, sehingga dapat dikendalikan versinya.

Continuous Integration dan Continuous Deployment (CI/CD)

Azure Pipelines memfasilitasi proses end-to-end untuk mengintegrasikan perubahan kode dan menerapkan aplikasi.

Berdasarkan pengalaman saya, Azure Pipelines bermanfaat bagi siapa pun yang ingin memiliki CI/CD yang tepat di dalam tim mereka. Solusi ini fleksibel, dapat diskalakan, dan terintegrasi dengan baik dengan layanan Azure lainnya.

Arsitektur Azure Pipelines adalah pengaturan yang mengotomatiskan proses build, uji, dan deployment kode. Proses dimulai saat pengembang melakukan push perubahan kode ke repositori. Sistem kemudian menjalankan serangkaian tugas otomatis, seperti code linting, build, dan uji. Setelah tugas-tugas ini selesai, kode diterapkan ke berbagai lingkungan seperti staging dan produksi. Arsitektur ini memastikan perubahan kode dikirimkan secara konsisten dan andal, membantu tim mempertahankan perangkat lunak berkualitas tinggi.

Arsitektur Azure Pipelines (Sumber: Microsoft).

Jika Anda mencari pemahaman yang lebih luas tentang Azure DevOps di luar pipelines, tutorial Azure DevOps ini memabarkan seluruh siklus hidup CI/CD dari awal hingga akhir.

Menyiapkan Azure Pipeline Pertama Anda

Untuk bekerja dengan lingkungan Azure Pipelines, kita harus menyiapkan semuanya terlebih dahulu untuk mendukung proses build, uji, dan deployment end-to-end.

Prasyarat

Sebelum mulai membuat pipeline pertama Anda, pastikan Anda memiliki hal-hal berikut:

  1. Akun Azure DevOps dan penyiapan organisasi: Daftar untuk akun Azure DevOps jika Anda belum memilikinya. Buat organisasi untuk mengelola proyek Anda. 
  2. Repositori: Anda memerlukan repositori kode dengan proyek contoh. Ini dapat di-host di Azure Repos atau GitHub. Untuk tutorial ini, kita akan menggunakan proyek Node.js sederhana.
  3. Akses portal Azure: Anda juga memerlukan akses ke Azure portal saat Anda ingin menerapkan ke layanan Azure seperti Azure Kubernetes Service (AKS) dan banyak lagi.

Jika Anda perlu menyegarkan pemahaman tentang ekosistem Azure yang lebih luas, saya sarankan memeriksa kursus Understanding Microsoft Azure. 

Membuat proyek dan repositori baru

Sekarang akun dan organisasi Azure DevOps Anda sudah siap, mari buat proyek dan repositori pertama kita.

  • Buat proyek baru:
    • Masuk ke akun Azure DevOps Anda.
    • Klik New Project, beri nama (misalnya, "AzureDevOps-DataCamp-Tutorial"), dan pilih visibilitas (publik atau privat).
    • Klik Create Project.

Menyiapkan proyek baru di Azure DevOps itu mudah:

Masukkan detail proyek, termasuk nama proyek, deskripsi singkat, dan atur visibilitas (publik atau privat).

Terakhir, klik "Create the Project" untuk memulai.

  • Menyiapkan repositori:
    • Jika menggunakan Azure Repos, buka bagian Repos dan inisialisasi repositori baru.
    • Atau, Anda dapat menautkan repositori GitHub yang sudah ada dengan memilih Import Repository.
    • Beri nama repositori Anda, pilih Repository type (Git atau TFVC), tempel URL repositori yang diklon, lalu klik Import.

Memilih sistem kontrol versi itu penting di Azure Pipelines saat mengelola kode Anda. Berikut dua opsi:

Git: Sistem kontrol versi terdistribusi yang modern dan banyak digunakan komunitas pengembang. Pilihan terbaik untuk sebagian besar proyek.

TFVC (Team Foundation Version Control): Sistem kontrol versi terpusat, lebih jarang dan sering digunakan pada proyek warisan.

Tata letak intuitif ini membantu Anda memutuskan sistem mana yang paling sesuai dengan kebutuhan proyek Anda.

  • Jika Anda menggunakan GitHub, Anda dapat menautkan akun GitHub Anda ke Azure DevOps dengan pergi ke kiri bawah antarmuka proyek dan memilih Project Settings > GitHub Connections > Connect your GitHub account.

Ilustrasi yang menunjukkan cara menautkan akun GitHub ke Azure DevOps dengan menavigasi ke Project Settings di pojok kiri bawah antarmuka.

Setelah itu, pilih GitHub Connections.

Terakhir, klik Connect your GitHub account.

Untuk tutorial ini, kita akan menggunakan Azure Repos sebagai repositori kode. Jika Anda baru memulai atau tidak memiliki alasan khusus untuk memilih TFVC, saya sarankan memilih Git.

Membuat pipeline pertama Anda

Sekarang saatnya membuat pipeline pertama kita. Ikuti langkah-langkah di bawah ini:

  • Di bagian Pipelines, klik Create Pipeline.

Buka bagian Pipelines dalam proyek Azure DevOps Anda:

Buka proyek Azure DevOps Anda.

Di menu sebelah kiri, klik Pipelines.

Bagian ini memungkinkan Anda mengelola pipeline build dan rilis secara efisien.

Klik Create Pipeline untuk mulai menyiapkan pipeline baru.

Langkah sederhana ini membantu Anda memulai proses otomatisasi alur kerja di Azure DevOps.

  • Pilih Azure Repos Git sebagai sumber dan pilih repositori Anda.

Pilih sumber untuk pipeline Anda:

Pilih Azure Repos Git sebagai sumber.

Lalu, pilih repositori yang ingin Anda gunakan.

Proses sederhana ini memastikan Anda menghubungkan repositori kode yang benar ke pipeline untuk pengelolaan yang efisien.

  • Anda dapat mengonfigurasi pipeline menggunakan editor YAML atau Classic. Mari pilih YAML, cara berbasis kode untuk mendefinisikan pipeline.
  • Simpan pipeline dan jalankan untuk melihat apakah semuanya berfungsi dengan benar.

Memilih YAML vs Classic Editor

Azure Pipelines menyediakan dua cara untuk mendefinisikan pipeline Anda:

  • YAML pipelines: Cara berbasis kode untuk menggambarkan pipeline Anda. Pipeline didefinisikan dalam file .yaml atau .yml di repositori sumber Anda, memungkinkan versioning dan kolaborasi yang lebih baik.
  • Classic Editor: Classic Editor adalah antarmuka visual drag-and-drop yang ramah pengguna, namun kurang fleksibel untuk skenario kompleks.

Aspek

YAML Pipelines

Classic Editor

Kontrol versi

YAML Pipelines mendukung kontrol versi dan disimpan di repositori kode sumber.

Classic Editor tidak mendukung kontrol versi. Ini berbasis Graphical User Interface (GUI).

Fleksibilitas

YAML Pipelines memiliki fleksibilitas tingkat tinggi.

Classic Editor memiliki fleksibilitas terbatas.

Terbaik untuk

YAML Pipelines paling cocok untuk workflow jangka panjang, kompleks, dan otomasi.

Classic Editor paling cocok untuk penyiapan cepat.

Menurut pengalaman saya, pipeline YAML memberikan fleksibilitas lebih dan lebih baik untuk tim yang mengikuti praktik Infrastructure as Code (IaC). Namun Classic Editor cocok untuk pemula yang menyukai cara visual. 

Namun, untuk skalabilitas jangka panjang, pipeline YAML lebih direkomendasikan daripada Classic Editor.

Membangun dengan Azure Pipelines

Sekarang, mari lihat bagaimana kita dapat melakukan build dengan Azure Pipelines. 

Di bagian ini, kita akan menentukan langkah-langkah yang diambil Azure Pipelines untuk membangun kode Anda, seperti memasang dependensi, mengompilasi, dan menjalankan uji. Kita akan mengekspresikan langkah-langkah ini dalam file konfigurasi di repo kode sumber kita menggunakan YAML, cara sederhana dan mudah dibaca untuk menggambarkan langkah-langkah seperti sebuah resep.

Sintaks pipeline YAML

Berikut contoh sederhana pipeline YAML:

# 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.

Mari kita uraikan kodenya langkah demi langkah:

  • trigger: Menentukan branch yang memicu pipeline (misalnya, main).
  • pool: Mendefinisikan build agent (misalnya, ubuntu-latest).
  • steps: Mencantumkan tugas yang dijalankan, seperti memasang dependensi dan menjalankan skrip build.

Mengonfigurasi langkah build

Untuk menambahkan langkah build ke pipeline YAML Anda, Anda harus mendefinisikan 'script' di bawah bagian 'steps'.

Untuk aplikasi Node.js sederhana, misalnya, file azure-pipelines.yml di bawah ini berisi kode yang secara otomatis dibuat oleh Azure DevOps.

# 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'

Mari kita lihat steps build pada pipeline YAML di atas: 

  1. Memasang Node.js: Gunakan tugas NodeTool@0 untuk menentukan versi Node.js. 
  2. Memasang dependensi: Jalankan npm install untuk memasang dependensi proyek. 
  3. Mengompilasi kode (membangun proyek): Jalankan npm run build untuk mengompilasi kode. 

Menjalankan pipeline

Pipeline kita dapat dipicu secara manual atau diatur untuk berjalan otomatis saat terjadi peristiwa seperti push ke branch.

  • Pemicu manual: Klik Run Pipeline di antarmuka Azure DevOps untuk memicu pipeline secara manual.

Tombol Run Pipeline pada antarmuka Azure DevOps digunakan untuk memulai eksekusi pipeline secara manual.

  • Pemicu otomatis: Atur trigger berbasis peristiwa repositori agar push perubahan ke branch main memicu pipeline secara otomatis. Berikut contohnya:
trigger:
- main

Setelah menjalankan pipeline, Anda dapat melihat log dan memecahkan masalah apa pun.

Untuk mengakses log, buka ringkasan run pipeline Anda dan pilih job atau task tertentu. Ini akan menampilkan log untuk langkah tersebut; seperti pada gambar di bawah, Anda dapat memilih job apa saja (Build, Push, atau Update) untuk melihat log mentah.

Ringkasan run pipeline yang menampilkan opsi job (Build, Push, Update) untuk mengakses log mentah tiap langkah.

Ringkasan run pipeline yang menampilkan opsi job (Build, Push, Update) untuk mengakses log mentah tiap langkah.

Untuk menelusuri masalah umum, Anda dapat memeriksa pipeline terhadap masalah seperti timeout, keterbatasan sumber daya, atau salah konfigurasi.

Menambahkan Uji ke Pipeline Anda

Anda menambahkan pengujian ke pipeline untuk memastikan kualitas kode dan menangkap masalah sejak awal pengembangan. Di Azure Pipelines, Anda dapat mengintegrasikan unit, integrasi, atau uji lainnya dengan menambahkan langkah dalam konfigurasi pipeline Anda.

Mengonfigurasi langkah uji

Sertakan langkah pengujian dalam pipeline untuk menjamin kualitas kode. Anda dapat menggunakan framework populer seperti Jest, Mocha, atau NUnit. Misalnya, berikut cara menambahkan unit test dengan Jest:

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

Melihat hasil uji

Azure Pipelines memiliki pelaporan uji bawaan. Anda dapat menyiapkan publikasi hasil uji untuk pelacakan yang lebih mudah dan melihat hasil uji di log pipeline. Berikut caranya:

  • Pertama, buka Builds > Test Results.
  • Untuk memublikasikan hasil uji, gunakan tugas PublishTestResults@2 untuk menampilkan hasil. Ini memudahkan pelacakan secara keseluruhan. Contoh:
- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/test-results.xml'
    testRunTitle: 'Unit Tests'

Menerapkan dengan Azure Pipelines

Dalam langkah deployment di file YAML pipeline Azure Anda, Anda dapat secara otomatis menerapkan aplikasi ke beberapa lingkungan, seperti testing, staging, dan produksi. Di bagian ini, kita akan meninjau beberapa cara untuk melakukan deployment dengan Azure Pipelines.

Menerapkan ke Azure Web Apps

Azure Web Apps adalah layanan di Azure Portal yang memungkinkan Anda mengembangkan, menerapkan, dan mengelola aplikasi web dalam skala besar. 

Untuk menerapkan ke Azure Web Apps, Anda harus menautkan kedua layanan tersebut. Begini caranya:

  • Di kiri bawah proyek Anda, buka Project Settings dan klik Service Connections di bawah bagian Pipelines . 

Antarmuka Azure DevOps yang menampilkan opsi Project Settings di pojok kiri bawah untuk menautkan layanan Azure.

Buka bagian Pipelines:

Klik Service Connections di bawah bagian Pipelines.

Langkah ini membantu Anda menautkan ke layanan Azure, meningkatkan kapabilitas dan integrasi proyek Anda.

  • Klik New Service Connection dan pilih Azure Resource Manager. 

Menyiapkan service connection baru:

Klik New Service Connection.

Proses sederhana ini membantu Anda terhubung ke sumber daya Azure, meningkatkan kapabilitas proyek Anda.

Menyiapkan service connection baru:

Pilih Azure Resource Manager.

Proses sederhana ini membantu Anda terhubung ke sumber daya Azure, meningkatkan kapabilitas proyek Anda.

  • Lakukan autentikasi dengan akun Azure Anda.
  • Deploy ke Azure App Service:
    • Kembali ke Pipelines dan konfigurasikan pipeline Anda.
    • Di pipeline Anda, tambahkan task untuk deploy ke Azure.
    • Tentukan resource group dan detail layanan. 

Berikut contoh pipeline YAML untuk deployment aplikasi Node.js sederhana ke Azure App Service:

# 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)'

Mari kita uraikan kode di atas, agar Anda dapat mengadaptasikannya untuk kebutuhan Anda:

  • Ganti your-azure-subscription dengan nama service connection yang memberi akses ke langganan Azure Anda.
  • Ganti your-app-name dengan nama aplikasi web Anda yang sebenarnya di Azure. 
  • Ganti $(Build.ArtifactStagingDirectory) dengan direktori tempat paket atau file aplikasi web untuk deployment. $(Build.ArtifactStagingDirectory) — Variabel ini menunjuk ke folder tempat artifact build (file aplikasi Anda) berada setelah dibangun.

Menyiapkan continuous deployment (CD)

Setelah semuanya di kode kita lolos semua uji dan pemeriksaan, langkah berikutnya adalah menyiapkan continuous deployment. Ikuti langkah-langkah di bawah ini.

Model Azure Release Pipeline yang menunjukkan sumber artefak mengalir ke release pipeline untuk deployment.

Model deployment release pipeline Azure (Sumber: Microsoft)

  • Buat release pipeline:
    • Buka Pipelines > Releases dan klik New Pipeline.

Antarmuka Azure DevOps yang menunjukkan jalur untuk membuat release pipeline dengan menavigasi ke Pipelines > Releases dan memilih New Pipeline.

Membuat release pipeline di Azure DevOps itu mudah:

Arahkan ke bagian Pipelines dari menu sebelah kiri.

Klik Releases.

Lalu, pilih New Pipeline untuk mulai menyiapkan proses rilis Anda.

Antarmuka yang ramah pengguna ini membantu Anda mengelola dan mengotomatiskan workflow rilis secara efisien.

  • Pilih template Azure App Service Deployment.

Antarmuka Azure DevOps yang menampilkan opsi untuk memilih template Azure App Service Deployment untuk penyiapan release pipeline.

  • Konfigurasikan environment:
    • Tambahkan dan konfigurasi Dev, Staging, QA, dan Production sebagai environment tempat aplikasi Anda akan diterapkan.

Antarmuka Azure DevOps yang menampilkan environment terkonfigurasi seperti Dev, Staging, QA, dan Production untuk deployment aplikasi.

  • Tautkan artefak dari build pipeline Anda sebagai sumber untuk release pipeline dengan memilih Add an artifact.

Antarmuka Azure DevOps yang menampilkan opsi untuk menambahkan artefak dari build pipeline sebagai sumber penyiapan release pipeline.

  • Konfigurasikan persetujuan dan gerbang (gates):
    • Menyiapkan persetujuan pra-deployment untuk environment sensitif, seperti produksi, itu perlu. Misalnya, seorang lead tim mungkin diwajibkan menyetujui rilis. Anda juga dapat menambahkan gates seperti uji otomatis atau pemeriksaan monitoring untuk memastikan deployment memenuhi standar kualitas.

Berdasarkan pengalaman, fase ini diperlukan untuk menjaga stabilitas di lingkungan pengembangan yang menuntut. Persetujuan dan gates memberikan kontrol dan memastikan hanya kode berkualitas yang mencapai produksi.

Menerapkan ke Kubernetes

Kubernetes memudahkan menjalankan aplikasi terkontainer yang andal dan dapat diskalakan. Saat menggunakan Azure Kubernetes Service (AKS), Anda mendapatkan lingkungan terkelola yang menyederhanakan deployment dan operasi. Di bagian ini, saya akan memandu cara menerapkan aplikasi Anda ke AKS menggunakan Azure Pipelines.

Menyiapkan Klaster AKS

Anda dapat membuat klaster AKS menggunakan Azure portal atau CLI. Berikut perintah Bash CLI dasar untuk menyediakan klaster:

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

Mari kita uraikan perintah di atas:

  • --resource-group: Menunjukkan resource group Azure tempat klaster AKS akan dibuat.
  • --name: Mengacu pada nama klaster AKS Anda.
  • --node-count: Menetapkan jumlah node dalam klaster (misalnya, 3 pada contoh ini).
  • --enable-addons monitoring: Memungkinkan monitoring dan analitik dengan Azure Monitor for Containers.
  • --generate-ssh-keys: Secara otomatis membuat kunci SSH untuk akses node yang aman jika tidak disediakan.

Jangan lupa mengganti <ResourceGroupName> dan <AKSClusterName> dengan nama resource group dan klaster Anda yang sebenarnya.

Kubectl perlu dikonfigurasi setelah klaster AKS Anda disiapkan. Ini memastikan agen pipeline atau komputer lokal Anda dapat menggunakan kubectl untuk berkomunikasi dengan klaster.

Anda dapat mempercepat tugas Azure menggunakan alat baris perintah—Azure CLI cheat sheet ini adalah referensi praktis.

Membuat file YAML deployment 

Mari ambil contoh file YAML deployment dasar untuk menerapkan image Docker ke Kubernetes:

# 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.

Menerapkan menggunakan Azure Pipelines

Di pipeline YAML Anda, sertakan task untuk menerapkan ke AKS.

# 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

Commit dan push file YAML untuk memicu deployment.

AKS menyederhanakan orkestrasi kontainer, sehingga lebih mudah mengelola penskalaan, pembaruan, dan rollback. Menurut pengalaman saya, ini wajib dimiliki untuk aplikasi cloud-native modern.

Mengoptimalkan dan Memantau Pipeline Anda

Di awal karier saya, membangun pipeline bukanlah tantangan terbesar—memiliki pipeline yang cepat dan andal lah tantangannya. Pipeline yang dioptimalkan dengan baik bukan hanya membuat build lebih cepat; ini juga mengurangi frustrasi tim, menurunkan risiko deployment, dan mempercepat pengiriman. 

Saya akan membagikan beberapa kiat dan strategi yang dapat Anda gunakan untuk menjaga Azure DevOps Pipelines Anda tetap cepat, teratur, dan andal.

Pipeline caching

Instalasi dependensi adalah bottleneck pipeline yang umum. Baik Anda bekerja dengan npm, .NET, atau manajer paket lainnya, mengunduh dependensi yang sama berulang kali dapat membuang banyak waktu. Caching dependensi dan artefak antar-run secara drastis memotong waktu eksekusi. 

Berikut cara melakukan cache dependensi di Azure Pipelines.

Pertama, Anda harus mengidentifikasi manajer paket, seperti:

  • Node.js (node_modules)
  • Paket NuGet
  • Python (paket pip)
  • Dependensi Maven/Gradle

Azure Pipelines mendukung mekanisme caching, seperti tugas Cache@2, yang memungkinkan Anda melakukan cache dependensi antar-run pipeline. 

Mari ambil contoh caching sederhana untuk Node.js:

# 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'

Anda kemudian dapat secara kondisional melewati instalasi jika sudah dicache. Ini adalah pemeriksaan cerdas sebelum menyelesaikan instalasi npm. Ini logika berbasis kondisi yang efisien.

Mari ambil contoh sederhana berikut:

# 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.

Contoh caching sederhana untuk aplikasi Node.js ini menyimpan direktori cache npm menggunakan package-lock.json sebagai kunci. Saat dependensi Anda tidak berubah, cache akan dipulihkan, menghemat menit pada setiap build. 

Saya pernah menyaksikan caching memangkas waktu build secara drastis, terutama di proyek besar, tetapi hanya jika kunci cache dipilih dengan cermat. Dalam salah satu proyek saya sebelumnya, ini memangkas waktu build aplikasi Node.js sebesar 55%.

Memantau kesehatan pipeline

Pipeline yang sukses bukan hanya tentang tanda centang hijau, visibilitas, dan umpan balik cepat. Saat sesuatu rusak, Anda ingin tim Anda segera mengetahuinya. Berikut cara tetap selangkah di depan masalah.

Cara menyiapkan dashboard Azure DevOps

Azure DevOps menyediakan widget bawaan untuk menampilkan status pipeline, run terbaru, tingkat kegagalan, dan durasi rata-rata. 

  • Pertama, arahkan ke Dashboards di dalam proyek Anda.

Antarmuka Azure DevOps yang menampilkan bagian Dashboards dengan widget bawaan untuk status pipeline, run terbaru, tingkat kegagalan, dan durasi rata-rata.

  • Lalu klik New Dashboard atau gunakan yang sudah ada.

Antarmuka Azure DevOps yang menampilkan opsi untuk membuat dashboard baru atau memilih yang sudah ada di bagian Dashboards.

  • Anda dapat menambahkan widget seperti: Build History, Release Pipeline Overview, Test Results Trend, dan lainnya.

Antarmuka Azure DevOps yang menampilkan opsi untuk menambahkan widget seperti Build History, Release Pipeline Overview, dan Test Results Trend.

Ini penting untuk melacak tren lolos/gagal, melihat environment mana yang bermasalah, dan lainnya.

Mengonfigurasi peringatan untuk pipeline yang gagal

  • Di kiri bawah proyek Anda, buka Project Settings.

Antarmuka Azure DevOps yang menampilkan opsi Project Settings di pojok kiri bawah untuk mengonfigurasi peringatan pipeline yang gagal.

  • Klik Notifications.

Antarmuka Azure DevOps yang menampilkan opsi Notifications untuk mengonfigurasi peringatan pipeline.

  • Lalu klik New Subscription.

Antarmuka Azure DevOps yang menampilkan opsi untuk membuat langganan baru untuk notifikasi di bagian Notifications.

Mari ambil skenario: Di bagian Category, pilih Build; di bagian Template, pilih  “A build fails”, dan klik Next.

Anda akan melihat antarmuka seperti di bawah ini:

Antarmuka Azure DevOps yang menampilkan bagian Category dengan 'Build' dipilih, dan bagian Template dengan 'A build fails' dipilih untuk membuat langganan notifikasi.

  • Terakhir, klik Finish.
  • Di bagian Notifications, Anda dapat memeriksa deskripsi Build untuk “A build fails” yang kita buat sebelumnya. 

Antarmuka Azure DevOps yang menampilkan bagian Notifications dengan deskripsi Build untuk notifikasi 'A build fails' yang dibuat sebelumnya.

Saya pernah melewatkan kegagalan deployment kritis karena peringatan tidak disetel. Sejak itu, saya selalu menyiapkan dan mengonfigurasi peringatan tim untuk setiap deployment produksi. Dengan begitu, saya tidak pernah melewatkan build yang rusak atau keterlambatan dalam siklus rilis.

Menganalisis kinerja pipeline

Kita tahu bahwa meski pipeline Anda berfungsi, bisa jadi lambat, dan pipeline yang lambat membunuh produktivitas. Jadi mengidentifikasi bottleneck sejak dini menyelamatkan masalah di kemudian hari.

Metrik pipeline memberi wawasan tentang kinerja build dan deployment. Begini cara mengaksesnya. 

Pertama, Anda harus mengaktifkan Analytics Views di bawah project settings dan terhubung ke Power BI atau jelajahi melalui grafik bawaan.

Memantau kesehatan pipeline

  • Di bawah bagian Pipelines, buka Analytics. 
  • Lihat metrik seperti tingkat kelulusan pipeline, tingkat kelulusan uji, dan durasi pipeline.

Pantau kesehatan pipeline:

Buka Pipelines, lalu pilih Analytics.

Lihat metrik penting seperti tingkat kelulusan pipeline, tingkat kelulusan uji, dan durasi pipeline.

Fitur ini membantu Anda melacak kinerja pipeline dan memastikan semuanya berjalan lancar.

Mari kita jelajahi lebih lanjut metrik kunci yang dapat kita pantau di analytics dan mengapa itu penting:

Metrik

Mengapa Penting

Tren Durasi Build

Membantu dengan mudah melihat perlambatan dari waktu ke waktu.

Tingkat Kegagalan per Branch

Membantu mengidentifikasi fitur yang tidak stabil.

Waktu dalam Antrean

Membantu mendeteksi kekurangan agen.

Beberapa bulan lalu, saya mengerjakan pipeline klien, dan yang paling menonjol adalah Waktu dalam Antrean. Saya pernah menemukan bahwa tim saya dan saya membebani pool agen self-hosted, dan 40% waktu pipeline dihabiskan untuk menunggu runner yang tersedia. Tidak ada yang menyadarinya sampai analytics membuatnya jelas.

Kami dapat memperbaikinya dengan menambahkan dua agen self-hosted lagi dan mendistribusikan beban berdasarkan jenis job. Hasilnya langsung terlihat; waktu build rata-rata untuk pipeline turun sekitar 35%.

Memantau menggunakan log

Jadi, di luar metrik, timeline log sangat berharga, terutama untuk tugas yang berjalan lama. Selama bertahun-tahun, saya terbiasa menambahkan penanda log kustom di dalam langkah penting skrip untuk menentukan penundaan secara tepat.

Mari ambil contoh sederhana berikut:

# 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.

Praktik Terbaik untuk Azure Pipelines

Sekarang kita telah membahas layanan inti Azure Pipelines dan banyak lagi, mari lihat cara memaksimalkannya dengan mengikuti praktik terbaik berikut. 

Mari beralih dari kinerja ke struktur, karena pipeline yang cepat tetapi sulit dirawat tetap akan merugikan tim mana pun.

Mengorganisasi pipeline untuk tim

Ketika banyak tim atau environment berbagi pipeline, semuanya sering menjadi berantakan. Anda memerlukan struktur. Satu pipeline raksasa untuk environment pengembangan, staging, dan produksi akan menyebabkan kekacauan. 

Untuk mengorganisasi pipeline Anda, Anda harus memisahkannya ke dalam environment. Mari lihat struktur sederhana di bawah ini. 

Environment

Nama Pipeline

Pemicu

Development

dev.yml

Feature branches (Berjalan pada setiap commit)

Staging

staging.yml

Pull request → Staging (Pemicu manual)

Production

prod.yml

Manual atau release pipelines (Perlu persetujuan)

Hal-hal kunci yang perlu dipahami dari struktur sederhana ini:

  • Setiap file mengambil dari template bersama.
  • Setiap file menggunakan variabel spesifik environment.
  • Setiap file mengendalikan akses melalui izin pipeline.

Dari pengalaman, pemisahan ini memudahkan debug dan memungkinkan pengembang junior melakukan deployment ke environment Dev tanpa berisiko pada environment Production.

Menggunakan template dan kode yang dapat digunakan ulang

DevOps bertujuan memangkas workflow manual dan meningkatkan otomasi di seluruh proses pengembangan perangkat lunak. 

Kode YAML rentan terhadap kesalahan saat disalin-tempel di antara proyek. Azure DevOps memiliki template pipeline untuk pengaturan DRY (Don’t Repeat Yourself) melalui pipeline YAML. Anda dapat menggunakan ulang template pipeline YAML di banyak proyek, merancang pipeline secara konsisten, dan bahkan mengurangi waktu pemrosesan pipeline .

Mari ambil contoh template build yang dapat digunakan ulang.

Pertama, definisikan template build Anda, build-template.yml:

# 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.

Gunakan template build Anda di pipeline utama:

# 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.

Mengelola rahasia dan variabel

Saat mengerjakan proyek, terutama di lingkungan kolaboratif, umum menggunakan informasi sensitif seperti string koneksi basis data, kunci API, kata sandi, atau token. Jika rahasia ini di-hardcode di basis kode Anda atau terekspos di log, rahasia tersebut mudah disusupi.

Mari lihat cara mengelola rahasia dan variabel kita secara aman menggunakan secrets dan variable groups di Azure Pipelines.

Langkah 1: Membuat variable group

  • Klik tab Pipelines di bilah sisi kiri.
  • Di bagian Pipelines, klik Library.

Antarmuka Azure DevOps yang menampilkan tab Pipelines di bilah sisi kiri dan opsi Library dalam bagian Pipelines.

  • Buat variable group:
    • Klik tab Variable groups.

Buat variable group baru dengan mudah:

Di Azure DevOps, arahkan ke Pipelines, lalu pilih Library.

Buat variable group baru.

Langkah ini membantu Anda mengelola dan mengorganisasi variabel untuk konfigurasi pipeline yang efisien.

  • Klik tombol Add variable group.
  • Masukkan nama variable group Anda (misalnya, MyAppSecrets).

Antarmuka Azure DevOps yang menampilkan tombol Add variable group dan kolom untuk memasukkan nama variable group, seperti MyAppSecrets.

Langkah 2: Menambahkan rahasia ke variable group

  • Tambahkan variabel: 
    • Di variable group, klik Add untuk membuat variabel baru. 

Antarmuka Azure DevOps yang menampilkan opsi untuk menambahkan variabel di dalam variable group dengan mengklik tombol Add.

  • Masukkan nama variabel (misalnya, DB_CONNECTION_STRING).
  • Centang kotak Keep this value secret untuk memastikan nilainya diperlakukan sebagai rahasia. 
  • Masukkan nilai variabel (misalnya, string koneksi basis data saya).

Antarmuka Azure DevOps yang menampilkan kolom untuk memasukkan nama variabel (misalnya, DB_CONNECTION_STRING), menandakannya sebagai rahasia, dan mengatur nilainya (misalnya, string koneksi basis data).

  • Klik Save untuk menyimpan variabel.

Antarmuka Azure DevOps yang menampilkan tombol Save untuk menyimpan variabel baru yang ditambahkan ke variable group.

Langkah 3: Menggunakan rahasia di pipeline Anda

Sekarang Anda telah membuat variable group dengan rahasia, Anda dapat menggunakan variabel ini di file YAML pipeline Anda.

  • Referensikan variable group: Tambahkan variable group ke file YAML pipeline Anda: 
variables:
- group: MyAppSecrets
  • Gunakan rahasia dalam langkah Anda: Anda dapat mereferensikan rahasia dalam langkah pipeline Anda menggunakan sintaks $(VariableName). Berikut contoh cara menggunakan DB_CONNECTION_STRING dalam langkah skrip:
# 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.

Langkah 4: Menjalankan pipeline

  • Setelah Anda menyimpan file YAML, buka bagian Pipelines dan klik Run Pipeline.
  • Setelah pipeline berjalan, Anda dapat memeriksa log. Anda akan melihat bahwa nilai rahasia disembunyikan, menjaga informasi sensitif Anda tetap aman.

Kesimpulan

Dalam tutorial ini, kita menelusuri perjalanan lengkap menggunakan Azure Pipelines—mulai dari menyiapkan pipeline pertama hingga membangun, menguji, menerapkan, memantau, dan mengoptimalkannya.

Fase deployment membutuhkan latihan. Mulailah sederhana, terus tingkatkan, dan seiring waktu, Anda akan memperoleh kepercayaan diri dan keluwesan dalam mengelola workflow CI/CD. Azure Pipelines menyediakan alatnya, Anda membawa iterasi dan pembelajaran.

Dengan upaya yang konsisten, Anda dapat merampingkan proses pengembangan dan menjadi percaya diri dalam merilis perangkat lunak berkualitas tinggi dalam skala besar.

Untuk menggali lebih dalam Azure DevOps dan Microsoft Azure, silahkan lihat sumber daya berikut: 

FAQs

Bisakah saya menggunakan Azure Pipelines untuk proyek non-Azure?

Ya, bisa. Azure Pipelines mendukung deployment ke on-premise dan berbagai lingkungan cloud seperti AWS, GCP, dan banyak lagi.

Bahasa pemrograman apa yang didukung Azure Pipelines?

Azure Pipelines mendukung banyak bahasa pemrograman, termasuk Node.js, Python, Java, .NET, dan banyak lagi.

Apa perbedaan antara Azure Pipelines dan GitHub Actions?

Azure Pipelines menawarkan integrasi yang lebih mendalam dengan ekosistem Azure dan alat deployment yang kuat, sedangkan GitHub Actions menyediakan pengalaman CI/CD yang lebih sederhana dan native GitHub. Keduanya mendukung workflow YAML dan deployment terkontainer.

Bisakah saya menggunakan Azure Pipelines dengan teknologi non-Microsoft seperti Python atau Java?

Ya, Azure Pipelines mendukung semua platform dan bahasa utama, termasuk Python, Java, Node.js, dan lainnya. Anda dapat mengonfigurasi build dan deployment untuk tumpukan teknologi apa pun menggunakan YAML.

Apakah Azure Pipelines gratis digunakan?

Azure Pipelines menawarkan tier gratis dengan 1.800 menit/bulan untuk proyek publik dan waktu build privat terbatas. Penggunaan tambahan memerlukan paket berbayar atau agen self-hosted.

Apa itu Azure DevOps Service Connections, dan mengapa penting?

Service Connections menautkan Azure Pipelines secara aman ke layanan eksternal seperti Azure Web Apps atau klaster Kubernetes. Ini penting untuk deployment otomatis dan manajemen infrastruktur.

Bagaimana perbandingan Azure Pipelines dengan Jenkins atau CircleCI?

Azure Pipelines memberikan pengalaman yang lebih terintegrasi untuk pengguna Azure dan dukungan yang lebih baik untuk layanan Microsoft. Jenkins lebih dapat disesuaikan namun memerlukan lebih banyak penyiapan; CircleCI unggul dalam kecepatan dan paralelisme.


Emmanuel Akor's photo
Author
Emmanuel Akor
LinkedIn
Twitter

Emmanuel Akor adalah Cloud & DevOps Engineer yang mahir memanfaatkan teknologi cloud dan alat DevOps untuk mendorong proyek-proyek berdampak. Lulusan Cum Laude Ilmu Komputer dari Babcock University dan mantan Cloud Co-Lead untuk GDSC, Emmanuel memadukan keunggulan akademis dengan pengalaman langsung. Sebagai Penulis Konten Teknis, ia unggul dalam berbagi pengetahuan dan berkolaborasi dengan tim.

Topik
Azure
Cloud

Pelajari lebih lanjut tentang Azure dengan kursus-kursus ini!

Kursus

Memahami Microsoft Azure

3 jam
50.9K
Pelajari tentang kekuatan Microsoft Azure dan perangkat lunak komputasi awan untuk membantu Anda meningkatkan keterampilan rekayasa data Anda.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat SelengkapnyaLihat Selengkapnya