Azure App Service Menyebarkan tugas
| Azure DevOps Services Azure DevOps Server 2020 | Azure DevOps Server 2019
Gunakan tugas ini untuk menyebarkan ke berbagai App Services di Azure. Tugas ini berfungsi pada agen lintas platform yang menjalankan Windows, Linux, atau Mac dan menggunakan beberapa teknologi penyebaran mendasar yang berbeda.
Tugas ini berfungsi untuk aplikasi web berbasis ASP.NET, ASP.NET Core, PHP, Java, Python, Go, dan Node.js .
Tugas dapat digunakan untuk menyebarkan ke berbagai Azure App Services seperti:
- Web Apps di Windows dan Linux
- Web Apps untuk Kontainer
- Aplikasi Fungsi di Windows dan Linux
- Aplikasi Fungsi untuk Kontainer
- WebJobs
- Aplikasi yang dikonfigurasi di Azure App Service Environments
Prasyarat untuk tugas
Prasyarat berikut harus disiapkan di komputer target agar tugas berfungsi dengan benar.
App Service instans. Tugas ini digunakan untuk menyebarkan proyek Aplikasi Web atau proyek Azure Function ke instans Azure App Service yang sudah ada, yang harus ada sebelum tugas berjalan. Instans App Service dapat dibuat dari portal Azure dan dikonfigurasi di sana. Atau, tugas Azure PowerShell dapat digunakan untuk menjalankan skrip AzureRM PowerShell untuk menyediakan dan mengonfigurasi Aplikasi Web.
Langganan Azure. Untuk menyebarkan ke Azure, langganan Azure harus ditautkan ke alur. Tugas ini tidak berfungsi dengan koneksi layanan Azure Classic, dan tidak akan mencantumkan koneksi ini dalam pengaturan tugas.
| Parameter | Deskripsi |
|---|---|
ConnectionType(Tipe koneksi) | (Diperlukan) Pilih jenis koneksi layanan yang akan digunakan untuk menyebarkan Aplikasi Web. Nilai default: AzureRM |
Terhubung(Langganan Azure) | (Diperlukan jika ConnectionType = AzureRM) Pilih langganan Azure Resource Manager untuk penyebaran. Alias argumen: azureSubscription |
PublishProfilePath(Terbitkan jalur profil) | (Diperlukan jika ConnectionType = PublishProfile) Jalur ke file yang berisi informasi penerbitan. Nilai default: $(System.DefaultWorkingDirectory)/**/*.pubxml |
PublishProfilePassword(Terbitkan kata sandi profil) | (Diperlukan jika ConnectionType = PublishProfile) Kata sandi untuk file profil. Pertimbangkan untuk menyimpan kata sandi dalam variabel rahasia dan gunakan variabel tersebut di sini. Contoh: $(Password) |
WebAppKind(jenis App Service) | (Diperlukan jika ConnectionType = AzureRM) Pilih dari Aplikasi Web Di Windows, Aplikasi Web Di Linux, Aplikasi Web untuk Kontainer, Aplikasi Fungsi, Aplikasi Fungsi di Linux, Aplikasi Fungsi untuk Kontainer dan Aplikasi Seluler Nilai default: webApp Alias argumen: appType |
WebAppName(nama App Service) | (Diperlukan jika ConnectionType = AzureRM) Masukkan atau pilih nama Azure App Service yang sudah ada. Hanya App Services berdasarkan jenis aplikasi yang dipilih yang akan dicantumkan. |
DeployTo(Sebarkan ke Slot atau lingkungan App Service) | (Opsional) Pilih opsi untuk menyebarkan ke slot penyebaran yang ada atau lingkungan Azure App Service. Untuk kedua target, tugas memerlukan nama Grup Sumber Daya. Jika target penyebaran adalah slot, secara default penyebarannya adalah ke slot produksi . Nama slot lain yang ada dapat disediakan. Jika target penyebaran adalah lingkungan Azure App Service, biarkan nama slot sebagai produksi dan tentukan hanya nama Grup Sumber Daya. Nilai default: salah Alias argumen: deployToSlotOrASE |
ResourceGroupName(Grup sumber daya) | (Diperlukan jika DeployToSlotOrASEFlag = true) Nama Grup Sumber Daya diperlukan saat target penyebaran adalah slot penyebaran atau lingkungan App Service. Masukkan atau pilih Grup Sumber Daya Azure yang berisi Azure App Service yang ditentukan di atas. |
SlotName(Slot) | (Diperlukan, jika DeployToSlotOrASEFlag = true) Masukkan atau pilih slot yang ada selain slot produksi . Nilai default: produksi |
DockerNamespace(Registri atau Namespace) | (Diperlukan jika WebAppKind = webAppContainer atau WebAppkind = functionAppContainer) Nama domain tingkat atas yang unik secara global untuk registri atau namespace layanan spesifik Anda. Catatan: nama gambar yang sepenuhnya memenuhi syarat akan memiliki format: {registri atau namespace}/{repository}:{tag}. Misalnya, myregistry.azurecr.io/nginx:latest |
DockerRepository(Gambar) | (Diperlukan jika WebAppKind = webAppContainer atau WebAppkind = functionAppContainer) Nama repositori tempat gambar kontainer disimpan. Catatan: nama gambar yang sepenuhnya memenuhi syarat akan memiliki format: {registri atau namespace}/{repository}:{tag}. Misalnya, myregistry.azurecr.io/nginx:latest |
DockerImageTag(Tag) | (Opsional) Tag bersifat opsional, tetapi merupakan mekanisme yang digunakan registri untuk menerapkan informasi versi ke gambar Docker. Catatan: nama gambar yang sepenuhnya memenuhi syarat akan memiliki format: {registri atau namespace}/{repository}:{tag}. Misalnya, myregistry.azurecr.io/nginx:latest |
VirtualApplication(Aplikasi virtual) | (Opsional) Tentukan nama Aplikasi Virtual yang telah dikonfigurasi dalam portal Azure. Opsi ini tidak diperlukan untuk penyebaran ke akar situs web. Aplikasi Virtual harus telah dikonfigurasi sebelum penyebaran proyek web. |
Package(Paket atau folder) | (Diperlukan jika ConnectionType = PublishProfile atau WebAppKind = webApp, apiApp, functionApp, mobileApp, webAppLinux, atau functionAppLinux) Jalur file ke paket, atau ke folder yang berisi konten App Service yang dihasilkan oleh MSBuild, atau ke file zip atau perang terkompresi. Variabel build atau variabel rilis) dan wildcard didukung. Misalnya, $(System.DefaultWorkingDirectory)/**/*.zip atau $(System.DefaultWorkingDirectory)/**/*.warNilai default: $(System.DefaultWorkingDirectory)/**/*.zip Alias argumen: packageForLinux |
RuntimeStack(Tumpukan Runtime) | (Opsional) Pilih kerangka kerja dan versi. Ini untuk WebApp untuk Linux. |
RuntimeStackFunction(Tumpukan Runtime) | (Opsional) Pilih kerangka kerja dan versi. Ini untuk Aplikasi Fungsi di Linux. |
StartupCommand(Perintah startup) | (Opsional) Masukkan perintah start up. |
ScriptType(Jenis skrip penyebaran) | (Opsional) Sesuaikan penyebaran dengan menyediakan skrip yang berjalan pada Azure App Service setelah penyebaran berhasil. Pilih skrip penyebaran sebaris atau jalur dan nama file skrip. Pelajari selengkapnya. |
InlineScript(Skrip Sebaris) | (Diperlukan jika ScriptType == Skrip Sebaris) Skrip yang akan dijalankan. Anda dapat memberikan perintah penyebaran Anda di sini, satu perintah per baris. Lihat contoh ini. |
ScriptPath(Jalur skrip penyebaran) | (Diperlukan jika ScriptType == Jalur File) Jalur dan nama skrip yang akan dijalankan. |
Web(Hasilkan parameter web.config untuk aplikasi Python, Node.js, Go, dan Java) | (Opsional) web.config standar akan dihasilkan dan disebarkan ke Azure App Service jika aplikasi tidak memilikinya. Nilai dalam web.config dapat diedit dan akan bervariasi berdasarkan kerangka kerja aplikasi. Misalnya untuk aplikasi Node.js, web.config akan memiliki file startup dan nilai modul iis_node. Fitur edit ini hanya untuk file web.config yang dihasilkan. Pelajari selengkapnya. |
AppSettings(Pengaturan aplikasi) | (Opsional) Edit pengaturan Aplikasi aplikasi web menggunakan sintaks -nilai kunci. Nilai yang berisi spasi harus diapit dalam tanda kutip ganda. Contoh: -Port 5000 -RequestTimeout 5000 dan -WEBSITE_TIME_ZONE "Waktu Standar Timur". Untuk menyediakan dua nilai kunci atau lebih, nilai kunci harus dipisahkan oleh spasi. Contoh: -key1 "Value1" -Key2 "Value2" |
ConfigurationSettings(Pengaturan konfigurasi) | (Opsional) Edit pengaturan konfigurasi aplikasi web menggunakan sintaks -nilai kunci. Nilai yang berisi spasi harus diapit dalam tanda kutip ganda. Contoh: -phpVersion 5.6 -linuxFxVersion: node|6.11 |
UseWebDeploy(Pilih metode penyebaran) | (Opsional) Jika tidak dicentang, tugas secara otomatis mendeteksi metode penyebaran terbaik berdasarkan jenis aplikasi, format paket, dan parameter lainnya. Pilih opsi untuk melihat metode penyebaran yang didukung, dan pilih salah satu untuk menyebarkan aplikasi Anda. Alias argumen: enableCustomDeployment |
DeploymentType(Metode penyebaran) | (Diperlukan jika UseWebDeploy == true) Pilih metode penyebaran untuk aplikasi. Nilai default: webDeploy |
TakeAppOfflineFlag(Ambil Aplikasi Offline) | (Opsional) Pilih opsi ini untuk mengambil Azure App Service offline dengan menempatkan file app_offline.htm di direktori akar sebelum operasi sinkronisasi dimulai. File akan dihapus setelah sinkronisasi berhasil diselesaikan. Nilai default: benar |
SetParametersFile(File SetParameters) | (Opsional) lokasi file SetParameters.xml yang akan digunakan. |
RemoveAdditional(Hapus file tambahan di tujuan) | (Opsional) Pilih opsi untuk menghapus file pada Azure App Service yang tidak memiliki file yang cocok di paket atau folder App Service. Catatan: Ini juga akan menghapus semua file yang terkait dengan ekstensi apa pun yang diinstal pada Azure App Service ini. Untuk mencegah hal ini, atur kotak centang Kecualikan file dari folder App_Data . Nilai default: salah |
ExcludeFiles(Kecualikan file dari folder App_Data) | (Opsional) Pilih opsi untuk mencegah file di folder App_Data disebarkan ke atau dihapus dari Azure App Service. Nilai default: benar |
AdditionalArguments(Argumen tambahan) | (Opsional) Argumen Web Deploy tambahan mengikuti sintaks -key:value. Ini akan diterapkan saat menyebarkan Azure App Service. Contoh: -disableLink:AppPoolExtension -disableLink:ContentExtension.Contoh lainnya. Nilai default: -retryAttempts:6 -retryInterval:10000 |
RenameFilesFlag(Ganti nama file terkunci) | (Opsional) Pilih opsi ini untuk mengaktifkan bendera MSDeploy MSDEPLOY_RENAME_LOCKED_FILES=1 di pengaturan aplikasi Azure App Service. Ketika diatur, ini memungkinkan MSDeploy untuk mengganti nama file yang dikunci selama penyebaran aplikasi. Nilai default: benar |
XmlTransformation(Transformasi XML) | (Opsional) Transformasi konfigurasi akan dijalankan untuk .Release.config dan .{ EnvironmentName}.config pada *file .config . Transformasi konfigurasi berjalan sebelum substitusi variabel. Transformasi XML hanya didukung untuk platform Windows. Pelajari selengkapnya. Nilai default: salah Alias argumen: enableXmlTransform |
XmlVariable(Penggantian variabel XML) | (Opsional) Variabel yang ditentukan dalam alur build atau rilis akan dicocokkan dengan entri kunci atau nama di bagian appSettings, applicationSettings, dan connectionStrings dari file konfigurasi apa pun dan file parameters.xml . Substitusi variabel berjalan setelah transformasi konfigurasi. Catatan: jika variabel yang sama didefinisikan dalam alur rilis dan dalam tahap, variabel tahap akan menggantikan variabel alur rilis. Pelajari lebih lanjut Nilai default: salah Alias argumen: enableXmlVariableSubstitution |
JSONFiles(Substitusi variabel JSON) | (Opsional) Berikan daftar file JSON yang dipisahkan baris baru untuk menggantikan nilai variabel. Nama file harus relatif terhadap folder akar. Untuk mengganti variabel JSON yang berlapis atau hierarkis, tentukan variabel tersebut menggunakan ekspresi JSONPath. Misalnya, untuk mengganti nilai ConnectionString dalam sampel di bawah ini, tentukan variabel bernama Data.DefaultConnection.ConnectionString dalam alur build atau rilis (atau tahap alur rilis). { "Data": { "DefaultConnection": { "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB; Trusted_Connection=True" } } } Substitusi variabel berjalan setelah transformasi konfigurasi. Catatan: variabel alur build dan rilis dikecualikan dari substitusi. Pelajari selengkapnya. |
Contoh YAML ini disebarkan ke kontainer Azure Web App (Linux).
pool:
vmImage: ubuntu-latest
variables:
azureSubscriptionEndpoint: Contoso
DockerNamespace: contoso.azurecr.io
DockerRepository: aspnetcore
WebAppName: containersdemoapp
steps:
- task: AzureRMWebAppDeployment@4
displayName: Azure App Service Deploy
inputs:
appType: webAppContainer
ConnectedServiceName: $(azureSubscriptionEndpoint)
WebAppName: $(WebAppName)
DockerNamespace: $(DockerNamespace)
DockerRepository: $(DockerRepository)
DockerImageTag: $(Build.BuildId)
Berikut adalah contoh lain yang menyebarkan aplikasi web ke Windows App Service di seluruh slot penyebaran.
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- stage: DeployDevStage
displayName: 'Deploy App to Dev Slot'
jobs:
- job: DeployApp
displayName: 'Deploy App'
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: 'drop'
targetPath: '$(System.DefaultWorkingDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'Fabrikam Azure Subscription - PartsUnlimited'
appType: 'webApp'
WebAppName: 'partsunlimited'
deployToSlotOrASE: true
ResourceGroupName: 'rgPartsUnlimited'
SlotName: 'Dev'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
- stage: DeployStagingStage
displayName: 'Deploy App to Staging Slot'
dependsOn: DeployDevStage
jobs:
- job: DeployApp
displayName: 'Deploy App'
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: 'drop'
targetPath: '$(System.DefaultWorkingDirectory)'
- task: AzureRmWebAppDeployment@4
inputs:
appType: webApp
ConnectionType: AzureRM
ConnectedServiceName: 'Fabrikam Azure Subscription - PartsUnlimited'
ResourceGroupName: 'rgPartsUnlimited'
WebAppName: 'partsunlimited'
Package: '$(System.DefaultWorkingDirectory)/**/*.zip'
deployToSlotOrASE: true
SlotName: 'staging'
Untuk menyebarkan ke jenis aplikasi tertentu, atur
appTypeke salah satu nilai yang diterima berikut:webApp(Aplikasi Web di Windows),webAppLinux(Aplikasi Web di Linux),webAppContainer(Aplikasi Web untuk Kontainer - Linux),functionApp(Aplikasi Fungsi di Windows),functionAppLinux(Aplikasi Fungsi di Linux),functionAppContainer(Aplikasi Fungsi untuk Kontainer - Linux),apiApp(Aplikasi API),mobileApp(Aplikasi Seluler). Jika tidak disebutkan,webAppdiambil sebagai nilai default.Untuk mengaktifkan opsi penyebaran tingkat lanjut, tambahkan parameter
enableCustomDeployment: truedan sertakan parameter di bawah ini sesuai kebutuhan.# deploymentMethod: 'runFromPackage' # supports zipDeploy as well # appOffline: boolean # Not applicable for 'runFromPackage' # setParametersFile: string # removeAdditionalFilesFlag: boolean # additionalArguments: string
Variabel Output
- URL yang Dihosting Aplikasi Web: Berikan nama, seperti
FabrikamWebAppURL, untuk variabel yang diisi dengan URL yang dihosting Azure App Service. Variabel dapat digunakan sebagai $(variableName. AppServiceApplicationUrl), misalnya$(FabrikamWebAppURL.AppServiceApplicationUrl), untuk merujuk ke URL Azure App Service yang dihosting dalam tugas berikutnya.
Catatan penggunaan
- Tugas ini hanya berfungsi dengan API Azure Resource Manager.
- Untuk mengabaikan kesalahan SSL, tentukan variabel bernama
VSTS_ARM_REST_IGNORE_SSL_ERRORSdengan nilaitruedalam alur rilis. - Untuk aplikasi .NET yang menargetkan Aplikasi Web di Windows, hindari kegagalan penyebaran dengan kesalahan
ERROR_FILE_IN_USEdengan memastikan bahwa pengaturan Ganti Nama file terkunci dan Ambil Aplikasi Offline diaktifkan. Untuk penyebaran waktu henti nol, gunakan opsi pertukaran slot. - Saat menyebarkan ke App Service yang memiliki Insights Aplikasi yang dikonfigurasi, dan Anda telah mengaktifkan Hapus file tambahan di tujuan, pastikan Anda juga mengaktifkan Kecualikan file dari folder App_Data untuk mempertahankan ekstensi Application insights dalam keadaan aman. Ini diperlukan karena pekerjaan web berkelanjutan Insights Aplikasi diinstal ke folder App_Data.
Contoh skrip pasca penyebaran
Tugas ini menyediakan opsi untuk menyesuaikan penyebaran dengan menyediakan skrip yang akan berjalan pada Azure App Service setelah artefak aplikasi berhasil disalin ke App Service. Anda dapat memilih untuk menyediakan skrip penyebaran sebaris atau jalur dan nama file skrip di folder artefak Anda.
Ini sangat berguna ketika Anda ingin memulihkan dependensi aplikasi Anda langsung pada App Service. Memulihkan paket untuk aplikasi Node, PHP, dan Python membantu menghindari batas waktu ketika dependensi aplikasi menghasilkan artefak besar yang disalin dari agen ke Azure App Service.
Contoh skrip penyebaran adalah:
@echo off
if NOT exist requirements.txt (
echo No Requirements.txt found.
EXIT /b 0
)
if NOT exist "$(PYTHON_EXT)/python.exe" (
echo Python extension not available >&2
EXIT /b 1
)
echo Installing dependencies
call "$(PYTHON_EXT)/python.exe" -m pip install -U setuptools
if %errorlevel% NEQ 0 (
echo Failed to install setuptools >&2
EXIT /b 1
)
call "$(PYTHON_EXT)/python.exe" -m pip install -r requirements.txt
if %errorlevel% NEQ 0 (
echo Failed to install dependencies>&2
EXIT /b 1
)
Metode penerapan
Beberapa metode penyebaran tersedia dalam tugas ini. Web Deploy (msdeploy.exe) adalah default. Untuk mengubah opsi penyebaran, perluas Opsi Penyebaran Tambahan dan aktifkan Pilih metode penyebaran untuk memilih dari opsi penyebaran berbasis paket tambahan.
Berdasarkan jenis Azure App Service dan agen, tugas memilih teknologi penyebaran yang sesuai. Berbagai teknologi penyebaran yang digunakan oleh tugas adalah:
Secara default, tugas mencoba memilih teknologi penyebaran yang sesuai berdasarkan jenis paket input, jenis App Service, dan sistem operasi agen.
Deteksi Otomatis Logika
Untuk agen berbasis windows.
| jenis App Service | Jenis paket | Metode penyebaran |
|---|---|---|
| WebApp di Linux atau Aplikasi Fungsi di Linux | Folder/Zip/jar Perang | Zip Deploy Penyebaran Perang |
| WebApp untuk Kontainer (Linux) atau Aplikasi Fungsi untuk Kontainer (Linux) | Memperbarui pengaturan Aplikasi | NA |
| WebApp di Windows, Aplikasi Fungsi di Windows, Aplikasi API, atau Aplikasi Seluler | Perang Jar Jenis paket MsBuild atau sebarkan ke aplikasi virtual Folder/Zip | Penyebaran Perang Zip Deploy Penyebaran web jika postDeploymentScript == true, Zip Deploy lainnya, Jalankan Dari Paket |
Pada agen non-Windows (untuk jenis App Service apa pun), tugas bergantung pada API REST Kudu untuk menyebarkan aplikasi.
Penyebaran web
Web Deploy (msdeploy.exe) dapat digunakan untuk menyebarkan Aplikasi Web di Windows atau Aplikasi Fungsi ke Azure App Service menggunakan agen Windows. Web Deploy kaya fitur dan menawarkan opsi seperti:
Ganti nama file yang dikunci: Ganti nama file apa pun yang masih digunakan oleh server web dengan mengaktifkan bendera msdeploy MSDEPLOY_RENAME_LOCKED_FILES=1 di pengaturan Azure App Service. Opsi ini, jika diatur, memungkinkan msdeploy untuk mengganti nama file yang dikunci selama penyebaran aplikasi.
Hapus file tambahan di tujuan: Menghapus file di Azure App Service yang tidak memiliki file yang cocok dalam paket atau folder artefak App Service sedang disebarkan.
Kecualikan file dari folder App_Data: Mencegah file di folder App_Data (dalam paket/folder artefak yang sedang disebarkan) disebarkan ke Azure App Service
Argumen Web Deploy tambahan: Argumen yang akan diterapkan saat menyebarkan Azure App Service. Contoh:
-disableLink:AppPoolExtension -disableLink:ContentExtension. Untuk contoh pengaturan operasi Web Deploy lainnya, lihat Pengaturan Operasi Penyebaran Web.
Instal Web Deploy pada agen menggunakan Alat Penginstal Platform Web Microsoft. Web Deploy 3.5 harus diinstal tanpa dukungan SQL yang dibundel. Tidak perlu memilih pengaturan kustom apa pun saat menginstal Web Deploy. Web Deploy diinstal di C:\Program Files (x86)\IIS\Microsoft Web Deploy V3.
REST API Kudu
REST API Kudu berfungsi pada agen otomatisasi Windows dan Linux saat target adalah Aplikasi Web di Windows, Aplikasi Web di Linux (sumber bawaan), atau Aplikasi Fungsi. Tugas ini menggunakan Kudu untuk menyalin file ke layanan Azure App.
Container Registry
Berfungsi pada agen otomatisasi Windows dan Linux saat targetnya adalah Aplikasi Web untuk Kontainer. Tugas memperbarui aplikasi dengan mengatur registri kontainer, repositori, nama gambar, dan informasi tag yang sesuai. Anda juga dapat menggunakan tugas untuk meneruskan perintah startup untuk gambar kontainer.
Zip Deploy
Mengharapkan paket penyebaran .zip dan menyebarkan konten file ke folder wwwroot App Service atau Aplikasi Fungsi di Azure. Opsi ini menimpa semua isi yang ada di folder wwwroot . Untuk informasi selengkapnya, lihat Penyebaran Zip untuk Azure Functions.
Jalankan Dari Paket
Mengharapkan paket penyebaran yang sama dengan Zip Deploy. Namun, alih-alih menyebarkan file ke folder wwwroot , seluruh paket dipasang oleh runtime Functions dan file di folder wwwroot menjadi baca-saja. Untuk informasi selengkapnya, lihat Menjalankan Azure Functions Anda dari file paket.
Penyebaran Perang
Mengharapkan paket penyebaran .war dan menyebarkan konten file ke folder wwwroot atau folder webapps App Service di Azure.
Pemecahan Masalah
Kesalahan: Tidak dapat mengambil token akses untuk Azure. Verifikasi apakah Perwakilan Layanan yang digunakan valid dan tidak kedaluwarsa.
Tugas ini menggunakan perwakilan layanan dalam koneksi layanan untuk mengautentikasi dengan Azure. Jika perwakilan layanan telah kedaluwarsa atau tidak memiliki izin ke App Service, tugas gagal dengan kesalahan ini. Verifikasi validitas perwakilan layanan yang digunakan dan ada dalam pendaftaran aplikasi. Untuk informasi selengkapnya, lihat Menggunakan kontrol akses berbasis peran untuk mengelola akses ke sumber daya langganan Azure Anda. Posting blog ini juga berisi informasi selengkapnya tentang menggunakan autentikasi perwakilan layanan.
Kesalahan SSL
Jika Anda ingin menggunakan sertifikat di App Service, sertifikat harus ditandatangani oleh otoritas sertifikat tepercaya. Jika aplikasi web memberi Anda kesalahan validasi sertifikat, Anda mungkin menggunakan sertifikat yang ditandatangani sendiri. Atur variabel bernama VSTS_ARM_REST_IGNORE_SSL_ERRORS ke nilai true dalam alur build atau rilis untuk mengatasi kesalahan.
Rilis macet untuk waktu yang lama dan kemudian gagal
Masalah ini bisa menjadi akibat dari kapasitas yang tidak mencukup dalam rencana App Service Anda. Untuk mengatasi masalah ini, Anda dapat meningkatkan instans App Service untuk meningkatkan ruang CPU, RAM, dan disk yang tersedia atau mencoba dengan paket App Service yang berbeda.
kode galat 5xx
Jika Anda melihat kesalahan 5xx , periksa status layanan Azure Anda.
Kesalahan: Tidak ada paket yang ditemukan dengan pola tertentu
Periksa apakah paket yang disebutkan dalam tugas diterbitkan sebagai artefak dalam build atau tahap sebelumnya dan diunduh dalam pekerjaan saat ini.
Kesalahan: Terbitkan menggunakan opsi penyebaran zip tidak didukung untuk jenis paket msBuild
Paket web yang dibuat melalui tugas MSBuild (dengan argumen default) memiliki struktur folder berlapis yang hanya dapat disebarkan dengan benar oleh Web Deploy. Opsi penyebaran publish-to-zip tidak dapat digunakan untuk menyebarkan paket tersebut. Untuk mengonversi struktur kemasan, lakukan langkah-langkah berikut:
Dalam tugas Solusi build, ubah Argumen MSBuild menjadi
/p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent":
Tambahkan tugas Arsip dan ubah nilai sebagai berikut:
Ubah folder akar atau file untuk diarsipkan ke
$(System.DefaultWorkingDirectory)\\WebAppContent.Kosongkan kotak centang Tambahkan nama folder akar ke jalur arsip :
Penyebaran aplikasi web di Windows berhasil tetapi aplikasi tidak berfungsi
Ini mungkin karena web.config tidak ada di aplikasi Anda. Anda dapat menambahkan file web.config ke sumber Anda atau membuatnya secara otomatis menggunakan Opsi Transformasi File dan Penggantian Variabel tugas.
Klik tugas dan buka Membuat parameter web.config untuk aplikasi Python, Node.js, Go, dan Java.

Klik tombol lainnya Buat parameter web.config untuk aplikasi Python, Node.js, Go, dan Java untuk mengedit parameter.

Pilih jenis aplikasi Anda dari menu drop-down.
Klik OK. Ini akan mengisi parameter web.config yang diperlukan untuk menghasilkan web.config.
Catatan
Bagian ini tidak digunakan lagi dan telah diganti dengan tugas Transformasi File .
ERROR_FILE_IN_USE
Saat menyebarkan aplikasi .NET ke Aplikasi Web di Windows, penyebaran mungkin gagal dengan kode kesalahan ERROR_FILE_IN_USE. Untuk mengatasi kesalahan, pastikan Ganti nama file terkunci dan opsi Ambil Aplikasi Offline diaktifkan dalam tugas. Untuk penyebaran waktu henti nol, gunakan penukaran slot.
Anda juga dapat menggunakan metode penyebaran Jalankan dari Paket untuk menghindari penguncian sumber daya.
Kesalahan Penyebaran Web
Jika Anda menggunakan penyebaran web untuk menyebarkan aplikasi, dalam beberapa skenario kesalahan, Web Deploy akan menampilkan kode kesalahan di log. Untuk memecahkan masalah kesalahan penyebaran web, lihat ini.
Penyebaran aplikasi web di Lingkungan App Services (ASE) tidak berfungsi
- Pastikan bahwa agen build Azure DevOps berada di VNET yang sama (subnet dapat berbeda) dengan Internal Load Balancer (ILB) ASE. Ini akan memungkinkan agen untuk menarik kode dari Azure DevOps dan menyebarkan ke ASE.
- Jika Anda menggunakan Azure DevOps, agen tidak perlu dapat diakses dari internet tetapi hanya memerlukan akses keluar untuk terhubung ke layanan Azure DevOps.
- Jika Anda menggunakan TFS/Azure DevOps Server yang disebarkan dalam Virtual Network, agen dapat sepenuhnya terisolasi.
- Agen build harus dikonfigurasi dengan konfigurasi DNS Aplikasi Web yang perlu disebarkan. Karena sumber daya privat dalam Virtual Network tidak memiliki entri di Azure DNS, ini perlu ditambahkan ke file host di komputer agen.
- Jika sertifikat yang ditandatangani sendiri digunakan untuk konfigurasi ASE, opsi "-allowUntrusted" perlu diatur dalam tugas penyebaran untuk MSDeploy.It juga disarankan untuk mengatur variabel VSTS_ARM_REST_IGNORE_SSL_ERRORS ke true. Jika sertifikat dari otoritas sertifikat digunakan untuk konfigurasi ASE, ini seharusnya tidak diperlukan.
Tanya Jawab Umum
Bagaimana cara mengonfigurasi koneksi layanan saya?
Tugas ini memerlukan koneksi layanan Azure Resource Manager.
Bagaimana cara mengonfigurasi penyebaran pekerjaan web dengan Insights Aplikasi?
Saat Anda menyebarkan ke App Service, jika Anda memiliki Insights Aplikasi yang dikonfigurasi dan Anda telah mengaktifkan Remove additional files at destination, Anda juga perlu mengaktifkan Exclude files from the App_Data folder. Mengaktifkan opsi ini membuat ekstensi Insights Aplikasi dalam keadaan aman. Langkah ini diperlukan karena WebJob berkelanjutan Insights Aplikasi diinstal ke folder App_Data.
Bagaimana cara mengonfigurasi agen saya jika berada di belakang proksi saat saya menyebarkan ke App Service?
Jika agen yang dihost sendiri memerlukan proksi web, Anda dapat memberi tahu agen tentang proksi selama konfigurasi. Melakukannya memungkinkan agen Anda untuk terhubung ke Azure Pipelines atau Azure DevOps Server melalui proksi. Pelajari selengkapnya tentang menjalankan agen yang dihost sendiri di belakang proksi web.
Sumber terbuka
Tugas ini sumber terbuka pada GitHub. Umpan balik dan kontribusi dipersilakan.