AzureFunctionApp@2 - Azure Functions Menyebarkan tugas v2
Perbarui aplikasi fungsi dengan aplikasi web berbasis .NET, Python, JavaScript, PowerShell, Java.
Sintaks
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection.
appType: # 'functionApp' | 'functionAppLinux'. Required. App type.
appName: # string. Required. Azure Functions 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: # 'DOTNET|6.0' | 'DOTNET-ISOLATED|6.0' | 'DOTNET-ISOLATED|7.0' | 'DOTNET-ISOLATED|8.0' | 'JAVA|8' | 'JAVA|11' | 'JAVA|17' | 'JAVA|21' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'NODE|20' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10' | 'PYTHON|3.11'. Optional. Use when appType = functionAppLinux. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
# Azure Functions Deploy v2
# Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications.
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: # string. Alias: azureSubscription. Required. Azure Resource Manager connection.
appType: # 'functionApp' | 'functionAppLinux'. Required. App type.
appName: # string. Required. Azure Functions 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: # 'DOTNET|2.2' | 'DOTNET|3.1' | 'DOTNET|6.0' | 'DOTNET-ISOLATED|7.0' | 'JAVA|8' | 'JAVA|11' | 'NODE|8' | 'NODE|10' | 'NODE|12' | 'NODE|14' | 'NODE|16' | 'NODE|18' | 'PYTHON|3.6' | 'PYTHON|3.7' | 'PYTHON|3.8' | 'PYTHON|3.9' | 'PYTHON|3.10'. Optional. Use when appType = functionAppLinux. Runtime stack.
# Application and Configuration Settings
#appSettings: # string. App settings.
# Additional Deployment Options
#deploymentMethod: 'auto' # 'auto' | 'zipDeploy' | 'runFromPackage'. Required when appType != "" && package NotEndsWith .war && Package NotEndsWith .jar. Deployment method. Default: auto.
Input
connectedServiceNameARM
- Koneksi Azure Resource Manager
Alias input: azureSubscription
. string
. Wajib diisi.
Pilih langganan Azure Resource Manager untuk penyebaran.
appType
- Jenis aplikasi
string
. Wajib diisi. Nilai yang diizinkan: functionApp
(Aplikasi Fungsi di Windows), functionAppLinux
(Aplikasi Fungsi di Linux).
Pilih jenis Aplikasi Fungsi Azure untuk penyebaran.
appName
- nama Aplikasi Azure Functions
string
. Wajib diisi.
Tentukan nama Aplikasi Azure Functions yang sudah ada. Aplikasi Fungsi yang tercantum akan didasarkan pada jenis aplikasi yang dipilih.
deployToSlotOrASE
- Menyebarkan ke Slot atau lingkungan App Service
boolean
. Opsional. Gunakan saat appType != ""
. Nilai default: false
.
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, target tersebut akan default ke 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 App Service.
Memasukkan atau memilih grup Sumber Daya Azure yang berisi Azure App Service yang ditentukan di atas.
slotName
- Slot
string
. Diperlukan saat deployToSlotOrASE = true
. Nilai default: production
.
Memasukkan atau memilih slot yang ada, tidak termasuk slot Produksi.
slotName
- Slot
string
. Diperlukan saat deployToSlotOrASE = true
. Nilai default: production
.
Masukkan atau Pilih Slot yang ada selain 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 atau file zip terkompresi. Variabel (RilisBuild | ) dan kartubebas didukung. Contohnya,$(System.DefaultWorkingDirectory)/**/*.zip
.
runtimeStack
- Tumpukan runtime
string
. Opsional. Gunakan saat appType = functionAppLinux
. Nilai yang diizinkan: DOTNET|6.0
, , DOTNET-ISOLATED|7.0
DOTNET-ISOLATED|6.0
, DOTNET-ISOLATED|8.0
, JAVA|8
, JAVA|11
, JAVA|17
, JAVA|21
, NODE|14
, NODE|16
, NODE|18
, NODE|20
, PYTHON|3.9
PYTHON|3.8
, PYTHON|3.10
, . PYTHON|3.11
Tentukan kerangka kerja dan versi yang akan dijalankan aplikasi fungsi Anda. Anda dapat menggunakan salah satu versi runtime yang didukung. Nilai lama seperti DOCKER|microsoft/azure-functions-*
tidak digunakan lagi. Nilai baru tercantum dalam daftar drop-down di asisten tugas. Jika ada versi kerangka kerja yang lebih baru yang tersedia dalam versi runtime yang didukung , Anda dapat menentukannya meskipun tidak ada dalam daftar.
runtimeStack
- Tumpukan runtime
string
. Opsional. Gunakan saat appType = functionAppLinux
. Nilai yang diperbolehkan: DOTNET|2.2
(DOTNET|2.2 (functionapp v2)), DOTNET|3.1
(DOTNET|3.1 (functionapp v3)), DOTNET|6.0
(DOTNET|6.0 (functionapp v4)), DOTNET-ISOLATED|7.0
(DOTNET-ISOLATED|7.0 (functionapp v4)), (JAVA|8 (functionapp v2/v3/v4)), JAVA|11
(JAVA|11 (functionapp v4)), JAVA|8
(JAVA|11 functionapp v3/v4)), NODE|8
(NODE|8 (functionapp v2)), NODE|10
(NODE|10 (functionapp v2/v3)), NODE|12
(NODE|12 (functionapp v3)), NODE|14
(NODE|14 (functionapp v3/v4)), NODE|16
(NODE|16 (functionapp v4)), NODE|18
(NODE|18 (functionapp v4)), PYTHON|3.6
(PYTHON|3.6 (functionapp v2/v3)), PYTHON|3.7
(PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8
(PYTHON|3.78 (functionapp v3/v4)), PYTHON|3.9
(PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10
(PYTHON|3.10 (functionapp v3/v4)).
Tentukan kerangka kerja dan versi yang akan dijalankan aplikasi fungsi Anda. Anda dapat menggunakan salah satu versi runtime yang didukung. Nilai lama seperti DOCKER|microsoft/azure-functions-*
tidak digunakan lagi. Nilai baru tercantum dalam daftar drop-down di asisten tugas. Jika ada versi kerangka kerja yang lebih baru yang tersedia dalam versi runtime yang didukung , Anda dapat menentukannya meskipun tidak ada dalam daftar.
appSettings
- Pengaturan aplikasi
string
.
Masukkan pengaturan aplikasi 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"
).
deploymentMethod
- Metode penyebaran
string
. Diperlukan saat appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Nilai yang diizinkan: auto
(Deteksi otomatis), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy dengan Run From Package). Nilai default: auto
.
Menentukan metode penyebaran untuk aplikasi. Aplikasi Konsumsi Linux tidak mendukung konfigurasi ini.
deploymentMethod
- Metode penyebaran
string
. Diperlukan saat appType != "" && package NotEndsWith .war && Package NotEndsWith .jar
. Nilai yang diizinkan: auto
(Deteksi otomatis), zipDeploy
(Zip Deploy), runFromPackage
(Zip Deploy dengan Run From Package). Nilai default: auto
.
Memilih metode penyebaran untuk aplikasi. Aplikasi Konsumsi Linux tidak mendukung configuration.s ini
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 mendefinisikan variabel output berikut, yang dapat Anda konsumsi dalam langkah-langkah hilir, pekerjaan, dan tahapan.
AppServiceApplicationUrl
URL aplikasi dari Aplikasi Fungsi Azure yang dipilih.
Keterangan
Tugas Penyebaran Fungsi Azure digunakan untuk memperbarui Azure Functions untuk menyebarkan Functions ke Azure. Tugas ini bekerja pada agen Azure Pipelines lintas platform yang menjalankan Windows, Linux atau Mac dan menggunakan teknologi penyebaran yang mendasari RunFromPackage, Zip Deploy, dan REST API Kudu.
Tugas ini berfungsi untuk bahasa Azure Functions didukung.
Prasyarat untuk tugas
Prasyarat berikut perlu disiapkan di komputer target agar tugas berfungsi dengan baik.
Azure Function
Tugas ini digunakan untuk menyebarkan proyek Azure Functions ke Azure Function yang sudah ada. Aplikasi Azure Function harus ada sebelum menjalankan tugas. Aplikasi Fungsi Azure dapat dibuat dari portal Azure. Atau, tugas Azure PowerShell dapat digunakan untuk menjalankan skrip AzureRM PowerShell untuk menyediakan dan mengonfigurasi aplikasi Azure Function.
Tugas ini dapat digunakan untuk menyebarkan Azure Functions (Windows/Linux).
Azure Subscription
Untuk menyebarkan ke Azure, langganan Azure harus ditautkan ke Azure Pipelines menggunakan tab Layanan di bagian Administrasi Akun. Tambahkan langganan Azure untuk digunakan dalam definisi Build atau Release Management dengan membuka layar Administrasi Akun (ikon roda gigi di kanan atas layar) lalu klik Tab Layanan.
Create titik akhir layanan ARM dan gunakan jenis titik akhir Azure Resource Manager. Untuk detail selengkapnya, ikuti langkah-langkah yang tercantum dalam tautan di sini.
Tugas ini tidak berfungsi dengan titik akhir layanan Azure Classic dan tidak akan mencantumkan koneksi ini dalam parameter dalam tugas.
Metode penyebaran
Beberapa metode penyebaran tersedia dalam tugas ini.
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 ini menggunakan teknologi penyebaran yang sesuai. Teknologi penyebaran yang digunakan oleh tugas adalah sebagai berikut:
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.
REST API Kudu
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.
Menjalankan 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 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 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.
Azure Function 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:
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 di 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 Application Insights?
Saat Anda menyebarkan ke App Service, jika Anda memiliki Application Insights 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 Application Insights dalam keadaan aman. Langkah ini diperlukan karena WebJob berkelanjutan Application Insights diinstal ke dalam 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.
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@2
displayName: Azure Function App Deploy
inputs:
azureSubscription: $(azureSubscription)
appName: samplefunctionapp
appType: functionApp
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.
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 |