0Pricing
Cloud & IT Cert Prep · Pelajaran

Membangun Alur CI dengan Azure Pipelines

Tentukan alur YAML yang terpicu oleh permintaan pull, menjalankan tes unit, dan menghasilkan artefak build, lalu tinjau hasil tes serta cakupan kode di portal.

Membangun Alur CI dengan Azure Pipelines adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa Itu Integrasi Berkelanjutan?

Integrasi Berkelanjutan (CI) adalah praktik menggabungkan perubahan kode ke cabang bersama secara berkala, dengan setiap penggabungan secara otomatis memicu proses build dan pengujian. Tujuannya adalah mendeteksi kegagalan integrasi sejak dini—sebelum kegagalan tersebut berkembang menjadi masalah besar yang sulit diperbaiki. Pipeline CI yang baik melakukan build kode, menjalankan pengujian unit, mengukur cakupan kode, melakukan analisis statis, dan menghasilkan artefak yang siap di-deploy dalam beberapa menit. Azure Pipelines menyediakan mesin otomatisasi untuk praktik ini.

Struktur Pipeline YAML

Pipeline CI Azure Pipelines ditentukan dalam file azure-pipelines.yml di root repositori Anda. File YAML tersebut menentukan pemicu (kapan harus dijalankan), kumpulan agen (jenis agen yang digunakan), serta hierarki tahap, pekerjaan, dan langkah. Secara default, tahap dijalankan secara berurutan. Pekerjaan dalam satu tahap secara default dijalankan secara paralel. Langkah dalam satu pekerjaan dijalankan secara berurutan. Struktur ini memberi Anda kendali terperinci atas alur eksekusi pipeline.

# 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: []

Konfigurasi Pemicu

Azure Pipelines mendukung beberapa jenis pemicu. Pemicu cabang menjalankan pipeline ketika kode dikirim ke cabang yang ditentukan. Pemicu pull request (pemicu PR) dijalankan ketika PR dibuka atau diperbarui terhadap cabang target—hal ini penting untuk memvalidasi kode sebelum penggabungan. Pemicu terjadwal dijalankan pada waktu tertentu (misalnya, build setiap malam). Pemicu pipeline menghubungkan beberapa pipeline secara berantai. Tentukan trigger: none untuk menonaktifkan proses otomatis dan hanya mengizinkan eksekusi manual.

# 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

Langkah: Skrip dan Tugas

Langkah pipeline berupa skrip (perintah bash atau PowerShell) atau tugas (unit berparameter yang telah dibuat sebelumnya dari marketplace Azure DevOps). Tugas seperti NodeTool@0, DotNetCoreCLI@2, dan Maven@3 merangkum operasi build umum. Gunakan displayName pada setiap langkah agar log pipeline mudah dibaca. Setiap langkah dijalankan secara berurutan dan pipeline gagal jika ada langkah yang keluar dengan kode selain nol, kecuali Anda menetapkan continueOnError: true.

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'

Menerbitkan Hasil Pengujian

Setelah menjalankan pengujian, terbitkan hasilnya ke Azure DevOps menggunakan tugas PublishTestResults. Azure Pipelines mengurai file hasil berformat JUnit, NUnit, XUnit, atau VSTest dan menampilkan jumlah pengujian yang lulus atau gagal, durasi proses pengujian, serta detail setiap pengujian di antarmuka pengguna eksekusi pipeline. Riwayat pengujian dilacak dari waktu ke waktu sehingga Anda dapat menemukan pengujian yang tidak stabil dan regresi. Hal ini penting untuk memantau kualitas kode di seluruh tim.

# 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

Menerbitkan Cakupan Kode

Terbitkan laporan cakupan kode agar Azure Pipelines menampilkan persentase dan tren cakupan di antarmuka pipeline. Tugas PublishCodeCoverageResults menerima laporan berformat Cobertura atau JaCoCo. Padukan hal ini dengan gerbang cakupan cabang—konfigurasikan ambang minimum cakupan dan gagalkan build jika cakupan turun di bawahnya. Tren cakupan membantu mengidentifikasi penambahan kode baru tanpa pengujian yang sesuai.

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

Variabel Pipeline dan Grup Variabel

Simpan konfigurasi pipeline dalam variabel yang ditentukan pada tingkat pipeline, tahap, atau pekerjaan di YAML. Untuk nilai sensitif (kunci API, kata sandi), gunakan variabel rahasia—tetapkan variabel tersebut di pustaka pipeline (UI) atau grup variabel, lalu rujuk dalam YAML. Grup variabel adalah kumpulan variabel yang dapat digunakan kembali dan dibagikan ke beberapa pipeline. Tautkan grup variabel ke Azure Key Vault untuk menyinkronkan rahasia dari Key Vault ke dalam variabel pipeline secara otomatis.

# 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

Artefak: Mengemas Hasil Build

Setelah build berhasil, kemas hasilnya menjadi artefak pipeline agar tahap berikutnya (seperti deployment) dapat mengaksesnya. Gunakan PublishPipelineArtifact untuk mengunggah file dari agen build ke penyimpanan artefak Azure DevOps. Pada tahap atau pekerjaan berikutnya, gunakan DownloadPipelineArtifact untuk mengambil artefak tersebut. Dengan demikian, pekerjaan build tidak bergantung langsung pada pekerjaan deployment, yang dapat dijalankan pada agen atau tahap berbeda.

# 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

Pekerjaan Paralel untuk Build yang Lebih Cepat

Jalankan tugas yang tidak saling bergantung secara paralel dengan menentukan beberapa pekerjaan dalam satu tahap. Misalnya, jalankan pengujian unit dan pemindaian keamanan secara bersamaan, bukan berurutan. Pekerjaan paralel memerlukan menit build terpisah, tetapi dapat mengurangi durasi total pipeline secara signifikan. Gunakan properti dependsOn agar suatu pekerjaan menunggu satu atau beberapa pekerjaan lain selesai sebelum dimulai, sehingga membentuk grafik dependensi dalam satu tahap.

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

Validasi Build dengan Kebijakan Cabang

Tautkan pipeline CI Anda ke kebijakan cabang di Azure Repos agar pipeline berjalan otomatis sebagai pemeriksaan validasi build pada pull request yang menargetkan main. Penggabungan diblokir hingga pipeline berhasil. Gabungkan beberapa pemeriksaan: pipeline CI harus berhasil, setidaknya 2 peninjau harus menyetujui, semua komentar harus diselesaikan, dan item pekerjaan tertaut harus ada. Hal ini menciptakan gerbang kualitas yang mencegah penggabungan kode rusak ke cabang utama.

# 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

Membaca Hasil Eksekusi Pipeline

Setelah eksekusi pipeline selesai, tinjau hasilnya di portal Azure DevOps. Tab Summary menampilkan status lulus/gagal dan waktu keseluruhan. Tab Tests mencantumkan semua hasil pengujian dengan penyaringan berdasarkan hasil. Tab Code Coverage menampilkan persentase cakupan dan menyoroti baris yang belum tercakup. Klik pekerjaan apa pun untuk melihat keluaran log langkah demi langkah. Pipeline yang gagal menampilkan langkah yang gagal dengan sorotan merah beserta keluaran kesalahan lengkap untuk memudahkan diagnosis.

# 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

Pemeriksaan Cepat

Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa Azure Pipelines YAML mendefinisikan pipeline CI dengan tahap, pekerjaan, dan langkah untuk build, pengujian, serta pembuatan artefak; pemicu PR dan kebijakan cabang menerapkan gerbang kualitas yang memblokir penggabungan kode rusak; dan tugas PublishTestResults dan PublishCodeCoverageResults membuat kualitas pengujian terlihat di seluruh tim. Selanjutnya, kita akan mempelajari deployment berkelanjutan ke Azure.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membangun Alur CI dengan Azure Pipelines” gratis?

Ya — teks lengkap “Membangun Alur CI dengan Azure Pipelines” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Membangun Alur CI dengan Azure Pipelines”?

Tentukan alur YAML yang terpicu oleh permintaan pull, menjalankan tes unit, dan menghasilkan artefak build, lalu tinjau hasil tes serta cakupan kode di portal. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?

Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Membangun Alur CI dengan Azure Pipelines” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Ikhtisar Azure DevOps Services
  2. Membangun Alur CI dengan Azure Pipelines
  3. Penerapan Berkelanjutan ke Azure
  4. GitHub Actions di Azure
← Kembali ke Cloud & IT Cert Prep