Penerapan Berkelanjutan ke Azure
Perluas alur dengan tahap penerapan yang mendorong artefak build ke slot App Service, menjalankan tes asap, lalu menukarkannya ke produksi setelah disetujui.
Penerapan Berkelanjutan ke Azure adalah pelajaran Azure Fundamentals gratis di CoddyKit. Ini adalah pelajaran 3 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 Azure Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Azure Fundamentals mencakup 4 pelajaran total.
Apa Itu Deployment Berkelanjutan?
Deployment Berkelanjutan (CD) secara otomatis merilis setiap perubahan yang lulus pengujian CI ke Produksi tanpa intervensi manual. Pengiriman Berkelanjutan adalah versi yang lebih longgar—proses deployment diotomatisasi hingga lingkungan staging dan memerlukan persetujuan manusia sebelum masuk ke Produksi. Kedua praktik ini dibangun di atas infrastruktur pipeline yang sama. Di Azure Pipelines, CD diterapkan dengan menambahkan tahap deployment setelah tahap CI, yang menargetkan lingkungan Azure dengan gerbang persetujuan sesuai kebutuhan.
Pipeline Multi-Tahap: CI + CD
Pipeline CI/CD lengkap memiliki setidaknya tiga tahap: Build (mengompilasi, menguji, dan menerbitkan artefak), Deploy ke Staging (melakukan deployment artefak ke slot non-Produksi), dan Deploy ke Produksi (menukar slot atau melakukan deployment setelah persetujuan). Tahap meneruskan artefak melalui penyimpanan artefak pipeline. Tahap staging secara otomatis menjalankan pengujian integrasi atau smoke, sedangkan tahap Produksi menunggu persetujuan manual sebelum melanjutkan.
# azure-pipelines.yml: multi-stage CI/CD
trigger:
branches:
include: [main]
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
jobs:
- job: BuildApp
steps:
- script: npm ci && npm run build
- task: PublishPipelineArtifact@1
inputs: {targetPath: dist, artifactName: webapp}
- stage: DeployStaging
dependsOn: Build
jobs:
- deployment: StagingDeploy
environment: Staging
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs: {appName: myapp-staging, package: '$(Pipeline.Workspace)/webapp'}
- stage: DeployProduction
dependsOn: DeployStaging
jobs:
- deployment: ProductionDeploy
environment: Production # Has manual approval gate
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs: {appName: myapp, package: '$(Pipeline.Workspace)/webapp'}Pekerjaan Deployment dan Lingkungan
Gunakan pekerjaan deployment (bukan job biasa) untuk tahap deployment. Pekerjaan deployment mendukung strategi deployment (runOnce, rolling, canary), melacak riwayat deployment untuk setiap lingkungan, dan wajib merujuk ke Environments Azure DevOps. Lingkungan mencatat pipeline mana yang melakukan deployment ke lingkungan tersebut, versi yang sedang aktif, serta menyediakan gerbang persetujuan, pemeriksaan, dan status kesehatan sumber daya dalam satu dasbor.
# Deployment job with rolling strategy
- job: RollingDeploy
strategy:
rolling:
maxParallel: 2 # Deploy to 2 targets at a time
preDeploy:
steps:
- script: echo 'Pre-deploy checks'
deploy:
steps:
- task: AzureWebApp@1
inputs:
appName: myapp
package: '$(Pipeline.Workspace)/webapp'
postRouteDeploy:
steps:
- script: curl -f https://myapp.azurewebsites.net/healthMelakukan Deployment ke Azure App Service
Tugas AzureWebApp@1 melakukan deployment aplikasi web ke Azure App Service. Tugas ini mendukung deployment ke slot tertentu (misalnya staging), serta deployment paket ZIP, citra Docker, atau file JAR/WAR. Setelah melakukan deployment ke slot staging, gunakan tugas AzureAppServiceManage@0 untuk menukar slot staging ke Produksi—pola deployment tanpa waktu henti yang lebih disarankan untuk App Service.
# Deploy to staging slot, then swap to production
steps:
- task: AzureWebApp@1
displayName: 'Deploy to staging slot'
inputs:
azureSubscription: 'AzureProductionSC'
appType: webAppLinux
appName: myUniqueWebApp
deployToSlotOrASE: true
resourceGroupName: MyRG
slotName: staging
package: '$(Pipeline.Workspace)/webapp/app.zip'
runtimeStack: 'NODE|18-lts'
- task: AzureAppServiceManage@0
displayName: 'Swap staging into production'
inputs:
azureSubscription: 'AzureProductionSC'
action: Swap Slots
webAppName: myUniqueWebApp
resourceGroupName: MyRG
sourceSlot: stagingPengujian Smoke dalam Pipeline CD
Setelah melakukan deployment ke staging, jalankan pengujian smoke—serangkaian pengujian minimal untuk memastikan deployment berhasil dan aplikasi merespons dengan benar. Pengujian smoke biasanya memanggil titik akhir API utama dan memverifikasi kode status serta isi respons yang diharapkan. Jika pengujian smoke gagal, pipeline berhenti sebelum menukar slot ke Produksi atau meminta persetujuan, sehingga rilis yang rusak tidak sampai ke pengguna.
# Smoke test step after staging deployment
- script: |
MAX_RETRY=10
COUNT=0
until curl -sf https://myUniqueWebApp-staging.azurewebsites.net/health; do
COUNT=$((COUNT+1))
if [ $COUNT -ge $MAX_RETRY ]; then
echo 'Health check failed after $MAX_RETRY attempts'
exit 1
fi
echo 'Waiting for app to start... attempt '$COUNT
sleep 10
done
echo 'App is healthy'
displayName: 'Smoke test: health endpoint'Gerbang Persetujuan Lingkungan
Tambahkan gerbang persetujuan ke Environments Azure DevOps untuk mewajibkan persetujuan manual sebelum deployment dilanjutkan. Buka pengaturan lingkungan dan tambahkan Approvals—tentukan pengguna atau grup yang harus menyetujui. Saat pipeline mencapai pekerjaan deployment yang menargetkan lingkungan tersebut, pipeline berhenti sementara dan mengirimkan pemberitahuan email. Pemberi persetujuan dapat melihat detail deployment lalu menyetujui atau menolaknya di portal Azure DevOps atau melalui tautan dalam email pemberitahuan.
# Pipeline YAML: deployment to production environment
# (Approval configured in Azure DevOps portal on 'Production' environment)
- stage: DeployProduction
displayName: 'Deploy to Production'
dependsOn: DeployStaging
condition: succeeded('DeployStaging')
jobs:
- deployment: ProdDeploy
environment: Production # <-- Triggers approval gate configured in portal
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
appName: myapp-prod
package: '$(Pipeline.Workspace)/webapp/app.zip'Melakukan Deployment ke Azure Kubernetes Service
Deploy aplikasi dalam kontainer ke AKS menggunakan tugas KubernetesManifest@0. Tugas ini menerapkan manifes YAML Kubernetes ke klaster, dengan dukungan bawaan untuk imagePullSecrets dan deployment canary. Hubungkan ke klaster AKS menggunakan koneksi layanan Kubernetes yang dikonfigurasi di Azure DevOps. Di balik layar, tugas ini menggunakan kubectl apply dan menunggu rollout selesai sebelum menandai langkah sebagai berhasil.
# AKS deployment step in Azure Pipelines
- task: KubernetesManifest@0
displayName: 'Deploy to AKS'
inputs:
action: deploy
kubernetesServiceConnection: 'AKS-Production-SC'
namespace: production
manifests: |
k8s/deployment.yaml
k8s/service.yaml
containers: 'mycontainerregistry.azurecr.io/myapp:$(Build.BuildId)'
imagePullSecrets: acr-secretStrategi Pemberian Tag Citra
Beri tag pada citra kontainer menggunakan ID build ($(Build.BuildId)) atau SHA commit Git ($(Build.SourceVersion)) agar Anda selalu dapat melacak kontainer yang sedang berjalan kembali ke revisi kode persis yang digunakan untuk membuatnya. Hindari penggunaan tag latest di Produksi—Kubernetes menyimpannya dalam cache dan mungkin tidak mengambil versi baru. Simpan tag citra tertentu sebagai variabel pipeline dan masukkan ke dalam manifes Kubernetes saat deployment menggunakan envsubst atau sed.
# Tag and push image with build ID in CI stage
- script: |
IMAGE='mycontainerregistry.azurecr.io/myapp'
TAG='$(Build.BuildId)'
docker build -t $IMAGE:$TAG -t $IMAGE:latest .
az acr login --name mycontainerregistry
docker push $IMAGE:$TAG
docker push $IMAGE:latest
echo "##vso[task.setvariable variable=imageTag;isOutput=true]$TAG"
name: BuildImage
displayName: 'Build and push container image'Strategi Pembatalan Penerapan
Tentukan strategi pembatalan penerapan untuk penerapan ke Production agar Anda dapat pulih dengan cepat dari rilis yang bermasalah. Untuk App Service, pembatalan penerapan berarti menukar slot Production kembali ke versi penahapan sebelumnya. Untuk AKS, gunakan kubectl rollout undo. Buat pipeline pembatalan khusus atau tambahkan pekerjaan pembatalan manual yang dapat dipicu dari portal Azure DevOps. Dokumentasikan prosedur pembatalan dan latih secara berkala — pembatalan yang belum diuji bukanlah pembatalan yang dapat diandalkan.
# Rollback job triggered manually
- job: Rollback
condition: and(failed(), eq(variables['Build.Reason'], 'Manual'))
steps:
# App Service rollback: swap production back to previous
- task: AzureAppServiceManage@0
inputs:
azureSubscription: 'AzureProductionSC'
action: Swap Slots
webAppName: myUniqueWebApp
resourceGroupName: MyRG
sourceSlot: production # Swap production back to staging version
targetSlot: stagingNotifikasi dan Pemantauan Penerapan
Setelah setiap penerapan ke Production, jalankan pemeriksaan pemantauan secara otomatis untuk memastikan versi baru berfungsi dengan baik. Gunakan pemeriksaan pipeline AzureMonitor@1 untuk meminta metrik Azure Monitor — jika tingkat kesalahan meningkat setelah penerapan, hentikan kemajuan pipeline berikutnya dan picu pembatalan penerapan. Kirim notifikasi penerapan ke Microsoft Teams atau Slack melalui tugas webhook agar tim mengetahui kapan penerapan selesai dan versi apa yang sedang aktif.
# Send Teams notification on deployment completion
- task: InvokeRestAPI@1
displayName: 'Notify Teams channel'
inputs:
connectionType: connectedServiceName
serviceConnection: 'TeamsWebhookSC'
method: POST
body: '{
"text": "Deployed **$(Build.BuildId)** to Production. Committed by $(Build.RequestedFor). <br>View: https://myapp.contoso.com"
}'
waitForCompletion: falsePraktik Terbaik CD
Ikuti praktik terbaik continuous deployment berikut: lakukan penerapan secara sering (batch kecil mengurangi risiko), gunakan penanda fitur untuk memisahkan penerapan dari rilis, otomatisasikan semua gerbang kualitas sebelum Production, gunakan penahapan yang menyerupai Production agar perbedaan tidak menyamarkan bug, pantau jendela penerapan dengan pemeriksaan kesehatan otomatis, dan selalu siapkan rencana pembatalan penerapan yang telah diuji. Pipeline CD yang matang menjadikan penerapan sebagai hal rutin, bukan operasi yang penuh tekanan.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep Microsoft Azure Fundamentals (AZ-900) dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa: pipeline YAML multi-tahap menghubungkan tahap Build, penahapan, dan Production dengan penerusan artefak, pekerjaan penerapan dengan Environments memungkinkan gerbang persetujuan dan pelacakan penerapan, serta pengujian asap setelah penerapan ke lingkungan penahapan mencegah rilis yang bermasalah mencapai Production. Selanjutnya kita akan membahas GitHub Actions di Azure.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penerapan Berkelanjutan ke Azure” gratis?
Ya — teks lengkap “Penerapan Berkelanjutan ke Azure” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Azure Fundamentals, upgrade ke CoddyKit PRO. Kursus Azure Fundamentals mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penerapan Berkelanjutan ke Azure”?
Perluas alur dengan tahap penerapan yang mendorong artefak build ke slot App Service, menjalankan tes asap, lalu menukarkannya ke produksi setelah disetujui. Kamu berlatih Azure Fundamentals 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 Azure Fundamentals?
Tidak diperlukan pengalaman sebelumnya. Azure Fundamentals 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 3 dari 4.
Berapa lama pelajaran “Penerapan Berkelanjutan ke Azure” 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 Azure Fundamentals ini?
Ya. Setiap pelajaran Azure Fundamentals 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
- Ikhtisar Azure DevOps Services
- Membangun Alur CI dengan Azure Pipelines
- Penerapan Berkelanjutan ke Azure
- GitHub Actions di Azure