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 2020 | Azure DevOps Server 2019
Gunakan Azure Pipelines untuk menyebarkan aplikasi web Anda secara otomatis ke Azure App Service pada setiap build yang berhasil. Azure Pipelines memungkinkan Anda membangun, menguji, dan menyebarkan dengan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) dengan menggunakan Azure DevOps.
Alur YAML didefinisikan dengan menggunakan file YAML di repositori Anda. Langkah adalah blok penyusun terkecil dari alur dan dapat menjadi skrip atau tugas (skrip yang dikemas sebelumnya). Pelajari tentang konsep utama dan komponen yang membentuk sebuah alur.
Anda menggunakan tugas Azure Web App (AzureWebApp
) untuk menyebarkan ke Azure App Service dalam pipeline Anda. Untuk skenario yang lebih rumit, seperti saat Anda perlu menggunakan parameter XML dalam penyebaran, Anda dapat menggunakan tugas AzureRmWebAppDeployment
penyebaran Azure App Service .
Prasyarat:
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Organisasi Azure DevOps. Buat akun gratis.
- Kemampuan untuk menjalankan pipeline pada agen yang dihosting Microsoft. Anda dapat membeli pekerjaan paralel atau meminta tingkat gratis.
- Aplikasi Azure App Service yang berfungsi dengan kode yang dihosting di GitHub atau Azure Repos.
1. Buat alur untuk tumpukan Anda
Contoh kode di bagian ini mengasumsikan bahwa Anda menyebarkan aplikasi web ASP.NET. Anda dapat menyesuaikan instruksi untuk kerangka kerja lain.
Pelajari lebih lanjut terkait dukungan ekosistem Azure Pipelines.
Masuk ke organisasi Azure DevOps Anda dan buka proyek Anda.
Buka Alur dan pilih Alur Baru.
Saat diminta, pilih lokasi kode sumber Anda: Azure Repos Git atau GitHub.
Anda dapat diarahkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda.
Saat daftar repositori muncul, pilih repositori Anda.
Anda mungkin diarahkan ke GitHub untuk menginstal aplikasi Azure Pipelines. Jika demikian, pilih Setujui & instal.
Saat tab Konfigurasi muncul, pilih ASP.NET Core.
Ketika alur baru Anda muncul, periksa YAML untuk melihat apa yang dilakukannya. Saat Anda siap, pilih Simpan dan jalankan.
2. Tambahkan tugas penyebaran
Pilih akhir file YAML, lalu pilih Perlihatkan asisten.
Gunakan Asisten tugas untuk menambahkan tugas aplikasi web Azure .
Atau, Anda dapat menambahkan tugas deploy Azure App Service
AzureRmWebAppDeployment
.Pilih langganan Azure Anda. Pastikan untuk memilih Otorisasi untuk mengotorisasi koneksi Anda. Proses otorisasi membuat koneksi layanan yang diperlukan.
Pilih Jenis aplikasi, Nama aplikasi, dan Tumpukan Runtime berdasarkan aplikasi App Service Anda. YAML lengkap Anda akan terlihat mirip dengan kode berikut.
variables: buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2 inputs: command: 'publish' publishWebProjects: true - task: AzureWebApp@1 inputs: azureSubscription: '<service-connection-name>' appType: 'webAppLinux' appName: '<app-name>' package: '$(System.DefaultWorkingDirectory)/**/*.zip'
-
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.
-
Contoh: Menyebarkan aplikasi .NET
Untuk menyebarkan paket web .zip (misalnya, dari aplikasi web ASP.NET) ke aplikasi web Azure, gunakan cuplikan berikut untuk menyebarkan build ke aplikasi.
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
- task: AzureWebApp@1
inputs:
azureSubscription: '<service-connection-name>'
appType: 'webAppLinux'
appName: '<app-name>'
package: '$(System.DefaultWorkingDirectory)/**/*.zip'
-
azureSubscription
: Langganan Azure Anda. -
appType
: Jenis aplikasi web Anda. -
appName
: Nama layanan aplikasi Anda yang ada. -
package
: Jalur file ke paket atau folder yang berisi konten App Service Anda. Penggunaan wildcard didukung.
Contoh: Menyebarkan ke aplikasi virtual
Secara default, penyebaran Anda terjadi pada aplikasi akar di aplikasi web Azure. Anda dapat menyebarkan ke aplikasi virtual tertentu dengan menggunakan properti tugas penyebaran Azure App Service VirtualApplication
AzureRmWebAppDeployment
:
- task: AzureRmWebAppDeployment@4
inputs:
VirtualApplication: '<name of virtual application>'
-
VirtualApplication
: Nama aplikasi virtual yang dikonfigurasi di portal Microsoft Azure. Untuk informasi selengkapnya, lihat Mengonfigurasi aplikasi App Service di portal Azure .
Contoh: 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>'
appType: webAppLinux
WebAppName: '<app-name>'
ResourceGroupName: '<name of resource group>'
SourceSlot: staging
SwapWithProduction: true
-
azureSubscription
: Langganan Azure Anda. -
appType
: (Opsional) GunakanwebAppLinux
untuk menyebarkan ke aplikasi web di Linux. -
appName
: Nama layanan aplikasi Anda yang ada. -
deployToSlotOrASE*
:Boolean. Menyebarkan ke slot penyebaran yang sudah ada atau Lingkungan Azure App Service. -
resourceGroupName
: Nama grup sumber daya. Diperlukan jikadeployToSlotOrASE
benar. -
slotName
: Nama slot, yang secara default adalahproduction
. Diperlukan jikadeployToSlotOrASE
benar. -
package
: Jalur file ke paket atau folder yang berisi konten App Service Anda. Penggunaan wildcard didukung. -
SourceSlot
: Slot yang dikirim ke produksi ketikaSwapWithProduction
bernilai benar. -
SwapWithProduction
:Boolean. Tukar lalu lintas slot sumber dengan slot produksi.
Contoh: 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'
Contoh: Menyebarkan secara kondisional
Untuk menyebarkan secara kondisional di YAML, Anda dapat menggunakan salah satu teknik berikut:
- Pisahkan langkah-langkah penyebaran menjadi tugas terpisah, dan tambahkan kondisi ke tugas tersebut.
- Tambahkan kondisi ke langkah tersebut.
Contoh berikut menunjukkan cara menggunakan kondisi langkah untuk menyebarkan hanya build yang berasal dari cabang utama saja:
- task: AzureWebApp@1
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
inputs:
azureSubscription: '<service-connection-name>'
appName: '<app-name>'
Untuk mempelajari kondisi lebih lanjut, lihat Menentukan kondisi.
Contoh: Menyebarkan menggunakan Web Deploy
Tugas penerapan Azure App Service AzureRmWebAppDeployment
dapat menerapkan 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@4
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 AzureWebApp
adalah cara paling sederhana untuk menyebarkan ke aplikasi web Azure. Secara default, penyebaran Anda terjadi pada aplikasi akar di aplikasi web Azure.
Tugas Penyebaran Azure App Service (AzureRmWebAppDeployment
) 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 penggantian 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, tergantung pada alur Anda, mungkin ada ketidakcocokan antara tempat paket web bawaan Anda disimpan dan di mana tugas penyebaran mencarinya. Misalnya, AzureWebApp
tugas mengambil paket web untuk penyebaran. Tugas AzureWebApp
mungkin terlihat di $(System.DefaultWorkingDirectory)/**/*.zip
. Jika paket web didepositkan di tempat lain, ubah nilai package
.
Mengapa saya mendapatkan pesan "Terbitkan menggunakan opsi webdeploy hanya didukung saat menggunakan agen Windows"?
Kesalahan ini terjadi dalam AzureRmWebAppDeployment
tugas saat Anda mengonfigurasi tugas untuk disebarkan menggunakan Web Deploy, tetapi agen Anda tidak menjalankan Windows. Verifikasi bahwa YAML Anda menyertakan sesuatu yang mirip dengan kode berikut:
pool:
vmImage: windows-latest
Mengapa Web Deploy tidak berfungsi saat saya menonaktifkan autentikasi dasar?
Untuk informasi pemecahan masalah agar autentikasi Microsoft Entra ID berfungsi dengan tugas AzureRmWebAppDeployment
, silakan lihat Saya tidak dapat Menyebarkan Web ke Azure App Service saya menggunakan autentikasi Microsoft Entra ID dari agen Windows saya.
Konten terkait
- Melakukan kustomisasi Alur Azure DevOps Anda.