Aracılığıyla paylaş


AzureFunctionApp@2 - v2'yi dağıtma görevini Azure İşlevleri

Bir işlev uygulamasını .NET, Python, JavaScript, PowerShell, Java tabanlı web uygulamalarıyla güncelleştirin.

Syntax

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

Girişler

connectedServiceNameARM - Azure Resource Manager bağlantısı
Giriş diğer adı: azureSubscription. string. Gereklidir.

Dağıtım için Azure Resource Manager aboneliğini seçin.


appType - Uygulama türü
string. Gereklidir. İzin verilen değerler: functionApp (Windows'ta İşlev Uygulaması), functionAppLinux (Linux'ta İşlev Uygulaması).

Dağıtım için Azure İşlev Uygulaması türünü seçin.


appName - Azure İşlevleri Uygulama adı
string. Gereklidir.

Mevcut bir Azure İşlevleri Uygulamasının adını belirtin. Listelenen İşlev Uygulamaları, seçilen uygulama türüne göre belirlenir.


deployToSlotOrASE - Yuvaya veya App Service Ortamı dağıtma
boolean. İsteğe bağlı. when appType != ""kullanın. Varsayılan değer: false.

Mevcut bir dağıtım yuvasına veya Azure App Service Ortamına dağıtır. Her iki hedef için de görevin bir Kaynak grubu adı gerekir.

Dağıtım hedefi bir yuvaysa, varsayılan olarak üretim yuvasına ayarlanır. Diğer tüm mevcut yuva adları da sağlanabilir.

Dağıtım hedefi bir Azure App Service Ortamı ise yuva adını üretim olarak bırakın ve Kaynak grubu adını belirtin.


resourceGroupName - Kaynak grubu
string. olduğunda deployToSlotOrASE = truegereklidir.

Dağıtım hedefi bir dağıtım yuvası veya App Service Ortamı olduğunda Kaynak grubu adı gereklidir.

Yukarıda belirtilen Azure App Service içeren Azure Kaynak grubunu girer veya seçer.


slotName - Yuvası
string. olduğunda deployToSlotOrASE = truegereklidir. Varsayılan değer: production.

Üretim yuvası hariç mevcut bir yuvayı girer veya seçer.


slotName - Yuvası
string. olduğunda deployToSlotOrASE = truegereklidir. Varsayılan değer: production.

Üretim yuvası dışında bir Yuva girin veya Seçin.


package - Paket veya klasör
string. Gereklidir. Varsayılan değer: $(System.DefaultWorkingDirectory)/**/*.zip.

MSBuild veya sıkıştırılmış zip dosyası tarafından oluşturulan App Service içeriği içeren paket veya klasörün dosya yolu. Değişkenler ( Derleme | Sürümü) ve joker karakterler desteklenir. Örneğin, $(System.DefaultWorkingDirectory)/**/*.zip.


runtimeStack - Çalışma zamanı yığını
string. İsteğe bağlı. when appType = functionAppLinuxkullanın. İzin verilen değerler: 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, PYTHON|3.8PYTHON|3.9PYTHON|3.11NODE|18NODE|20PYTHON|3.10.

İşlev uygulamanızın üzerinde çalıştırılacağı çerçeveyi ve sürümü belirtin. Desteklenen çalışma zamanı sürümlerinden herhangi birini kullanabilirsiniz. gibi DOCKER|microsoft/azure-functions-* eski değerler kullanım dışıdır. Yeni değerler, görev yardımcı açılan listesinde listelenir. Desteklenen çalışma zamanı sürümlerinde bir çerçevenin daha yeni bir sürümü varsa, listede olmasa bile belirtebilirsiniz.


runtimeStack - Çalışma zamanı yığını
string. İsteğe bağlı. when appType = functionAppLinuxkullanın. İzin verilen değerler: 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 (JAVA|8 (functionapp v2/v3/v4)), JAVA|11 (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 (functionapp v4)), NODE|18PYTHON|3.6 (PYTHON|3.6 (functionapp v2/v3)), PYTHON|3.7 (PYTHON|3.7 (functionapp v2/v3/v4)), PYTHON|3.8 (PYTHON|3.8 (functionapp v3/v4)), PYTHON|3.9 (PYTHON|3.9 (functionapp v3/v4)), PYTHON|3.10 (PYTHON|3.10 (functionapp v3/v4)).

İşlev uygulamanızın üzerinde çalıştırılacağı çerçeveyi ve sürümü belirtin. Desteklenen çalışma zamanı sürümlerinden herhangi birini kullanabilirsiniz. gibi DOCKER|microsoft/azure-functions-* eski değerler kullanım dışıdır. Yeni değerler, görev yardımcı açılan listesinde listelenir. Desteklenen çalışma zamanı sürümlerinde bir çerçevenin daha yeni bir sürümü varsa, listede olmasa bile belirtebilirsiniz.


appSettings - Uygulama ayarları
string.

Söz dizimini -key value kullanarak uygulama ayarlarını girin (örneğin: -Port 5000-RequestTimeout 5000-WEBSITE_TIME_ZONE). Boşluk içeren değerleri çift tırnak içine alın (örneğin: "Eastern Standard Time").


deploymentMethod - Dağıtım yöntemi
string. olduğunda appType != "" && package NotEndsWith .war && Package NotEndsWith .jargereklidir. İzin verilen değerler: auto (Otomatik algılama), zipDeploy (Zip Dağıtımı), runFromPackage (Paketten Çalıştır ile Zip Dağıtımı). Varsayılan değer: auto.

Uygulamanın dağıtım yöntemini belirtir. Linux Tüketim uygulamaları bu yapılandırmayı desteklemez.


deploymentMethod - Dağıtım yöntemi
string. olduğunda appType != "" && package NotEndsWith .war && Package NotEndsWith .jargereklidir. İzin verilen değerler: auto (Otomatik algılama), zipDeploy (Zip Dağıtımı), runFromPackage (Paketten Çalıştır ile Zip Dağıtımı). Varsayılan değer: auto.

Uygulama için dağıtım yöntemini seçer. Linux Tüketim uygulamaları bu yapılandırmayı desteklemez.


Görev denetim seçenekleri

Tüm görevlerde görev girişlerine ek olarak denetim seçenekleri vardır. Daha fazla bilgi için bkz . Denetim seçenekleri ve ortak görev özellikleri.

Çıkış değişkenleri

Bu görev aşağı akış adımlarında, işlerde ve aşamalarda kullanabileceğiniz aşağıdaki çıkış değişkenlerini tanımlar.

AppServiceApplicationUrl
Seçili Azure İşlev Uygulamasının uygulama URL'si.

Açıklamalar

Azure İşlev Dağıtımı görevi, İşlevleri Azure'a dağıtmak üzere Azure İşlevleri güncelleştirmek için kullanılır. Görev, Windows, Linux veya Mac çalıştıran platformlar arası Azure Pipelines aracılarında çalışır ve RunFromPackage, Zip Deploy ve Kudu REST API'lerinin temel dağıtım teknolojilerini kullanır.

Görev, desteklenen Azure İşlevleri diller için çalışır.

Görev için önkoşullar

Görevin düzgün çalışması için hedef makinelerde aşağıdaki önkoşulların ayarlanması gerekir.

Azure İşlevi

Görev, bir Azure İşlevleri projesini var olan bir Azure İşlevine dağıtmak için kullanılır. Görevi çalıştırmadan önce Azure İşlevi uygulamasının mevcut olması gerekir. Azure İşlev Uygulaması Azure portal oluşturulabilir. Alternatif olarak, Azure PowerShell görevi Azure İşlevi uygulamasını sağlamak ve yapılandırmak için AzureRM PowerShell betiklerini çalıştırmak için kullanılabilir.

Görev, Azure İşlevleri (Windows/Linux) dağıtmak için kullanılabilir.

Azure Aboneliği

Azure'a dağıtmak için Bir Azure aboneliğinin Hesap Yönetimi bölümündeki Hizmetler sekmesi kullanılarak Azure Pipelines'a bağlanması gerekir. Hesap Yönetimi ekranını (ekranın sağ üst köşesindeki dişli simgesi) açıp Hizmetler Sekmesine tıklayarak Derleme veya Release Management tanımında kullanılacak Azure aboneliğini ekleyin.

ARM hizmet uç noktasını İçerik Oluşturucu ve Azure Resource Manager uç nokta türünü kullanın. Diğer ayrıntılar için buradaki bağlantıda listelenen adımları izleyin.

Görev, Klasik Azure hizmet uç noktasıyla çalışmaz ve bu bağlantıları görevdeki parametrelerde listelemez.

Dağıtım yöntemleri

Bu görevde çeşitli dağıtım yöntemleri kullanılabilir.

Tasarımcı görevinde paket tabanlı dağıtım seçeneğini değiştirmek için Ek Dağıtım Seçenekleri'ni genişletin ve Dağıtım Yöntemini Seç'i etkinleştirin.

görev, Azure App Service ve Azure Pipelines aracısının türüne bağlı olarak uygun bir dağıtım teknolojisi kullanır. Görevler tarafından kullanılan dağıtım teknolojileri şunlardır:

Varsayılan olarak, görev giriş paketine, App Service türüne ve aracı işletim sistemine göre uygun dağıtım teknolojisini seçmeye çalışır.

  • Dağıtım sonrası betik sağlanmışsa Zip Deploy kullanın.
  • App Service türü Linux'ta Web Uygulaması ise Zip Deploy kullanın.
  • Bir .war dosyası sağlanmışsa War Deploy kullanın.
  • .jar dosyası sağlanmışsa, Zip'ten Çalıştır'ı kullanın.
  • Diğer tüm görevler için Paketten Çalıştır 'ı kullanın (Zip Deploy aracılığıyla).

Windows olmayan bir aracıda (herhangi bir App Service türü için), görev web uygulamasını dağıtmak için Kudu REST API'sine dayanır.

Kudu REST API

Kudu REST API'sinin hem Windows hem de Linux otomasyon aracılarında çalışması için hedef, Windows üzerinde bir Web Uygulaması, Linux üzerinde Web Uygulaması (yerleşik kaynak) veya bir işlev uygulamasıdır. Görev, dosyaları Azure App Service kopyalamak için Kudu kullanır.

Zip Deploy

Zip Deploy, seçilen paket veya klasörden bir .zip dağıtım paketi oluşturur. Ardından dosya içeriğini Azure'daki App Service name işlevi uygulamasının wwwroot klasörüne dağıtır. Bu seçenek wwwroot klasöründeki tüm içeriğin üzerine yazar. Daha fazla bilgi için bkz. Azure İşlevleri için zip dağıtımı.

Paketten çalıştırma

Paketten Çalıştır, Zip Deploy ile aynı dağıtım paketini oluşturur. İşlevler çalışma zamanı, wwwroot klasörüne dosya dağıtmak yerine paketin tamamını bağlar. Bu seçeneği kullandığınızda, wwwroot klasöründeki dosyalar salt okunur hale gelir. Daha fazla bilgi için bkz. Azure İşlevlerinizi paket dosyasından çalıştırma.

Sorun giderme

Hata: Azure için erişim belirteci getirilemedi. Kullanılan Hizmet Sorumlusunun geçerli olduğunu ve süresinin dolmadığını doğrulayın.

Görev, Azure ile kimlik doğrulaması yapmak için hizmet bağlantısındaki hizmet sorumlusunu kullanır. Hizmet sorumlusunun süresi dolduysa veya App Service izinleri yoksa, görev bu hatayla başarısız olur. Kullanılan hizmet sorumlusunun geçerliliğini ve uygulama kaydında mevcut olduğunu doğrulayın. Daha fazla bilgi için bkz. Azure abonelik kaynaklarınıza erişimi yönetmek için rol tabanlı erişim denetimini kullanma. Bu blog gönderisi ayrıca hizmet sorumlusu kimlik doğrulaması kullanma hakkında daha fazla bilgi içerir.

SSL hatası

App Service bir sertifika kullanmak istiyorsanız, sertifikanın güvenilen bir sertifika yetkilisi tarafından imzalanması gerekir. Web uygulamanız sertifika doğrulama hataları veriyorsa, büyük olasılıkla otomatik olarak imzalanan bir sertifika kullanıyorsunuz. Hatayı çözmek için derleme veya yayın işlem hattındaki değere true adlı VSTS_ARM_REST_IGNORE_SSL_ERRORS bir değişken ayarlayın.

Sürüm uzun süre kilitleniyor ve sonra başarısız oluyor

Bu sorun, App Service planınızda yetersiz kapasitenin sonucu olabilir. Bu sorunu çözmek için kullanılabilir CPU, RAM ve disk alanını artırmak için App Service örneğinin ölçeğini artırabilir veya farklı bir App Service planıyla deneyebilirsiniz.

5xx hata kodları

5xx hatası görüyorsanız Azure hizmetinizin durumunu denetleyin.

Azure İşlevi aniden çalışmayı durdurdu

Azure İşlevleri, son dağıtımın üzerinden bir yıldan fazla zaman geçtiyse aniden çalışmayı durdurabilir. "deploymentMethod" içinde "RunFromPackage" ile dağıtım yaparsanız, son kullanma tarihi 1 yıl olan bir SAS oluşturulur ve uygulama yapılandırmasında "WEBSITE_RUN_FROM_PACKAGE" değeri olarak ayarlanır. Azure İşlevleri işlev yürütmesi için paket dosyasına başvurmak için bu SAS'yi kullanır, bu nedenle SAS'nin süresi dolduysa işlev yürütülmeyecektir. Bu sorunu çözmek için yeniden dağıtarak son kullanma tarihi bir yıl olan bir SAS oluşturun.

Hata: Belirtilen düzene sahip bir paket bulunamadı

Görevde belirtilen paketin derlemede veya önceki bir aşamada yapıt olarak yayımlanıp yayımlanmadığını ve geçerli işe indirilip indirilmediğini denetleyin.

Hata: Zip dağıtımı kullanarak yayımlama seçeneği msBuild paket türü için desteklenmiyor

MSBuild görevi (varsayılan bağımsız değişkenlerle) aracılığıyla oluşturulan web paketleri, yalnızca Web Dağıtımı tarafından doğru dağıtılabilir iç içe bir klasör yapısına sahiptir. Bu paketleri dağıtmak için zip'e yayımla dağıtım seçeneği kullanılamaz. Paketleme yapısını dönüştürmek için şu adımları uygulayın:

  1. Çözüm oluştur görevinde , MSBuild Bağımsız Değişkenlerini olarak /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:publishUrl="$(System.DefaultWorkingDirectory)\\WebAppContent"değiştirin:

    Derleme çözümü değerlerini gösteren ekran görüntüsü.

  2. Arşiv görevi ekleyin ve değerleri aşağıdaki gibi değiştirin:

    1. Kök klasörü veya dosyayı arşiv olarak$(System.DefaultWorkingDirectory)\\WebAppContentdeğiştirin.

    2. Arşiv yollarına önceden eklenen kök klasör adı onay kutusunu temizleyin:

      Arşiv değerlerini gösteren ekran görüntüsü.

Windows'ta işlev uygulaması dağıtımı başarılı olur ancak uygulama çalışmaz

Uygulamanızda bir web.config dosyası yoksa bu sorun oluşabilir. Kaynağınıza bir web.config dosyası ekleyebilir veya görevin Uygulama ve Yapılandırma Ayarları'nı kullanarak otomatik olarak bir dosya oluşturabilirsiniz.

  1. Görevi seçin ve Python, Node.js, Go ve Java uygulamaları için web.config parametreleri oluştur'a gidin:

    web.config parametreleri oluştur bölümünü gösteren ekran görüntüsü.

  2. Parametreleri düzenlemek için Python, Node.js, Go ve Java uygulamaları için web.config parametreleri oluştur'un altındaki Diğer düğmesini (...) seçin:

    web.config oluştur parametrelerini gösteren ekran görüntüsü.

  3. Uygulama çerçevesi listesinden uygulama türünüzü seçin.

  4. Tamam’ı seçin. Bunu yaptığınızda, web.config dosyasını oluşturmak için gereken web.config parametreleri doldurulur.

SSS

Hizmet bağlantımı nasıl yapılandırmalıyım?

Bu görev bir Azure Resource Manager hizmet bağlantısı gerektirir.

Application Insights ile web işi dağıtımlarını nasıl yapılandırmalıyım?

Bir App Service dağıtırken Application Insights'ı yapılandırdıysanız ve etkinleştirdiyseniz Remove additional files at destinationöğesini de etkinleştirmeniz Exclude files from the App_Data foldergerekir. Bu seçeneğin etkinleştirilmesi, Application Insights uzantısının güvenli durumda kalmasını sağlar. Application Insights sürekli Web İşi App_Data klasörüne yüklendiğinden bu adım gereklidir.

aracımı App Service dağıtırken bir ara sunucu arkasındaysa nasıl yapılandırmalıyım?

Şirket içinde barındırılan aracınız bir web ara sunucusu gerektiriyorsa, aracıyı yapılandırma sırasında ara sunucu hakkında bilgilendirebilirsiniz. Bunun yapılması, aracınızın Azure Pipelines'a bağlanmasına veya ara sunucu üzerinden Azure DevOps Server olanak tanır. Web ara sunucusunun arkasında şirket içinde barındırılan aracı çalıştırma hakkında daha fazla bilgi edinin.

Azure Resource Manager hizmet bağlantısı ve Microsoft tarafından barındırılan aracı kullanarak iç App Service Ortamı dağıtamıyorum

Tasarım gereği, Microsoft tarafından barındırılan bir aracı App Service Ortamı ile çalışmaz. Bunun yerine, App Service Ortamı ile aynı sanal ağda bulunan bir sanal makinede özel aracı yapılandırmanız gerekir. Ayrıca, kaynaklar arasında iletişimi etkinleştirmek için özel bir DNS bölgesi ayarlayın.

Örnekler

Aşağıda, Windows üzerinde Azure işlevlerini dağıtan örnek bir YAML kod parçacığı verilmiştir:


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

Linux'ta bir işlev dağıtmak için parametresini appType ekleyin ve olarak appType: functionAppLinuxayarlayın. Bir değer belirtmezseniz, functionApp varsayılan değerdir.

Dağıtım yöntemini Zip Deploy olarak açıkça belirtmek için parametresini deploymentMethod: zipDeployekleyin. Bu parametre için desteklenen bir diğer değer de şeklindedir runFromPackage. Bir değer belirtmezseniz, auto varsayılan değerdir.

CI/CD işlem hattı oluşturmayı gösteren bir kılavuz için bkz. Java'yı Azure İşlevleri derleme ve dağıtma.

Gereksinimler

Gereksinim Açıklama
İşlem hattı türleri YAML, Klasik derleme, Klasik sürüm
Üzerinde çalıştırılır Agent, DeploymentGroup
Talep Hiçbiri
Özellikler Bu görev, işteki sonraki görevler için herhangi bir talebi karşılamaz.
Komut kısıtlamaları Herhangi biri
Ayarlanabilir değişkenler Herhangi biri
Aracı sürümü 2.104.1 veya üzeri
Görev kategorisi Dağıtma