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:

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.

ParameterDeskripsi
ConnectionType
(Tipe koneksi)
(Diperlukan) Pilih jenis koneksi layanan yang akan digunakan untuk menyebarkan Aplikasi Web.
Nilai default: AzureRM
Terhubung
ServiceName

(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
SlotOrASEFlag

(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)/**/*.war
Nilai 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
ConfigParameters

(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
FilesFlag

(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
FromAppDataFlag

(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
Substitusi

(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 appType ke 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, webApp diambil sebagai nilai default.

  • Untuk mengaktifkan opsi penyebaran tingkat lanjut, tambahkan parameter enableCustomDeployment: true dan 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_ERRORS dengan nilai true dalam alur rilis.
  • Untuk aplikasi .NET yang menargetkan Aplikasi Web di Windows, hindari kegagalan penyebaran dengan kesalahan ERROR_FILE_IN_USE dengan 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 ServiceJenis paketMetode penyebaran
WebApp di Linux atau Aplikasi Fungsi di LinuxFolder/Zip/jar
Perang
Zip Deploy
Penyebaran Perang
WebApp untuk Kontainer (Linux) atau Aplikasi Fungsi untuk Kontainer (Linux)Memperbarui pengaturan AplikasiNA
WebApp di Windows, Aplikasi Fungsi di Windows, Aplikasi API, atau Aplikasi SelulerPerang
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:

  1. 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":

    Screenshot that shows the Build solution values.

  2. Tambahkan tugas Arsip dan ubah nilai sebagai berikut:

    1. Ubah folder akar atau file untuk diarsipkan ke $(System.DefaultWorkingDirectory)\\WebAppContent.

    2. Kosongkan kotak centang Tambahkan nama folder akar ke jalur arsip :

      Screenshot that shows the Archive values.

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.

    Generate web.config parameters Dialog

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

    Drop Down Dialog

  • 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.