Tugas Aplikasi Fungsi Azure

Azure DevOps

Gunakan tugas Azure Function App untuk menyebarkan fungsi ke Azure.

Argumen

ParameterDeskripsi
azureSubscription
(Langganan Azure)
(Diperlukan) Nama koneksi layanan Azure Resource Manager.
appType
(Jenis aplikasi)
(Diperlukan) Jenis aplikasi fungsi. Opsi: 'functionAppLinux', 'functionApp' (default).
appName
(Nama aplikasi)
(Diperlukan) Nama layanan aplikasi yang ada.
deployToSlotOrASE
(Sebarkan ke slot atau lingkungan App Service)
(Opsional) Apakah akan 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, fungsi disebarkan ke slot produksi secara default. Anda juga dapat memberikan nama slot lain yang ada. Jika target penyebaran adalah lingkungan App Service, tentukan nama grup sumber daya.

Nilai default: false
resourceGroupName
(Grup sumber daya)
(Diperlukan jika deployToSlotOrASE adalah true) Nama grup sumber daya.
slotName
(Slot)
(Diperlukan jika deployToSlotOrASE adalah true) Nama slot.

Nilai default: production
package
(Paket atau folder)
(Diperlukan) Jalur file paket atau folder yang berisi konten App Service yang dihasilkan oleh MSBuild atau file .zip atau .war terkompresi.

Variabel (BuildRelease | ) dan wildcard didukung. Misalnya, $(System.DefaultWorkingDirectory)/*.zip atau $(System.DefaultWorkingDirectory)//*.war.
runtimeStack
(Tumpukan runtime)
(Opsional) Aplikasi Web di Linux menyediakan dua cara untuk menerbitkan aplikasi: penyebaran gambar kustom (Aplikasi Web untuk Kontainer) dan penyebaran aplikasi dengan gambar platform bawaan (Aplikasi Web di Linux). Anda hanya akan melihat parameter ini saat memilih Linux Web App sebagai jenis aplikasi dalam tugas.
startUpCommand
(Perintah startup)
(Opsional. Relevan jika appType adalah webAppLinux.) Perintah startup yang akan dijalankan setelah penyebaran.
customWebConfig
(Hasilkan parameter file web.config untuk aplikasi Python, Node.js, Go, dan Java)
(Opsional) File web.config standar akan dibuat dan disebarkan ke App Service jika aplikasi tidak memilikinya. Anda dapat mengedit nilai dalam file web.config. Mereka akan bervariasi tergantung pada kerangka kerja aplikasi. Misalnya, untuk aplikasi Node.js, file web.config akan memiliki file startup dan nilai modul iis_node. Fitur edit ini hanya untuk file web.config yang dihasilkan. Pelajari lebih lanjut.
appSettings
(Pengaturan aplikasi)
(Opsional) Pengaturan aplikasi. Gunakan sintaks .-key value Sertakan nilai yang berisi spasi dalam tanda kutip ganda.

Contohnya:-Port 5000 -RequestTimeout 5000 -WEBSITE_TIME_ZONE "Eastern Standard Time"
configurationStrings
(Pengaturan konfigurasi)
(Opsional) String konfigurasi. Gunakan sintaks .-key value Sertakan nilai yang berisi spasi dalam tanda kutip ganda.

Contohnya:-phpVersion 5.6 -linuxFxVersion: node|6.11
deploymentMethod
(Metode penyebaran)
(Diperlukan) Metode penyebaran untuk aplikasi.

Nilai default: auto

Contoh

Berikut adalah contoh cuplikan YAML yang menyebarkan fungsi Azure di Windows:


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

steps:
- task: AzureFunctionApp@1
  displayName: Azure Function App Deploy
  inputs:
    azureSubscription: $(azureSubscription)
    appName: samplefunctionapp
    package: $(System.DefaultWorkingDirectory)/**/*.zip

Untuk menyebarkan fungsi di Linux, tambahkan appType parameter dan atur ke appType: functionAppLinux. Jika Anda tidak menentukan nilai, functionApp adalah defaultnya.

Untuk secara eksplisit menentukan metode penyebaran sebagai Zip Deploy, tambahkan parameter deploymentMethod: zipDeploy. Nilai lain yang didukung untuk parameter ini adalah runFromPackage. Jika Anda tidak menentukan nilai, auto adalah defaultnya.

Untuk panduan yang memperlihatkan cara membuat alur CI/CD, lihat Membangun dan menyebarkan Java untuk Azure Functions.

Metode penerapan

Beberapa metode penyebaran tersedia dalam tugas ini. Nilai defaultnya adalah auto.

Untuk mengubah opsi penyebaran dalam tugas perancang, perluas Opsi Penyebaran Tambahan dan aktifkan Pilih metode penyebaran untuk memilih dari opsi penyebaran berbasis paket lainnya.

Berdasarkan jenis Azure App Service dan agen Azure Pipelines, tugas ini menggunakan teknologi penyebaran yang sesuai. Teknologi penyebaran yang digunakan oleh tugas adalah sebagai berikut:

  • REST API Kudu

  • Penyebaran Zip

  • Jalankan Dari Paket

Secara default, tugas mencoba memilih teknologi penyebaran yang sesuai berdasarkan paket input, jenis App Service, dan OS agen.

  • Jika skrip pasca-penyebaran disediakan, gunakan Zip Deploy.
  • Jika jenis App Service adalah Aplikasi Web di Linux, gunakan Zip Deploy.
  • Jika file .war disediakan, gunakan War Deploy.
  • Jika file .jar disediakan, gunakan Run-From-Zip.
  • Untuk semua tugas lainnya, gunakan Jalankan Dari Paket (melalui Zip Deploy).

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

Kudu REST API

REST API Kudu berfungsi pada agen otomatisasi Windows dan 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

Zip Deploy membuat paket penyebaran .zip dari paket atau folder yang dipilih. Kemudian menyebarkan konten file ke folder wwwroot dari aplikasi fungsi nama App Service di Azure. Opsi ini menimpa semua konten yang ada di folder wwwroot. Untuk informasi selengkapnya, lihat Penyebaran Zip untuk Azure Functions.

Jalankan Dari Paket

Jalankan Dari Paket membuat paket penyebaran yang sama dengan Zip Deploy. Alih-alih menyebarkan file ke folder wwwroot, runtime Functions memasang seluruh paket. Ketika Anda menggunakan opsi ini, file di folder wwwroot menjadi baca-saja. Untuk informasi selengkapnya, lihat Menjalankan Azure Functions Anda dari file paket.

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 lebih lanjut 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 Nama folder akar prepend ke jalur arsip :

      Screenshot that shows the Archive values.

Penyebaran aplikasi fungsi pada Windows berhasil tetapi aplikasi tidak berfungsi

Masalah ini dapat terjadi jika file web.config tidak ada di aplikasi Anda. Anda dapat menambahkan file web.config ke sumber Anda atau secara otomatis membuatnya dengan menggunakan Pengaturan Aplikasi dan Konfigurasi tugas.

  1. Pilih tugas dan buka Membuat parameter web.config untuk aplikasi Python, Node.js, Go, dan Java:

    Screenshot that shows the Generate web.config parameters section.

  2. Pilih tombol Lainnya (...) di bawah Hasilkan parameter web.config untuk aplikasi Python, Node.js, Go, dan Java untuk mengedit parameter:

    Screenshot that shows the Generate web.config parameters.

  3. Pilih jenis aplikasi Anda di daftar Kerangka kerja aplikasi .

  4. PilihOK. Melakukannya akan mengisi parameter web.config yang diperlukan untuk menghasilkan file web.config.

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 Aplikasi Insights WebJobs berkelanjutan 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.

Saya tidak dapat menyebarkan ke lingkungan App Service internal dengan menggunakan koneksi layanan Azure Resource Manager dan agen yang dihosting Microsoft

Secara desain, agen yang dihosting Microsoft tidak akan berfungsi dengan lingkungan App Service. Sebagai gantinya, Anda perlu mengonfigurasi agen privat pada komputer virtual yang berada di jaringan virtual yang sama dengan lingkungan App Service. Selain itu, atur zona DNS privat untuk mengaktifkan komunikasi antara sumber daya.

Sumber terbuka

Tugas ini sumber terbuka pada GitHub. Umpan balik dan kontribusi dipersilakan.