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 Server 2022
Artikel ini menjelaskan cara menggunakan Azure Pipelines untuk membuat, menguji, dan menyebarkan aplikasi web Anda secara otomatis ke Azure App Service. Anda dapat menyiapkan alur integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang berjalan setiap kali Anda memeriksa perubahan kode ke cabang repositori yang ditunjuk.
Alur terdiri dari tahapan, pekerjaan, dan langkah-langkah. Langkah adalah blok penyusun terkecil dari alur dan dapat menjadi skrip atau tugas, yang merupakan skrip yang dikemas sebelumnya. Untuk informasi selengkapnya tentang konsep dan komponen utama yang membentuk alur, lihat Konsep Alur Azure Utama.
Anda dapat menggunakan tugas Azure Web App di alur Anda untuk disebarkan ke App Service. Untuk skenario yang lebih kompleks, seperti menggunakan parameter XML dalam penyebaran, Anda dapat menggunakan tugas penyebaran Azure App Service .
Prasyarat
Aplikasi Azure App Service yang berfungsi dengan kode yang dihosting di GitHub atau Azure Repos. Anda dapat menggunakan salah satu artikel mulai cepat berikut untuk membuat aplikasi sampel:
Organisasi Azure DevOps yang memiliki kemampuan untuk menjalankan alur pada agen yang dihosting Microsoft. Anda perlu meminta tingkat gratis pekerjaan paralel atau membeli pekerjaan paralel. Untuk informasi selengkapnya, lihat Mengonfigurasi dan Membayar Pekerjaan Paralel.
Proyek yang dibuat di organisasi Azure DevOps tempat Anda memiliki izin untuk membuat dan mengotorisasi alur dan koneksi layanan Azure. Membuat proyek di Azure DevOps.
Penting
Selama prosedur GitHub, Anda mungkin diminta untuk membuat koneksi layanan GitHub atau dialihkan ke GitHub untuk masuk, menginstal aplikasi Azure Pipelines GitHub, mengotorisasi Azure Pipelines, atau mengautentikasi ke organisasi GitHub. Ikuti instruksi di layar untuk menyelesaikan proses yang diperlukan. Untuk informasi selengkapnya, lihat Akses ke repositori GitHub.
Membuat alur
Contoh kode di bagian ini adalah untuk aplikasi web ASP.NET Core. Anda dapat menyesuaikan instruksi untuk kerangka kerja lain. Untuk informasi selengkapnya tentang dukungan ekosistem Azure Pipelines, lihat Contoh ekosistem Azure Pipelines.
Tentukan alur dengan membuat file YAML azure-pipelines.yml di repositori kode Anda.
- Di menu navigasi kiri untuk proyek Azure DevOps Anda, pilih Alur.
- Pada halaman Alur , pilih Alur baru, atau Buat alur jika alur ini adalah yang pertama dalam proyek.
- Pada layar Di mana kode Anda , pilih lokasi kode sumber Anda, baik Azure Repos Git atau GitHub. Jika perlu, masuk ke GitHub.
- Pada layar Pilih repositori , pilih repositori kode Anda.
- Pada layar Konfigurasikan alur Anda, pilih Alur pemula.
Tambahkan tugas .NET Core (DotNetCoreCLI@2) ke alur, dan buat dan terbitkan aplikasi Anda.
- Pada layar Tinjau YAML alur Anda , hapus semua kode setelah
steps:baris. - Pilih akhir file, lalu pilih Perlihatkan asisten di sebelah kanan.
- Di bawah Tugas, pilih .NET Core.
- Pada layar konfigurasi .NET Core , di bawah Koneksi Azure Resource Manager, pilih langganan Azure Anda, lalu pilih Otorisasi untuk membuat koneksi layanan yang diperlukan.
- Di bawah Perintah, pilih terbitkan.
- Pastikan bahwa kotak centang Terbitkan proyek web dan proyek yang diterbitkan Zip dipilih, lalu pilih Tambahkan.
- Tugas muncul di alur YAML Anda. Tinjau kode YAML untuk melihat apa yang dilakukannya. Setelah siap, pilih Simpan dan jalankan, lalu pilih Simpan dan jalankan lagi.
- Pada layar Ringkasan build, di bawah Pekerjaan, pilih tautan Izin yang diperlukan . Pada layar Pemeriksaan , pilih Izinkan, lalu pilih Izinkan lagi. Memberikan izin di sini mengizinkan penggunaan koneksi layanan yang Anda otorisasi untuk semua eksekusi alur ini.
Alur menerbitkan file ZIP penyebaran sebagai artefak Azure untuk tugas penyebaran yang akan digunakan pada langkah berikutnya.
Menambahkan tugas penyebaran
Setelah alur berhasil dijalankan, tambahkan tugas penyebaran.
- Pada layar Ringkasan eksekusi alur, pilih ikon Tindakan lainnya di kanan atas, lalu pilih Edit alur.
- Pilih akhir file YAML, dan pilih Perlihatkan asisten jika daftar Tugas tidak ditampilkan.
- Di daftar Tugas , cari dan pilih tugas Azure Web App . Atau, Anda dapat menggunakan tugas penyebaran Azure App Service .
- Pada layar konfigurasi Azure Web App , di bawah Langganan Azure, pilih koneksi layanan yang sama dengan yang Anda siapkan untuk langkah sebelumnya. Anda tidak perlu mengotorisasi ulang koneksi ini.
- Untuk Jenis aplikasi, pilih Azure Web App di Linux atau Azure Web App di Windows, bergantung pada kode Anda.
- Untuk Nama aplikasi, pilih atau masukkan nama aplikasi App Service Anda.
- Pilih Tambahkan.
- Pilih Validasi dan simpan, lalu pilih Simpan.
- Pilih Jalankan, lalu pilih Jalankan lagi.
Alur YAML lengkap akan terlihat seperti kode berikut:
trigger:
- <branch-specification>
pool:
vmImage: <agent-specification>
steps:
- task: DotNetCoreCLI@2
inputs:
azureSubscription: '<your-authorized-service-connection>'
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<your-authorized-service-connection>'
appType: 'webApp'
appName: '<your-app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
deploymentMethod: 'auto'
-
azureSubscription: Nama koneksi layanan resmi ke langganan Azure Anda. -
appName: Nama aplikasi Anda yang sudah ada. -
package: Jalur file ke paket atau folder yang berisi konten App Service Anda. Penggunaan wildcard didukung.
Examples
Bagian berikut membahas pembuatan berbagai jenis alur build dan rilis.
Menyebarkan ke aplikasi virtual
Tugas Azure Web App disebarkan ke aplikasi akar di aplikasi web Azure. Anda dapat menyebarkan ke aplikasi virtual tertentu dengan menggunakan VirtualApplication properti tugas penyebaran Azure App Service .
- task: AzureRmWebAppDeployment@5
inputs:
VirtualApplication: '<name of virtual application>'
VirtualApplication adalah nama aplikasi virtual yang dikonfigurasi di portal Microsoft Azure. Untuk informasi selengkapnya, lihat Mengonfigurasi aplikasi App Service di portal Microsoft Azure.
Menyebarkan ke slot
Contoh berikut menunjukkan cara menyebarkan ke slot penahapan, lalu bertukar ke slot produksi:
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: webAppLinux
appName: '<app-name>'
deployToSlotOrASE: true
resourceGroupName: '<name of resource group>'
slotName: staging
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- task: AzureAppServiceManage@0
inputs:
azureSubscription: '<service-connection-name>'
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription: Koneksi layanan Azure Anda. -
appType: Jenis aplikasi opsional sepertiwebAppLinuxuntuk menyebarkan ke aplikasi web di Linux. -
appName: Nama aplikasi Anda yang sudah ada. -
deployToSlotOrASE:Boolean. Apakah akan menyebarkan ke slot penyebaran yang ada atau lingkungan App Service. -
resourceGroupName: Nama grup sumber daya yang akan disebarkan, diperlukan jikadeployToSlotOrASEbenar. -
slotName: Nama slot yang akan disebarkan, diperlukan jikadeployToSlotOrASEbenar. Secara default menjadiproduction. -
package: Jalur file ke paket atau folder yang berisi konten aplikasi Anda. Penggunaan wildcard didukung. -
SourceSlot: Slot yang dikirim ke produksi ketikaSwapWithProductionbernilai benar. -
SwapWithProduction:Boolean. Apakah akan menukar lalu lintas slot sumber dengan produksi.
Menyebarkan ke beberapa aplikasi web
Anda dapat menggunakan pekerjaan dalam file YAML Untuk menyiapkan alur penyebaran. Dengan menggunakan tugas-tugas, Anda dapat mengontrol urutan penyebaran ke beberapa aplikasi web.
jobs:
- job: buildandtest
pool:
vmImage: ubuntu-latest
steps:
# publish an artifact called drop
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: drop
# deploy to Azure Web App staging
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<staging-app-name>'
deployToSlotOrASE: true
resourceGroupName: <group-name>
slotName: 'staging'
package: '$(Build.ArtifactStagingDirectory)/**/*.zip'
- job: deploy
dependsOn: buildandtest
condition: succeeded()
pool:
vmImage: ubuntu-latest
steps:
# download the artifact drop from the previous job
- task: DownloadPipelineArtifact@2
inputs:
source: 'current'
artifact: 'drop'
path: '$(Pipeline.Workspace)'
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: <app type>
appName: '<production-app-name>'
resourceGroupName: <group-name>
package: '$(Pipeline.Workspace)/**/*.zip'
Menyebarkan secara kondisional
Untuk menyebarkan secara kondisional di YAML, gunakan salah satu teknik berikut:
- Tambahkan kondisi ke langkah tersebut.
- Pisahkan langkah-langkah penyebaran menjadi tugas terpisah, dan tambahkan kondisi ke tugas tersebut.
Contoh berikut menunjukkan cara menggunakan kondisi langkah untuk menyebarkan hanya build yang berhasil yang berasal dari cabang utama:
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
Untuk informasi selengkapnya tentang kondisi, lihat Menentukan kondisi.
Menyebarkan menggunakan Web Deploy
Tugas penyebaran Azure App Service dapat disebarkan ke App Service dengan menggunakan Web Deploy.
trigger:
- main
pool:
vmImage: windows-latest
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration)'
zipAfterPublish: true
- task: AzureRmWebAppDeployment@5
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-connection-name>'
appType: 'webApp'
WebAppName: '<app-name>'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
Tanya jawab umum
Apa perbedaan antara tugas AzureWebApp dan AzureRmWebAppDeployment?
Tugas Azure Web App adalah cara paling sederhana untuk menyebarkan ke aplikasi web Azure. Secara default, Anda menyebarkan aplikasi akar di aplikasi web Azure.
Tugas penyebaran Azure App Service dapat menangani lebih banyak skenario kustom, seperti:
- Sebarkan dengan Web Deploy, jika Anda biasanya menggunakan proses penyebaran dengan Internet Information Services (IIS).
- Menyebarkan ke aplikasi-aplikasi virtual.
- Sebarkan ke jenis aplikasi lain, seperti aplikasi kontainer, aplikasi fungsi, WebJobs, atau API dan aplikasi seluler.
Catatan
Tugas Transformasi File terpisah juga mendukung transformasi file dan substitusi variabel untuk digunakan di Azure Pipelines. Anda dapat menggunakan tugas Transformasi File untuk menerapkan transformasi file dan substitusi variabel pada file konfigurasi dan parameter apa pun.
Mengapa saya mendapatkan pesan "Paket App Service tidak valid atau jalur folder yang disediakan"?
Di alur YAML, mungkin ada ketidakcocokan antara tempat paket web bawaan Anda disimpan dan di mana tugas penyebaran mencarinya. Tugas AzureWebApp default mengambil paket web untuk penyebaran dari $(System.DefaultWorkingDirectory)/**/*.zip. Jika paket web didepositkan di tempat lain, ubah nilai package parameter.
Mengapa saya mendapatkan pesan "Terbitkan menggunakan opsi webdeploy hanya didukung saat menggunakan agen Windows"?
Kesalahan ini terjadi dalam tugas AzureRmWebAppDeployment saat Anda mengonfigurasi tugas untuk menyebarkan menggunakan Web Deploy, tetapi agen Anda tidak menjalankan Windows. Verifikasi bahwa parameter YAML vmImage Anda menentukan Windows.
pool:
vmImage: windows-latest
Mengapa Web Deploy tidak berfungsi saat saya menonaktifkan autentikasi dasar?
Untuk informasi pemecahan masalah tentang mendapatkan autentikasi ID Microsoft Entra agar berfungsi dengan tugas penyebaran Azure App Service , lihat Saya tidak dapat Menyebarkan Web ke Azure App Service saya menggunakan autentikasi ID Microsoft Entra dari agen Windows saya.