AzureWebApp@1 - Tugas Azure Web App v1

Tugas ini menyebarkan Azure Web App untuk Linux atau Windows.

Sintaks

# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #customDeployFolder: # string. Optional. Use when package EndsWith .war. Custom Deploy Folder. 
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Web App v1
# Deploy an Azure Web App for Linux or Windows.
- task: AzureWebApp@1
  inputs:
    azureSubscription: # string. Required. Azure subscription. 
    appType: # 'webApp' | 'webAppLinux'. Required. App type. 
    appName: # string. Required. App name. 
    #deployToSlotOrASE: false # boolean. Optional. Use when appType != "". Deploy to Slot or App Service Environment. Default: false.
    #resourceGroupName: # string. Required when deployToSlotOrASE = true. Resource group. 
    #slotName: 'production' # string. Required when deployToSlotOrASE = true. Slot. Default: production.
    package: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #runtimeStack: # string. Optional. Use when appType = webAppLinux. Runtime stack. 
    #startUpCommand: # string. Optional. Use when appType = webAppLinux. Startup command. 
  # Application and Configuration Settings
    #customWebConfig: # string. Optional. Use when appType != webAppLinux && package NotEndsWith .war. Generate web.config parameters for Python, Node.js, Go and Java apps. 
    #appSettings: # string. App settings. 
    #configurationStrings: # string. Configuration settings. 
  # Additional Deployment Options
    #deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Deployment method. Default: auto.

Input

azureSubscription - Langganan Azure
string. Wajib diisi.

Menentukan koneksi langganan Azure Resource Manager untuk penyebaran.


appType - Jenis aplikasi
string. Wajib diisi. Nilai yang diizinkan: webApp (Aplikasi Web di Windows), webAppLinux (Aplikasi Web di Linux).

Menentukan jenis Azure Web App.


appName - Nama aplikasi
string. Wajib diisi.

Menentukan nama Azure App Service yang ada. Hanya layanan aplikasi yang didasarkan pada jenis aplikasi yang dipilih yang akan dicantumkan.


deployToSlotOrASE - Menyebarkan ke Slot atau lingkungan App Service
boolean. Opsional. Gunakan saat appType != "". Nilai default: false.

Memilih opsi untuk disebarkan ke slot penyebaran yang ada atau lingkungan Azure App Service.
Untuk kedua target, tugas memerlukan nama grup sumber daya.
Jika target penyebaran adalah slot, defaultnya adalah slot produksi. Nama slot lain yang ada juga dapat disediakan.
Jika target penyebaran adalah lingkungan Azure App Service, biarkan nama slot sebagai 'produksi', dan tentukan nama grup sumber daya.


resourceGroupName - Grup sumber daya
string. Diperlukan saat deployToSlotOrASE = true.

Nama grup sumber daya diperlukan saat target penyebaran adalah slot penyebaran atau lingkungan Azure App Service.
Menentukan grup sumber daya Azure yang berisi Azure App Service yang ditunjukkan di atas.


slotName - Slot
string. Diperlukan saat deployToSlotOrASE = true. Nilai default: production.

Menentukan slot yang ada, tidak termasuk slot produksi.


package - Paket atau folder
string. Wajib diisi. Nilai default: $(System.DefaultWorkingDirectory)/**/*.zip.

Jalur file ke paket atau folder yang berisi konten App Service yang dihasilkan oleh MSBuild, file zip terkompresi, atau file perang. Variabel (RilisBuild | ) dan kartubebas didukung. Misalnya, $(System.DefaultWorkingDirectory)/**/*.zip atau $(System.DefaultWorkingDirectory)/**/*.war.


customDeployFolder - Folder Penyebaran Kustom
string. Opsional. Gunakan saat package EndsWith .war.

Menentukan nama folder kustom yang ingin Anda sebarkan.
Jika bidang kosong, paket disebarkan ke <appname>.azurewebsites.net/<warpackagename>.
Jika ROOT dimasukkan, paket disebarkan ke <appname>.azurewebsited.net.
Dalam semua instans lain, ini disebarkan ke <appname>.azurewebsited.net/<customWarName>.


runtimeStack - Tumpukan runtime
string. Opsional. Gunakan saat appType = webAppLinux.

Aplikasi Web di Linux menawarkan dua opsi berbeda untuk menerbitkan aplikasi Anda: penyebaran gambar kustom (Aplikasi Web untuk Kontainer) dan penyebaran aplikasi dengan gambar platform bawaan (Aplikasi Web di Linux). Parameter ini hanya tersedia saat Aplikasi Web Linux dipilih sebagai jenis aplikasi dalam tugas.


startUpCommand - Perintah startup
string. Opsional. Gunakan saat appType = webAppLinux.

Menentukan perintah mulai.
Contohnya:
dotnet run
dotnet filename.dll.


customWebConfig - Membuat parameter web.config untuk aplikasi Python, Node.js, Go, dan Java
string. Opsional. Gunakan saat appType != webAppLinux && package NotEndsWith .war.

web.config standar akan dihasilkan dan disebarkan ke Azure App Service jika aplikasi tidak memilikinya. Nilai dalam web.config bervariasi berdasarkan kerangka kerja aplikasi, dan dapat diedit. Misalnya, untuk aplikasi node.js, web.config akan memiliki file startup dan nilai modul iis_node. Fitur edit ini hanya untuk web.configyang dihasilkan .


appSettings - Pengaturan aplikasi
string.

Tentukan pengaturan aplikasi aplikasi web menggunakan sintaks -key value (misalnya:-RequestTimeout 5000-Port 5000-WEBSITE_TIME_ZONE ). Sertakan nilai yang berisi spasi dalam tanda kutip ganda (misalnya: "Eastern Standard Time").


configurationStrings - Pengaturan konfigurasi
string.

Tentukan pengaturan konfigurasi aplikasi web menggunakan sintaks -key value (misalnya: -phpVersion 5.6-linuxFxVersion: node|6.11). Sertakan nilai yang berisi spasi dalam tanda kutip ganda.


deploymentMethod - Metode penyebaran
string. Diperlukan saat appType != webAppLinux && appType != "" && package NotEndsWith .war && package NotEndsWith .jar. Nilai yang diizinkan: auto (Deteksi otomatis), zipDeploy (Zip Deploy), runFromPackage (Jalankan Dari Paket). Nilai default: auto.

Pilih metode penyebaran untuk aplikasi. Nilai yang dapat diterima adalah auto, zipDeploy, dan runFromPackage.


Opsi kontrol tugas

Semua tugas memiliki opsi kontrol selain input tugas mereka. Untuk informasi selengkapnya, lihat Opsi kontrol dan properti tugas umum.

Variabel output

Tugas ini menentukan variabel output berikut, yang dapat Anda konsumsi dalam langkah-langkah hilir, pekerjaan, dan tahapan.

AppServiceApplicationUrl
URL aplikasi dari Azure App Service yang dipilih.

Keterangan

Gunakan tugas ini untuk menyebarkan aplikasi web ke Azure App Service.

Metode penyebaran

Beberapa metode penyebaran tersedia dalam tugas ini. Auto adalah opsi default.

Untuk mengubah opsi penyebaran berbasis paket dalam tugas perancang, perluas Opsi Penyebaran Tambahan dan aktifkan Pilih Metode Penyebaran.

Berdasarkan jenis Azure App Service dan agen Azure Pipelines, tugas memilih teknologi penyebaran yang sesuai. Berbagai teknologi penyebaran yang digunakan oleh tugas adalah:

  • REST API Kudu
  • Penyebaran Zip
  • RunFromPackage

Secara default, tugas mencoba memilih teknologi penyebaran yang sesuai mengingat paket input, jenis layanan aplikasi, dan OS agen.

  • Saat jenis layanan aplikasi adalah Aplikasi Web di Aplikasi Linux, gunakan Zip Deploy
  • Jika file War disediakan, gunakan War Deploy
  • Jika file Jar disediakan, gunakan Jalankan Dari Paket
  • Untuk yang lain, gunakan Jalankan Dari Zip (melalui Zip Deploy)

Pada agen non-Windows (untuk jenis layanan aplikasi apa pun), tugas bergantung pada REST API Kudu untuk menyebarkan aplikasi web.

REST API Kudu

REST API Kudu berfungsi pada agen otomatisasi Windows atau Linux saat targetnya adalah Aplikasi Web di Windows, Aplikasi Web di Linux (sumber bawaan), atau Aplikasi Fungsi. Tugas ini menggunakan Kudu untuk menyalin file ke Azure App Service.

Penyebaran Zip

Membuat paket penyebaran .zip dari paket atau folder yang dipilih. Konten file kemudian disebarkan ke folder wwwroot aplikasi fungsi di Azure App Service. Opsi ini menimpa semua isi yang ada di folder wwwroot. Untuk informasi selengkapnya, lihat Penyebaran Zip untuk Azure Functions.

RunFromPackage

Membuat paket penyebaran yang sama dengan Zip Deploy. Namun, alih-alih menyebarkan file ke folder wwwroot, seluruh paket dipasang oleh runtime Azure Functions. Dengan opsi ini, file di folder wwwroot menjadi baca-saja. Untuk informasi selengkapnya, lihat Menjalankan Azure Functions Anda dari file paket.

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 prinsipal layanan yang digunakan dan tersedia dalam pendaftaran aplikasi. Untuk mengetahui 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 berhenti 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.

Fungsi Azure tiba-tiba berhenti berfungsi

Azure Functions mungkin tiba-tiba berhenti bekerja jika lebih dari satu tahun telah berlalu sejak penyebaran terakhir. Jika Anda menyebarkan dengan "RunFromPackage" di "deploymentMethod", SAS dengan tanggal kedaluwarsa 1 tahun dihasilkan dan ditetapkan sebagai nilai "WEBSITE_RUN_FROM_PACKAGE" dalam konfigurasi aplikasi. Azure Functions menggunakan SAS ini untuk mereferensikan file paket untuk eksekusi fungsi, jadi jika SAS telah kedaluwarsa, fungsi tidak akan dijalankan. Untuk mengatasi masalah ini, sebarkan lagi untuk menghasilkan SAS dengan tanggal kedaluwarsa satu tahun.

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

    Cuplikan layar yang memperlihatkan nilai Solusi build.

  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 :

      Cuplikan layar yang memperlihatkan nilai Arsip.

Tanya Jawab Umum

Apa perbedaan antara AzureWebApp tugas dan AzureRmWebAppDeployment ?

Tugas Azure Web App (AzureWebApp) adalah cara paling sederhana untuk menyebarkan ke Azure Web App. Secara default, penyebaran Anda terjadi pada aplikasi root di Azure Web App.

Tugas Azure App Service Deploy (AzureRmWebAppDeployment) dapat menangani lebih banyak skenario kustom, seperti:

Catatan

Transformasi file dan substitusi variabel juga didukung oleh Tugas Transformasi File terpisah 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.

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 Pengaturan Aplikasi dan Konfigurasi.

  • Klik tugas dan buka Membuat parameter web.config untuk aplikasi Python, Node.js, Go, dan Java.

    Cuplikan layar dialog Buat parameter web.config.

  • Klik tombol ... lainnya untuk mengedit parameter.

    Cuplikan layar dialog drop-down.

  • Pilih jenis aplikasi Anda dari menu drop-down.

  • Klik OK. Ini akan mengisi parameter web.config yang diperlukan untuk menghasilkan web.config.

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. Sumber daya privat dalam Virtual Network tidak memiliki entri di Azure DNS, jadi ini perlu ditambahkan ke file host di komputer agen.
  • Jika sertifikat yang ditandatangani sendiri digunakan untuk konfigurasi ASE, -allowUntrusted opsi perlu diatur dalam tugas penyebaran untuk MSDeploy. Disarankan juga untuk mengatur variabel VSTS_ARM_REST_IGNORE_SSL_ERRORS ke true. Jika sertifikat dari otoritas sertifikat digunakan untuk konfigurasi ASE, ini seharusnya tidak diperlukan.

Bagaimana cara mengonfigurasi koneksi layanan saya?

Tugas ini memerlukan koneksi layanan Azure Resource Manager.

Bagaimana cara mengonfigurasi penyebaran pekerjaan web dengan Application Insights?

Saat Anda menyebarkan ke App Service, jika Anda telah mengonfigurasi Application Insights dan telah mengaktifkan Remove additional files at destination, Anda juga perlu mengaktifkan Exclude files from the App_Data folder. Mengaktifkan opsi ini membuat ekstensi Application Insights dalam keadaan aman. Langkah ini diperlukan karena WebJob berkelanjutan Application Insights 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.

Contoh

Berikut ini adalah contoh cuplikan YAML untuk menyebarkan aplikasi web ke Azure Web App Service yang berjalan di Windows.

variables:
  azureSubscription: Contoso
  # To ignore SSL error uncomment the below variable
  # VSTS_ARM_REST_IGNORE_SSL_ERRORS: true

steps:

- task: AzureWebApp@1
  displayName: Azure Web App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplewebapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Untuk menyebarkan Aplikasi Web di Linux, tambahkan appType parameter dan atur ke appType: webAppLinux.

Untuk menentukan metode penyebaran sebagai Zip Deploy, tambahkan parameter deploymentMethod: zipDeploy. Nilai lain yang didukung untuk parameter ini adalah runFromPackage.

Jika tidak ditentukan, auto adalah nilai default.

Persyaratan

Persyaratan Deskripsi
Jenis alur YAML, Build klasik, Rilis klasik
Berjalan pada Agen, DeploymentGroup
Permintaan Tidak ada
Kemampuan Tugas ini tidak memenuhi tuntutan untuk tugas berikutnya dalam pekerjaan.
Pembatasan perintah Apa pun
Variabel yang dapat diatur Apa pun
Versi agen 2.104.1 atau lebih tinggi
Kategori tugas Sebarkan