Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Anda dapat menambahkan komputer virtual sebagai sumber daya dalam lingkungan Azure Pipelines dan menargetkannya untuk penyebaran. Untuk alur kerja integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD), riwayat penyebaran lingkungan menyediakan keterlacakan untuk setiap VM hingga ke commit pemicu.
Artikel ini memperlihatkan kepada Anda cara menyiapkan alur Azure DevOps untuk penyebaran ke beberapa sumber daya komputer virtual (VM) Linux di lingkungan. Instruksi ini membangun dan menyebarkan aplikasi JavaScript atau Java, tetapi Anda dapat menyesuaikannya untuk aplikasi apa pun yang menerbitkan paket penyebaran web.
Untuk informasi selengkapnya tentang lingkungan dan sumber daya yang ditargetkan oleh pekerjaan penyebaran, lihat definisi skema YAML jobs.deployment.environment . Untuk informasi lebih lanjut tentang pekerjaan penyebaran, lihat definisi jobs.deployment.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Organisasi dan proyek Azure DevOps. Daftar ke Alur Azure.
Selain itu, untuk Aplikasi JavaScript atau Node.js:
- Setidaknya dua VM Linux disiapkan dengan Nginx di Azure.
- Fork Anda sendiri dari repositori kode sampel GitHub di https://github.com/MicrosoftDocs/pipelines-javascript. Jika Anda sudah memiliki aplikasi di GitHub yang ingin Anda sebarkan, Anda dapat menggunakan kode sebagai gantinya.
Penting
- Untuk menyebarkan aplikasi, sumber daya VM lingkungan target harus memiliki semua perangkat lunak, dependensi, izin, dan login yang diperlukan yang diinstal dan dikonfigurasi.
- Untuk menggunakan kode sumber GitHub, Anda memerlukan koneksi layanan GitHub. GitHub mungkin juga meminta Anda untuk masuk, menginstal aplikasi Azure Pipelines GitHub, atau mengotorisasi Azure Pipelines. Untuk menyelesaikan setiap proses, ikuti instruksi di layar. Untuk informasi selengkapnya, lihat Akses ke repositori GitHub.
Membuat lingkungan dan menambahkan VM Linux
Dalam proyek Azure Pipelines Anda, buat lingkungan dan tambahkan VM Linux Anda sebagai sumber daya lingkungan dengan mengikuti instruksi di Membuat lingkungan dan menambahkan VM.
Jalankan skrip pendaftaran agen yang disalin pada setiap VM untuk mendaftarkannya di lingkungan. Anda juga dapat menetapkan tag ke masing-masing VM dengan merespons perintah interaktif.
Membuat dan menjalankan alur build
Buat alur CI yang membangun ulang dan menyebarkan aplikasi Anda setiap kali ada commit ke cabang main pada repositori kode Anda.
Membuat alur YAML
- Di proyek Azure DevOps Anda, pilih Alur Baru> atau Buat Alur, lalu pilih GitHub sebagai lokasi kode sumber Anda.
- Pada layar Pilih repositori, pilih repositori sampel fork Anda.
- Pada layar Konfigurasikan alur Anda, pilih Alur pemula.
- Pada layar Tinjau YAML pipeline Anda, ganti kode pemula yang dihasilkan dengan kode berikut, tergantung pada runtime Anda.
Tambahkan tugas build
Job Build menjalankan tugas untuk membangun dan menguji proyek Anda, dan mengunggah hasil build ke lokasi drop. Pekerjaan ini berjalan pada agen build yang ditentukan dalam alur pool, bukan pada VM lingkungan Linux Anda.
Alur berikut membangun dan menguji proyek Node.js Anda dengan npm, lalu mengemas output dan mengunggahnya ke lokasi drop.
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: Build
displayName: Build
steps:
- task: UseNode@1
inputs:
version: '16.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run build --if-present
npm run test --if-present
displayName: 'npm install, build and test'
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: tar
tarCompression: gz
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).gz
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).gz
artifact: drop
Untuk informasi selengkapnya, tinjau langkah-langkah untuk membuat build di Membangun aplikasi Node.js Anda dengan gulp.
Menjalankan rangkaian proses
Untuk menyimpan file azure-pipelines.yml Anda ke repositori Anda dan memulai alur CI/CD, pilih Simpan dan jalankan, lalu pilih Simpan dan jalankan lagi.
Setelah alur selesai, lihat halaman Ringkasan pekerjaan untuk memverifikasi bahwa pekerjaan pembangun berhasil dijalankan dan 1 artefak yang diterbitkan muncul di bawah Terkait.
Tambahkan dan jalankan pekerjaan penyebaran
Pekerjaan penyebaran mengeksekusi preDeploykait siklus hidup , deploy, routeTraffic, dan postRouteTraffic sekali, dan kemudian menjalankan baik on: success atau on: failure. Jika Anda menyebarkan ke lingkungan VM, fase preDeploy berjalan pada agen build, bukan pada VM lingkungan. Semua langkah lain berjalan pada VM terdaftar di lingkungan.
- Langkah opsional
preDeployberjalan sebelum penyebaran. Anda dapat menggunakan langkah ini untuk orkestrasi, persiapan VM dan artefak, dan pemeriksaan kesehatan. - Langkah ini
deploymengimplementasikan objek penggelaran ke VM lingkungan target. - Langkah opsional
routeTrafficdapat menerapkan pengalihan lalu lintas. - Langkah opsional
postRouteTrafficdapat melakukan pemeriksaan kesehatan dan pemberitahuan. -
on.failureLangkah kustom danon.successlangkah dapat memberikan pemberitahuan atau pemulihan.
Pekerjaan penyebaran ke lingkungan dengan resourceType: VirtualMachine mengharuskan VM lingkungan dapat menjalankan semua tugas rangkaian, seperti Bash atau Azure CLI. Anda dapat menggunakan preDeploy langkah untuk menginstal perangkat lunak dan izin yang diperlukan pada VM target.
Misalnya, jika langkah penyebaran menggunakan Azure CLI, agen VM harus menginstal Azure CLI dan tersedia di PATH untuk pengguna agen. Pengguna agen harus memiliki izin untuk menjalankan CLI dan harus mengautentikasi ke Azure. Anda mungkin perlu menambahkan pengguna agen ke sudoers, atau menyiapkan variabel lingkungan untuk mengotomatiskan penginstalan.
Anda dapat menggunakan preDeploy skrip untuk menginstal Azure CLI pada VM target. Untuk mengautentikasi ke Azure, Anda dapat menjalankan az login, atau untuk otomatisasi, tentukan prinsipal layanan dan jalankan az login --service-principal dalam langkah preDeploy.
Tambah pekerjaan penyebaran
Pekerjaan penerapan berikut akan dimulai ketika pekerjaan Build berhasil diselesaikan dengan sukses. Untuk menambahkan tugas ke pipeline Anda:
Pilih ikon Tindakan lainnya di kanan atas pada halaman Ringkasan , pilih Edit alur, dan tambahkan kode berikut ke akhir alur Anda. Ganti
<environment-name>dengan nama lingkungan yang Anda buat.Secara opsional, Anda dapat memilih VM tertentu dari lingkungan untuk menerima penyebaran dengan menggunakan parameter
tagsdan menentukan parameter<VMtag>yang telah Anda tentukan untuk VM.- deployment: VMDeploy displayName: Web deploy dependsOn: Build condition: succeeded() environment: name: <environment-name> resourceType: VirtualMachine tags: <VMtag> # VMs to deploy toTambahkan sebuah
strategypada pekerjaandeployment. Strategi penyebaran runOnce adalah yang paling sederhana dan berjalan secara default jika Anda tidak menentukanstrategy. Strategi ini menjalankan langkah-langkah penyebaran sekali pada setiap VM di lingkungan, tanpa paralelisme atau manajemen lalu lintas.strategy: runOnce: deploy: steps: - script: echo my first deploymentSetelah Anda menambahkan pekerjaan penyebaran, pilih Validasi dan simpan, lalu pilih Simpan, pilih Jalankan, dan pilih Jalankan lagi. Dengan setiap eksekusi pekerjaan ini, mencatat riwayat penyebaran terhadap lingkungan.
Catatan
Pertama kali Anda menjalankan alur yang menggunakan lingkungan, Anda harus memberikan izin untuk semua eksekusi alur untuk mengakses kumpulan agen dan lingkungan. Pilih simbol Menunggu di samping pekerjaan pada layar Ringkasan eksekusi alur, lalu pilih Izinkan untuk memberikan izin yang diperlukan.
Strategi penyebaran bergulir
Anda dapat menggunakan rolling alih-alih strategi penyebaran runOnce.
Strategi penyebaran bergulir dapat mengatur paralelisme, pemeriksaan kesehatan, dan perutean lalu lintas. Meskipun strategi ini dieksekusi pada satu VM dalam satu waktu, penyebaran bergulir dapat berjalan secara paralel dalam set bergulir hingga lima VM target, tergantung pada pengaturan.
Parameter maxParallel menetapkan jumlah atau persentase VM yang harus tetap tersedia, memastikan bahwa aplikasi dapat menangani permintaan dan mengurangi waktu henti keseluruhan selama penyebaran. Parameter ini juga menentukan kondisi keberhasilan dan kegagalan untuk penyebaran.
Untuk informasi selengkapnya tentang strategi penyebaran bergulir, lihat definisi skema jobs.deployment.strategy.rolling .
Contoh tugas penyebaran
Penyebaran ke sumber daya VM mengharuskan VM untuk memiliki semua aplikasi, dependensi, dan izin yang diperlukan, yang telah diinstal dan terkonfigurasi. Anda harus menginstal persyaratan ini secara manual, atau alur harus menginstal atau mengimplementasikannya.
Penyebaran aplikasi Java ke sumber daya VM lebih mudah diterapkan karena mandiri. Java Virtual Machine (JVM) sering diinstal sebelumnya pada agen VM, dan Anda tidak perlu khawatir tentang dependensi aplikasi, izin, atau manajemen paket. Anda hanya dapat mengunduh file JAR dan kemudian menjalankannya dengan java -jar.
Aplikasi Node.js memerlukan Node, mungkin dependensi npm, dan manajer layanan seperti systemd untuk hadir dan dikonfigurasi pada setiap agen VM. Agar otomatis, skrip penyebaran alur harus noninteraktif dan dapat memulai ulang dan mengelola layanan aplikasi.
Pekerjaan penyebaran YAML rolling berikut untuk aplikasi JavaScript bergantung pada penyelesaian tahap yang berhasil Build . Pekerjaan penyebaran mengasumsikan bahwa persyaratan berikut sudah diinstal sebelumnya atau telah dikonfigurasi sebelumnya pada setiap VM agen. Untuk otomatisasi penuh, Anda dapat menginstal dan mengonfigurasi aplikasi dan layanan ini pada VM sebagai bagian dari alur.
- Node.js 16.x terinstal, dan npm tersedia di PATH agen build.
- Systemd dengan file layanan systemd yang dikonfigurasi untuk layanan yang memulai aplikasi Node.js, seperti /etc/systemd/system/pipelines-javascript.service.
- Penggunaan sudo tanpa kata sandi untuk pengguna agen dalam perintah yang dibutuhkan, diatur dengan
NOPASSWD:di /etc/sudoers. - Izin tulis untuk pengguna agen ke /opt/pipelines-javascript atau target penyebaran lainnya.
Petunjuk / Saran
Untuk sebagian besar aplikasi Node.js, pertimbangkan untuk menyebarkan ke Azure App Service atau menggunakan pekerjaan alur reguler dengan agen yang dihosting Microsoft, alih-alih menggunakan pekerjaan penyebaran. Pendekatan ini lebih sederhana dan menghindari overhead operasional dalam mengelola lingkungan VM. Penyebaran ke sumber daya VM tertentu paling cocok untuk skenario yang memerlukan kontrol langsung server VM, orkestrasi tingkat lanjut, atau infrastruktur warisan.
- stage: Deploy
displayName: Rolling Deploy to VMs
dependsOn: Build
condition: succeeded()
jobs:
- deployment: RollingDeploy
displayName: Rolling deploy to Ubuntu VMs
environment:
name: <environment-name>
resourceType: VirtualMachine
strategy:
rolling:
maxParallel: 1 #or 2 for parallel. For percentages, use x%
preDeploy:
steps:
- download: current
artifact: drop
- script: echo "Pre-deploy on $(hostname)"
deploy:
steps:
- script: |
echo "Unpacking Node.js app on $(hostname)"
sudo mkdir -p /opt/pipelines-javascript
sudo tar -xzf $(Pipeline.Workspace)/drop/$(Build.BuildId).tar.gz -C /opt/pipelines-javascript --strip-components=1
cd /opt/pipelines-javascript
echo "Installing production dependencies"
sudo npm ci --only=production
echo "Restarting Node.js service"
sudo systemctl restart pipelines-javascript
displayName: 'Extract, install, and restart Node.js service'
routeTraffic:
steps:
- script: echo "Routing traffic on $(hostname)"
postRouteTraffic:
steps:
- script: echo "Post-route health check on $(hostname)"
on:
failure:
steps:
- script: echo "Deployment failed on $(hostname)"
success:
steps:
- script: echo "Deployment succeeded on $(hostname)"
Mengakses keterlacakan alur di lingkungan
Tab Penyebaran lingkungan menyediakan keterlacakan lengkap penerapan dan item kerja dan riwayat penyebaran lintas alur untuk lingkungan.