Bagikan melalui


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.0DOTNET-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.9PYTHON|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:

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

      Cuplikan layar yang memperlihatkan nilai 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.

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

    Cuplikan layar yang memperlihatkan bagian Buat parameter web.config.

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

    Cuplikan layar yang memperlihatkan parameter Buat web.config.

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