Tugas Aplikasi Fungsi Azure
Azure DevOps
Gunakan tugas Azure Function App untuk menyebarkan fungsi ke Azure.
Argumen
| Parameter | Deskripsi |
|---|---|
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:
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 Nama folder akar prepend ke jalur arsip :
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.
Pilih tugas dan buka Membuat parameter web.config untuk aplikasi Python, Node.js, Go, dan Java:
Pilih tombol Lainnya (...) di bawah Hasilkan parameter web.config untuk aplikasi Python, Node.js, Go, dan Java untuk mengedit parameter:
Pilih jenis aplikasi Anda di daftar Kerangka kerja aplikasi .
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.